Loading init/init.c +8 −39 Original line number Diff line number Diff line Loading @@ -455,38 +455,6 @@ static void import_kernel_nv(char *name, int in_qemu) } } static void import_kernel_cmdline(int in_qemu) { char cmdline[1024]; char *ptr; int fd; fd = open("/proc/cmdline", O_RDONLY); if (fd >= 0) { int n = read(fd, cmdline, 1023); if (n < 0) n = 0; /* get rid of trailing newline, it happens */ if (n > 0 && cmdline[n-1] == '\n') n--; cmdline[n] = 0; close(fd); } else { cmdline[0] = 0; } ptr = cmdline; while (ptr && *ptr) { char *x = strchr(ptr, ' '); if (x != 0) *x++ = 0; import_kernel_nv(ptr, in_qemu); ptr = x; } /* don't expose the raw commandline to nonpriv processes */ chmod("/proc/cmdline", 0440); } static struct command *get_first_command(struct action *act) { struct listnode *node; Loading Loading @@ -609,7 +577,7 @@ static int set_init_properties_action(int nargs, char **args) char tmp[PROP_VALUE_MAX]; if (qemu[0]) import_kernel_cmdline(1); import_kernel_cmdline(1, import_kernel_nv); if (!strcmp(bootmode,"factory")) property_set("ro.factorytest", "1"); Loading Loading @@ -734,8 +702,9 @@ int main(int argc, char **argv) init_parse_config_file("/init.rc"); /* pull the kernel commandline and ramdisk properties file in */ import_kernel_cmdline(0); import_kernel_cmdline(0, import_kernel_nv); /* don't expose the raw commandline to nonpriv processes */ chmod("/proc/cmdline", 0440); get_hardware_name(hardware, &revision); snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware); init_parse_config_file(tmp); Loading init/ueventd.c +19 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,20 @@ static char hardware[32]; static unsigned revision = 0; static void import_kernel_nv(char *name, int in_qemu) { if (*name != '\0') { char *value = strchr(name, '='); if (value != NULL) { *value++ = 0; if (!strcmp(name,"androidboot.hardware")) { strlcpy(hardware, value, sizeof(hardware)); } } } } int ueventd_main(int argc, char **argv) { struct pollfd ufd; Loading @@ -51,6 +65,11 @@ int ueventd_main(int argc, char **argv) INFO("starting ueventd\n"); /* Respect hardware passed in through the kernel cmd line. Here we will look * for androidboot.hardware param in kernel cmdline, and save its value in * hardware[]. */ import_kernel_cmdline(0, import_kernel_nv); get_hardware_name(hardware, &revision); ueventd_parse_config_file("/ueventd.rc"); Loading init/util.c +30 −0 Original line number Diff line number Diff line Loading @@ -399,3 +399,33 @@ void get_hardware_name(char *hardware, unsigned int *revision) } } } void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu)) { char cmdline[1024]; char *ptr; int fd; fd = open("/proc/cmdline", O_RDONLY); if (fd >= 0) { int n = read(fd, cmdline, 1023); if (n < 0) n = 0; /* get rid of trailing newline, it happens */ if (n > 0 && cmdline[n-1] == '\n') n--; cmdline[n] = 0; close(fd); } else { cmdline[0] = 0; } ptr = cmdline; while (ptr && *ptr) { char *x = strchr(ptr, ' '); if (x != 0) *x++ = 0; import_kernel_nv(ptr, in_qemu); ptr = x; } } init/util.h +1 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,5 @@ void remove_link(const char *oldpath, const char *newpath); int wait_for_file(const char *filename, int timeout); void open_devnull_stdio(void); void get_hardware_name(char *hardware, unsigned int *revision); void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu)); #endif Loading
init/init.c +8 −39 Original line number Diff line number Diff line Loading @@ -455,38 +455,6 @@ static void import_kernel_nv(char *name, int in_qemu) } } static void import_kernel_cmdline(int in_qemu) { char cmdline[1024]; char *ptr; int fd; fd = open("/proc/cmdline", O_RDONLY); if (fd >= 0) { int n = read(fd, cmdline, 1023); if (n < 0) n = 0; /* get rid of trailing newline, it happens */ if (n > 0 && cmdline[n-1] == '\n') n--; cmdline[n] = 0; close(fd); } else { cmdline[0] = 0; } ptr = cmdline; while (ptr && *ptr) { char *x = strchr(ptr, ' '); if (x != 0) *x++ = 0; import_kernel_nv(ptr, in_qemu); ptr = x; } /* don't expose the raw commandline to nonpriv processes */ chmod("/proc/cmdline", 0440); } static struct command *get_first_command(struct action *act) { struct listnode *node; Loading Loading @@ -609,7 +577,7 @@ static int set_init_properties_action(int nargs, char **args) char tmp[PROP_VALUE_MAX]; if (qemu[0]) import_kernel_cmdline(1); import_kernel_cmdline(1, import_kernel_nv); if (!strcmp(bootmode,"factory")) property_set("ro.factorytest", "1"); Loading Loading @@ -734,8 +702,9 @@ int main(int argc, char **argv) init_parse_config_file("/init.rc"); /* pull the kernel commandline and ramdisk properties file in */ import_kernel_cmdline(0); import_kernel_cmdline(0, import_kernel_nv); /* don't expose the raw commandline to nonpriv processes */ chmod("/proc/cmdline", 0440); get_hardware_name(hardware, &revision); snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware); init_parse_config_file(tmp); Loading
init/ueventd.c +19 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,20 @@ static char hardware[32]; static unsigned revision = 0; static void import_kernel_nv(char *name, int in_qemu) { if (*name != '\0') { char *value = strchr(name, '='); if (value != NULL) { *value++ = 0; if (!strcmp(name,"androidboot.hardware")) { strlcpy(hardware, value, sizeof(hardware)); } } } } int ueventd_main(int argc, char **argv) { struct pollfd ufd; Loading @@ -51,6 +65,11 @@ int ueventd_main(int argc, char **argv) INFO("starting ueventd\n"); /* Respect hardware passed in through the kernel cmd line. Here we will look * for androidboot.hardware param in kernel cmdline, and save its value in * hardware[]. */ import_kernel_cmdline(0, import_kernel_nv); get_hardware_name(hardware, &revision); ueventd_parse_config_file("/ueventd.rc"); Loading
init/util.c +30 −0 Original line number Diff line number Diff line Loading @@ -399,3 +399,33 @@ void get_hardware_name(char *hardware, unsigned int *revision) } } } void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu)) { char cmdline[1024]; char *ptr; int fd; fd = open("/proc/cmdline", O_RDONLY); if (fd >= 0) { int n = read(fd, cmdline, 1023); if (n < 0) n = 0; /* get rid of trailing newline, it happens */ if (n > 0 && cmdline[n-1] == '\n') n--; cmdline[n] = 0; close(fd); } else { cmdline[0] = 0; } ptr = cmdline; while (ptr && *ptr) { char *x = strchr(ptr, ' '); if (x != 0) *x++ = 0; import_kernel_nv(ptr, in_qemu); ptr = x; } }
init/util.h +1 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,5 @@ void remove_link(const char *oldpath, const char *newpath); int wait_for_file(const char *filename, int timeout); void open_devnull_stdio(void); void get_hardware_name(char *hardware, unsigned int *revision); void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu)); #endif