summaryrefslogtreecommitdiffstats
path: root/vold/logwrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'vold/logwrapper.c')
-rw-r--r--vold/logwrapper.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/vold/logwrapper.c b/vold/logwrapper.c
index 2900f2e..46f6ed3 100644
--- a/vold/logwrapper.c
+++ b/vold/logwrapper.c
@@ -100,7 +100,7 @@ void child(int argc, char* argv[]) {
}
}
-int logwrap(int argc, char* argv[], pid_t *childPid)
+int logwrap(int argc, char* argv[], pid_t *childPid, int background)
{
pid_t pid;
@@ -138,6 +138,25 @@ int logwrap(int argc, char* argv[], pid_t *childPid)
dup2(child_ptty, 2);
close(child_ptty);
+ if (background) {
+ int fd = open("/dev/cpuctl/bg_non_interactive/tasks", O_WRONLY);
+
+ if (fd >=0 ) {
+ char text[64];
+
+ sprintf(text, "%d", getpid());
+ if (write(fd, text, strlen(text)) < 0) {
+ LOG(LOG_WARN, "logwrapper",
+ "Unable to background process (%s)", strerror(errno));
+ close(fd);
+ }
+ close(fd);
+ } else {
+ LOG(LOG_WARN, "logwrapper",
+ "Unable to background process (%s)", strerror(errno));
+ }
+ }
+
child(argc, argv);
} else {
return parent(argv[0], parent_ptty);