fatal-signal: After fork, clear hooks instead of disabling them.
authorBen Pfaff <blp@nicira.com>
Fri, 15 Jan 2010 23:28:14 +0000 (15:28 -0800)
committerBen Pfaff <blp@nicira.com>
Fri, 15 Jan 2010 23:28:14 +0000 (15:28 -0800)
commite3830e909d210145cbe52a1da66058ebf2581fd6
treec82e02c5f101f38df1c6f12b46cc5345c9db433d
parent4d12270a618bead742d4cabc50601e86fde83f64
fatal-signal: After fork, clear hooks instead of disabling them.

Until now, fatal_signal_fork() has simply disabled all the fatal signal
callback hooks.  This worked fine, because a daemon process forked only
once and the parent didn't do much before it exited.

But upcoming commits will introduce a --monitor option, which requires
processes to fork multiple times.  Sometimes the parent process will fork,
then run for a while, then fork again.  It's not good to disable the
hooks in the child process in such a case, because that prevents e.g.
pidfiles from being removed at the child's exit.

So this commit changes the semantics of fatal_signal_fork() to just
clearing out hooks.  After hooks are cleared, new hooks can be added and
will be executed on process termination in the usual way.

This commit also introduces a cancellation callback function so that a
canceled hook can free resources.
extras/ezio/ovs-switchui.c
extras/ezio/tty.c
lib/fatal-signal.c
lib/fatal-signal.h
lib/netdev.c
tests/test-dhcp-client.c
utilities/ovs-discover.c