summaryrefslogtreecommitdiffstats
path: root/wifiloader
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2015-12-19 14:29:21 +0100
committerAndreas Schneider <asn@cryptomilk.org>2015-12-19 19:49:35 +0100
commit2140f1ff68507c4782ebd3a4555b5990286096bf (patch)
tree29286f288dc5d45f62af84e76b6107d528f5d67a /wifiloader
parentb8400a23f559563a5b652dfc88bd951cd6a2e7ae (diff)
downloadandroid_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.mk17
-rw-r--r--wifiloader/wifiloader.c49
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;
+}