diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-01-04 14:22:24 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-01-04 14:22:24 +0200 |
commit | a9c18ad30ba6072ca460b2abc482374fb3c207b2 (patch) | |
tree | bd969853eaebe30e04fd8658d9ba323f6f6ff2ab /src/pies.h | |
parent | cf14c349fad774e477a80d1c5e6572f21f17ced1 (diff) | |
download | pies-a9c18ad30ba6072ca460b2abc482374fb3c207b2.tar.gz pies-a9c18ad30ba6072ca460b2abc482374fb3c207b2.tar.bz2 |
Implement runlevel transitions.
* src/sysvinit.c: New file.
* src/Makefile.am: Add new file.
* src/pies.c (initdefault, dfl_level): Move to sysvinit.c
(modetab): Add new modes.
(inittrans): Move to sysvinit.c
* src/pies.h (is_sysvinit): New macro.
(dfl_level): New extern.
(runlevel_match, inittrans, is_comp_wait): New protos.
* src/progman.c (progman_running_p): Take into account only
components. Use is_comp_wait to determine if the component
should be waited for.
(prog_start): Run sysvinit components only when started as
init process.
(runlevel_match): Move to sysvinit.c
(prog_start_prerequisites): Return immediately if
the component is disabled.
Diffstat (limited to 'src/pies.h')
-rw-r--r-- | src/pies.h | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -142,16 +142,16 @@ enum pies_comp_mode `start_action = pass' in MeTA1. */ pies_comp_pass_fd, /* ** Init-style components */ - + pies_mark_sysvinit, /* Start the process when the specified runlevel is entered and wait for its termination */ - pies_comp_wait, + pies_comp_wait = pies_mark_sysvinit, /* Execute the component once, when the specified runlevel is entered */ pies_comp_once, /* Execute the component during system boot. Ignore runlevel settings. */ pies_comp_boot, /* Execute the component during system boot and wait for it to terminate. Ignore runlevel settings. */ @@ -180,12 +180,14 @@ enum pies_comp_mode pies_comp_kbrequest, /* Restart the component wherever it terminates */ pies_comp_respawn = pies_comp_exec, }; +#define is_sysvinit(m) ((m)>=pies_mark_sysvinit) + #define CF_DISABLED 0x001 /* The componenet is disabled */ #define CF_PRECIOUS 0x002 /* The component is precious (should not be disabled) */ #define CF_WAIT 0x004 /* Wait for the component instance to terminate. */ #define CF_TCPMUX 0x008 /* A plain TCPMUX service */ @@ -271,12 +273,13 @@ extern char **mailer_argv; extern size_t default_max_rate; extern char *qotdfile; extern int init_process; extern char *console_device; extern int initdefault; +extern int dfl_level; void register_prog (struct component *comp); int progman_running_p (void); size_t progman_running_count (void); void progman_start (void); void progman_wake_sleeping (int); @@ -442,8 +445,14 @@ struct inetd_builtin int single_process; int flags; void (*fun) (int, struct component const *); }; struct inetd_builtin *inetd_builtin_lookup (const char *service, int socktype); + +/* sysvinit.c */ +int runlevel_match (struct component *comp); +void inittrans (void); +int is_comp_wait (struct component *comp); + |