path: root/src/pies.h
diff options
authorSergey Poznyakoff <gray@gnu.org.ua>2013-01-04 14:22:24 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2013-01-04 14:22:24 +0200
commita9c18ad30ba6072ca460b2abc482374fb3c207b2 (patch)
treebd969853eaebe30e04fd8658d9ba323f6f6ff2ab /src/pies.h
parentcf14c349fad774e477a80d1c5e6572f21f17ced1 (diff)
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')
1 files changed, 11 insertions, 2 deletions
diff --git a/src/pies.h b/src/pies.h
index 9b3ae9d..a679afd 100644
--- a/src/pies.h
+++ b/src/pies.h
@@ -142,16 +142,16 @@ enum pies_comp_mode
`start_action = pass' in MeTA1. */
** 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 */
/* Execute the component during system boot. Ignore runlevel settings. */
/* Execute the component during system boot and wait for it to terminate.
Ignore runlevel settings. */
@@ -180,12 +180,14 @@ enum pies_comp_mode
/* 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);

Return to:

Send suggestions and report system problems to the System administrator.