init: Handle commands in event queue loop
Change-Id: I679059dae43143f3c8f16b68de5694539b699e50
diff --git a/init/parser.c b/init/parser.c
index 9424e7e..b045216 100644
--- a/init/parser.c
+++ b/init/parser.c
@@ -562,6 +562,24 @@
}
}
+void queue_builtin_action(int (*func)(int nargs, char **args), char *name)
+{
+ struct action *act;
+ struct command *cmd;
+
+ act = calloc(1, sizeof(*act));
+ act->name = name;
+ list_init(&act->commands);
+
+ cmd = calloc(1, sizeof(*cmd));
+ cmd->func = func;
+ cmd->args[0] = name;
+ list_add_tail(&act->commands, &cmd->clist);
+
+ list_add_tail(&action_list, &act->alist);
+ action_add_queue_tail(act);
+}
+
void action_add_queue_tail(struct action *act)
{
list_add_tail(&action_queue, &act->qlist);
@@ -579,6 +597,11 @@
}
}
+int action_queue_empty()
+{
+ return list_empty(&action_queue);
+}
+
static void *parse_service(struct parse_state *state, int nargs, char **args)
{
struct service *svc;