1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

libdaemon: allow main processing function to be specified

This commit is contained in:
David Teigland 2014-12-02 14:08:58 -06:00
parent ba2b701f2c
commit c5ba60827e
2 changed files with 8 additions and 1 deletions

View File

@ -604,6 +604,12 @@ void daemon_start(daemon_state s)
if (!s.foreground) if (!s.foreground)
kill(getppid(), SIGTERM); kill(getppid(), SIGTERM);
if (s.daemon_main) {
if (!s.daemon_main(&s))
failed = 1;
goto out;
}
if (s.daemon_init) if (s.daemon_init)
if (!s.daemon_init(&s)) if (!s.daemon_init(&s))
failed = 1; failed = 1;
@ -635,7 +641,7 @@ void daemon_start(daemon_state s)
INFO(&s, "%s waiting for client threads to finish", s.name); INFO(&s, "%s waiting for client threads to finish", s.name);
reap(s, 1); reap(s, 1);
out:
/* If activated by systemd, do not unlink the socket - systemd takes care of that! */ /* If activated by systemd, do not unlink the socket - systemd takes care of that! */
if (!_systemd_activation && s.socket_fd >= 0) if (!_systemd_activation && s.socket_fd >= 0)
if (unlink(s.socket_path)) if (unlink(s.socket_path))

View File

@ -107,6 +107,7 @@ typedef struct daemon_state {
handle_request handler; handle_request handler;
int (*daemon_init)(struct daemon_state *st); int (*daemon_init)(struct daemon_state *st);
int (*daemon_fini)(struct daemon_state *st); int (*daemon_fini)(struct daemon_state *st);
int (*daemon_main)(struct daemon_state *st);
/* Global runtime info maintained by the framework. */ /* Global runtime info maintained by the framework. */
int socket_fd; int socket_fd;