diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2015-12-19 14:29:21 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-12-19 19:49:35 +0100 |
commit | 2140f1ff68507c4782ebd3a4555b5990286096bf (patch) | |
tree | 29286f288dc5d45f62af84e76b6107d528f5d67a /wifiloader | |
parent | b8400a23f559563a5b652dfc88bd951cd6a2e7ae (diff) | |
download | android_hardware_samsung-2140f1ff68507c4782ebd3a4555b5990286096bf.tar.gz android_hardware_samsung-2140f1ff68507c4782ebd3a4555b5990286096bf.tar.bz2 android_hardware_samsung-2140f1ff68507c4782ebd3a4555b5990286096bf.zip |
Add wifiloader
This is needed on some Samsung device to load the wifi module. Before
this was solved using a bash script which does:
cat /proc/deferred_initcalls
but the new sepolicy rules don't allow init execute bash scripts. For
this we need a new tool which does the job and we can create sepolicy
rule for it.
Change-Id: I137cfaaff74955ad431bc09d74b0c970618dc3bf
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'wifiloader')
-rw-r--r-- | wifiloader/Android.mk | 17 | ||||
-rw-r--r-- | wifiloader/wifiloader.c | 49 |
2 files changed, 66 insertions, 0 deletions
diff --git a/wifiloader/Android.mk b/wifiloader/Android.mk new file mode 100644 index 0000000..15c9dc2 --- /dev/null +++ b/wifiloader/Android.mk @@ -0,0 +1,17 @@ +ifeq ($(BOARD_HAVE_SAMSUNG_WIFI),true) + +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + wifiloader.c + +LOCAL_SHARED_LIBRARIES := \ + liblog libutils + +LOCAL_MODULE := wifiloader +LOCAL_MODULE_TAGS := optional + +include $(BUILD_EXECUTABLE) + +endif diff --git a/wifiloader/wifiloader.c b/wifiloader/wifiloader.c new file mode 100644 index 0000000..54afdaf --- /dev/null +++ b/wifiloader/wifiloader.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2015 Andreas Schneider <asn@cryptomilk.org> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "wifiloader" +#define LOG_NDEBUG 0 + +#include <errno.h> +#include <stdio.h> +#include <string.h> +#include <cutils/log.h> + +#define DEFERRED_INITCALLS "/proc/deferred_initcalls" + +int main(void) +{ + char buf[8] = { '\0' }; + FILE *fp; + size_t r; + + ALOGD("Trigger initcall of deferred modules\n"); + + fp = fopen(DEFERRED_INITCALLS, "r"); + if (fp == NULL) { + ALOGE("Failed to open %s - error: %s\n", + DEFERRED_INITCALLS, + strerror(errno)); + return -errno; + } + + r = fread(buf, sizeof(buf), 1, fp); + fclose(fp); + + ALOGV("%s=%s\n", DEFERRED_INITCALLS, buf); + + return 0; +} |