diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2016-02-13 23:55:47 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2016-02-14 00:05:33 +0200 |
commit | 0a5eb4f65a20d37f2051dce8816485dd219fb735 (patch) | |
tree | eadff6490ebf734431c354ac1ba40a4a8537fcb0 /src/pies.h | |
parent | c9581808b72ff25623c87cf49c471ce7f017985d (diff) | |
download | pies-0a5eb4f65a20d37f2051dce8816485dd219fb735.tar.gz pies-0a5eb4f65a20d37f2051dce8816485dd219fb735.tar.bz2 |
Fix handling of wait components
* src/pies.h (PIES_COMP_WAIT): Remove.
(PIES_COMP_MASK): Save one bit.
(PIES_CHLD_NONE, PIES_CHLD_CLEANUP)
(PIES_CHLD_WAKEUP): New constants.
(pies_schedule_children): New proto.
(sysvinit_runlevel_setup): Change signature.
* src/pies.c (children_cleanup, got_alarm): Merge into
single static variable children_op. All uses updated.
(pies_schedule_children): New function.
(sig_handler): Update
(main): Don't call ctl_open for init process. It is done
by inittrans after transition from boot to normal state.
Update to use pies_schedule_children.
* src/prog.h (IS_ACTIVE_COMPONENT): New macro.
* src/progman.c (prog_start): Don't modify prog->v.p.wait.
(progman_wake_sleeping): Start usual components only after
all "wait" components have terminated.
(progman_cleanup): If a "wait" component has terminated,
request PIES_CHLD_WAKEUP.
* src/sysvinit.c (enstate) <wait>: Remove.
(enablecomp): Update.
(runlevel_setup_prog): Set prog->v.p.wait.
(sysvinit_runlevel_setup): Take only one parameter.
(inittrans): Remove "wait" and the related mess.
Call ctl_open after transition boot -> normal.
Diffstat (limited to 'src/pies.h')
-rw-r--r-- | src/pies.h | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -180,8 +180,7 @@ enum pies_comp_mode | |||
180 | }; | 180 | }; |
181 | 181 | ||
182 | #define PIES_COMP_DEFAULT 0 | 182 | #define PIES_COMP_DEFAULT 0 |
183 | #define PIES_COMP_WAIT 0x01 | 183 | #define PIES_COMP_MASK(m) (1 << ((m))) |
184 | #define PIES_COMP_MASK(m) (1 << ((m)+1)) | ||
185 | 184 | ||
186 | #define CF_DISABLED 0x001 /* The componenet is disabled */ | 185 | #define CF_DISABLED 0x001 /* The componenet is disabled */ |
187 | #define CF_PRECIOUS 0x002 /* The component is precious (should not | 186 | #define CF_PRECIOUS 0x002 /* The component is precious (should not |
@@ -317,6 +316,12 @@ void free_redirector (struct redirector *rp); | |||
317 | void pies_schedule_action (int act); | 316 | void pies_schedule_action (int act); |
318 | void free_action (struct action *act); | 317 | void free_action (struct action *act); |
319 | 318 | ||
319 | #define PIES_CHLD_NONE 0 | ||
320 | #define PIES_CHLD_CLEANUP 0x01 | ||
321 | #define PIES_CHLD_WAKEUP 0x02 | ||
322 | |||
323 | void pies_schedule_children (int op); | ||
324 | |||
320 | void register_prog (struct component *comp); | 325 | void register_prog (struct component *comp); |
321 | int progman_waiting_p (void); | 326 | int progman_waiting_p (void); |
322 | void progman_start (void); | 327 | void progman_start (void); |
@@ -512,7 +517,7 @@ int console_open (int mode); | |||
512 | int telinit (const char *arg); | 517 | int telinit (const char *arg); |
513 | int inittab_parse (const char *file); | 518 | int inittab_parse (const char *file); |
514 | int sysvinit_sigtrans (int sig, int *pact); | 519 | int sysvinit_sigtrans (int sig, int *pact); |
515 | void sysvinit_runlevel_setup (int mask, int *wait); | 520 | void sysvinit_runlevel_setup (int mask); |
516 | void sysvinit_sysdep_begin (void); | 521 | void sysvinit_sysdep_begin (void); |
517 | void sysvinit_power (void); | 522 | void sysvinit_power (void); |
518 | 523 | ||