Loading init/builtins.c +17 −4 Original line number Diff line number Diff line Loading @@ -862,11 +862,24 @@ int do_setsebool(int nargs, char **args) { } int do_loglevel(int nargs, char **args) { if (nargs == 2) { klog_set_level(atoi(args[1])); return 0; int log_level; char log_level_str[PROP_VALUE_MAX] = ""; if (nargs != 2) { ERROR("loglevel: missing argument\n"); return -EINVAL; } return -1; if (expand_props(log_level_str, args[1], sizeof(log_level_str))) { ERROR("loglevel: cannot expand '%s'\n", args[1]); return -EINVAL; } log_level = atoi(log_level_str); if (log_level < KLOG_ERROR_LEVEL || log_level > KLOG_DEBUG_LEVEL) { ERROR("loglevel: invalid log level'%d'\n", log_level); return -EINVAL; } klog_set_level(log_level); return 0; } int do_load_persist_props(int nargs, char **args) { Loading init/init.c +13 −2 Original line number Diff line number Diff line Loading @@ -528,7 +528,8 @@ static int is_last_command(struct action *act, struct command *cmd) void execute_one_command(void) { int ret; int ret, i; char cmd_str[256] = ""; if (!cur_action || !cur_command || is_last_command(cur_action, cur_command)) { cur_action = action_remove_queue_head(); Loading @@ -545,7 +546,17 @@ void execute_one_command(void) return; ret = cur_command->func(cur_command->nargs, cur_command->args); INFO("command '%s' r=%d\n", cur_command->args[0], ret); if (klog_get_level() >= KLOG_INFO_LEVEL) { for (i = 0; i < cur_command->nargs; i++) { strlcat(cmd_str, cur_command->args[i], sizeof(cmd_str)); if (i < cur_command->nargs - 1) { strlcat(cmd_str, " ", sizeof(cmd_str)); } } INFO("command '%s' action=%s status=%d (%s:%d)\n", cmd_str, cur_action ? cur_action->name : "", ret, cur_command->filename, cur_command->line); } } static int wait_for_coldboot_done_action(int nargs, char **args) Loading init/init.h +6 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ struct command struct listnode clist; int (*func)(int nargs, char **args); int line; const char *filename; int nargs; char *args[1]; }; Loading init/init_parser.c +3 −0 Original line number Diff line number Diff line Loading @@ -584,6 +584,7 @@ void queue_builtin_action(int (*func)(int nargs, char **args), char *name) cmd = calloc(1, sizeof(*cmd)); cmd->func = func; cmd->args[0] = name; cmd->nargs = 1; list_add_tail(&act->commands, &cmd->clist); list_add_tail(&action_list, &act->alist); Loading Loading @@ -870,6 +871,8 @@ static void parse_line_action(struct parse_state* state, int nargs, char **args) } cmd = malloc(sizeof(*cmd) + sizeof(char*) * nargs); cmd->func = kw_func(kw); cmd->line = state->line; cmd->filename = state->filename; cmd->nargs = nargs; memcpy(cmd->args, args, sizeof(char*) * nargs); list_add_tail(&act->commands, &cmd->clist); Loading rootdir/init.rc +3 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,9 @@ on boot on nonencrypted class_start late_start on property:sys.init_log_level=* loglevel ${sys.init_log_level} on charger class_start charger Loading Loading
init/builtins.c +17 −4 Original line number Diff line number Diff line Loading @@ -862,11 +862,24 @@ int do_setsebool(int nargs, char **args) { } int do_loglevel(int nargs, char **args) { if (nargs == 2) { klog_set_level(atoi(args[1])); return 0; int log_level; char log_level_str[PROP_VALUE_MAX] = ""; if (nargs != 2) { ERROR("loglevel: missing argument\n"); return -EINVAL; } return -1; if (expand_props(log_level_str, args[1], sizeof(log_level_str))) { ERROR("loglevel: cannot expand '%s'\n", args[1]); return -EINVAL; } log_level = atoi(log_level_str); if (log_level < KLOG_ERROR_LEVEL || log_level > KLOG_DEBUG_LEVEL) { ERROR("loglevel: invalid log level'%d'\n", log_level); return -EINVAL; } klog_set_level(log_level); return 0; } int do_load_persist_props(int nargs, char **args) { Loading
init/init.c +13 −2 Original line number Diff line number Diff line Loading @@ -528,7 +528,8 @@ static int is_last_command(struct action *act, struct command *cmd) void execute_one_command(void) { int ret; int ret, i; char cmd_str[256] = ""; if (!cur_action || !cur_command || is_last_command(cur_action, cur_command)) { cur_action = action_remove_queue_head(); Loading @@ -545,7 +546,17 @@ void execute_one_command(void) return; ret = cur_command->func(cur_command->nargs, cur_command->args); INFO("command '%s' r=%d\n", cur_command->args[0], ret); if (klog_get_level() >= KLOG_INFO_LEVEL) { for (i = 0; i < cur_command->nargs; i++) { strlcat(cmd_str, cur_command->args[i], sizeof(cmd_str)); if (i < cur_command->nargs - 1) { strlcat(cmd_str, " ", sizeof(cmd_str)); } } INFO("command '%s' action=%s status=%d (%s:%d)\n", cmd_str, cur_action ? cur_action->name : "", ret, cur_command->filename, cur_command->line); } } static int wait_for_coldboot_done_action(int nargs, char **args) Loading
init/init.h +6 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,10 @@ struct command struct listnode clist; int (*func)(int nargs, char **args); int line; const char *filename; int nargs; char *args[1]; }; Loading
init/init_parser.c +3 −0 Original line number Diff line number Diff line Loading @@ -584,6 +584,7 @@ void queue_builtin_action(int (*func)(int nargs, char **args), char *name) cmd = calloc(1, sizeof(*cmd)); cmd->func = func; cmd->args[0] = name; cmd->nargs = 1; list_add_tail(&act->commands, &cmd->clist); list_add_tail(&action_list, &act->alist); Loading Loading @@ -870,6 +871,8 @@ static void parse_line_action(struct parse_state* state, int nargs, char **args) } cmd = malloc(sizeof(*cmd) + sizeof(char*) * nargs); cmd->func = kw_func(kw); cmd->line = state->line; cmd->filename = state->filename; cmd->nargs = nargs; memcpy(cmd->args, args, sizeof(char*) * nargs); list_add_tail(&act->commands, &cmd->clist); Loading
rootdir/init.rc +3 −0 Original line number Diff line number Diff line Loading @@ -428,6 +428,9 @@ on boot on nonencrypted class_start late_start on property:sys.init_log_level=* loglevel ${sys.init_log_level} on charger class_start charger Loading