Merge change 4051 into donut

* changes:
  vold: Give logwrapper the ability to put jobs into the background sched group.
This commit is contained in:
Android (Google) Code Review 2009-06-12 08:36:57 -07:00
commit 47c1d7344a
5 changed files with 26 additions and 7 deletions

View file

@ -44,7 +44,7 @@ int format_partition(blkdev_t *part, char *type)
args[3] = "-O android";
args[4] = devpath;
args[5] = NULL;
rc = logwrap(5, args);
rc = logwrap(5, args, 1);
} else {
char *args[7];
args[0] = MKE2FS_PATH;
@ -54,7 +54,7 @@ int format_partition(blkdev_t *part, char *type)
args[4] = "-v";
args[5] = devpath;
args[6] = NULL;
rc = logwrap(6, args);
rc = logwrap(6, args, 1);
}
free(devpath);

View file

@ -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);

View file

@ -19,5 +19,5 @@
#define _LOGWRAPPER_H
#include <stdlib.h>
int logwrap(int argc, char* argv[]);
int logwrap(int argc, char* argv[], int background);
#endif

View file

@ -107,7 +107,7 @@ int ext_check(blkdev_t *dev)
args[3] = devpath;
args[4] = NULL;
int rc = logwrap(4, args);
int rc = logwrap(4, args, 1);
if (rc == 0) {
LOG_VOL("filesystem '%s' had no errors", devpath);

View file

@ -62,13 +62,13 @@ int vfat_check(blkdev_t *dev)
args[3] = "-p";
args[4] = blkdev_get_devpath(dev);
args[5] = NULL;
rc = logwrap(5, args);
rc = logwrap(5, args, 1);
free(args[4]);
} else {
args[2] = "-n";
args[3] = blkdev_get_devpath(dev);
args[4] = NULL;
rc = logwrap(4, args);
rc = logwrap(4, args, 1);
free(args[3]);
}