diff --git a/init/init.c b/init/init.c index f00107163..e4ac1cf2d 100644 --- a/init/init.c +++ b/init/init.c @@ -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(); @@ -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) diff --git a/init/init.h b/init/init.h index c2419123a..a7615a367 100644 --- a/init/init.h +++ b/init/init.h @@ -29,10 +29,14 @@ struct command struct listnode clist; int (*func)(int nargs, char **args); + + int line; + const char *filename; + int nargs; char *args[1]; }; - + struct action { /* node in list of all actions */ struct listnode alist; @@ -43,7 +47,7 @@ struct action { unsigned hash; const char *name; - + struct listnode commands; struct command *current; }; diff --git a/init/init_parser.c b/init/init_parser.c index 289e75975..f412de789 100644 --- a/init/init_parser.c +++ b/init/init_parser.c @@ -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); @@ -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);