Improve init's debug printing.
+ Make prints of rc commands significantly more verbose. All commands will log all arguments, file/line number of the command, return value, and parent action which triggered the command. init: command 'mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000' action=init status=0 (/init.rc:89) init: command 'setprop net.tcp.default_init_rwnd 60' action=boot status=0 (/init.rc:403) Change-Id: I5498c7258e4891706be4a12546df4231d14d86c4
This commit is contained in:
parent
a42d5bf006
commit
24a3b783d5
15
init/init.c
15
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)
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue