X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=a989a702ff30d7a64786a31c94558225e58d3e2c;hb=846e952260278225b79de4062fff1f8f2145a544;hp=0e97c8a7a6195b42d4c64cbb0abf34f2d1fe10fe;hpb=06c7e1c7e9aec77a1a22ccb14dd0e540cf08f5d9;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index 0e97c8a7..a989a702 100644 --- a/src/main.c +++ b/src/main.c @@ -49,6 +49,7 @@ #include "afb-monitor.h" #include "afb-hook.h" #include "sd-fds.h" +#include "afb-debug.h" /* if SELF_PGROUP == 0 the launched command is the group leader @@ -447,11 +448,11 @@ struct startup_req struct afb_session *session; }; -static void startup_call_reply(struct afb_xreq *xreq, int iserror, struct json_object *obj) +static void startup_call_reply(struct afb_xreq *xreq, int status, struct json_object *obj) { struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq); - if (!iserror) + if (status >= 0) NOTICE("startup call %s returned %s", sreq->current->value, json_object_get_string(obj)); else { ERROR("startup call %s ERROR! %s", sreq->current->value, json_object_get_string(obj)); @@ -529,10 +530,17 @@ static void run_startup_calls() | job for starting the daemon +--------------------------------------------------------- */ -static void start() +static void start(int signum) { struct afb_hsrv *hsrv; + afb_debug("start-entry"); + + if (signum) { + ERROR("start aborted: received signal %s", strsignal(signum)); + exit(1); + } + // ------------------ sanity check ---------------------------------------- if (config->httpdPort <= 0) { ERROR("no port is defined"); @@ -573,8 +581,11 @@ static void start() afb_hook_create_ditf(NULL, config->traceditf, NULL, NULL); if (config->tracesvc) afb_hook_create_svc(NULL, config->tracesvc, NULL, NULL); + if (config->traceevt) + afb_hook_create_evt(NULL, config->traceevt, NULL, NULL); /* load bindings */ + afb_debug("start-load"); apiset_start_list(config->dbus_clients, afb_api_dbus_add_client, "the afb-dbus client"); apiset_start_list(config->ws_clients, afb_api_ws_add_client, "the afb-websocket client"); apiset_start_list(config->ldpaths, afb_api_so_add_pathset, "the binding path set"); @@ -586,25 +597,29 @@ static void start() DEBUG("Init config done"); /* start the services */ + afb_debug("start-start"); if (afb_apiset_start_all_services(main_apiset, 1) < 0) goto error; /* start the HTTP server */ + afb_debug("start-http"); if (!config->noHttpd) { hsrv = start_http_server(); if (hsrv == NULL) goto error; } + /* run the startup calls */ + afb_debug("start-call"); + run_startup_calls(); + /* run the command */ + afb_debug("start-exec"); if (execute_command() < 0) goto error; /* ready */ sd_notify(1, "READY=1"); - - /* run the startup calls */ - run_startup_calls(); return; error: exit(1); @@ -617,6 +632,8 @@ error: int main(int argc, char *argv[]) { + afb_debug("main-entry"); + // let's run this program with a low priority nice(20); @@ -624,7 +641,8 @@ int main(int argc, char *argv[]) // ------------- Build session handler & init config ------- config = afb_config_parse_arguments(argc, argv); - INFO("running with pid %d", getpid()); + + afb_debug("main-args"); // --------- run ----------- if (config->background) { @@ -635,10 +653,13 @@ int main(int argc, char *argv[]) // ---- in foreground mode -------------------- INFO("entering foreground mode"); } + INFO("running with pid %d", getpid()); /* set the daemon environment */ setup_daemon(); + afb_debug("main-start"); + /* enter job processing */ jobs_start(3, 0, 50, start); WARNING("hoops returned from jobs_enter! [report bug]");