6 #include "ns3/assert.h"
14 sighandler_t
dce_signal (
int signum, sighandler_t handler)
18 struct sigaction action, old_action;
19 action.sa_handler = handler;
20 sigemptyset (&action.sa_mask);
27 if (old_action.sa_flags & SA_SIGINFO)
29 return (sighandler_t)old_action.sa_sigaction;
33 return old_action.sa_handler;
37 struct sigaction *oldact)
40 NS_LOG_FUNCTION (current <<
UtilsGetNodeId () << signum << act << oldact);
41 NS_ASSERT (current != 0);
46 if (i->signal == signum)
50 oldact->sa_flags = i->flags;
51 oldact->sa_mask = i->mask;
52 if (oldact->sa_flags & SA_SIGINFO)
54 oldact->sa_sigaction = i->sigaction;
58 oldact->sa_handler = i->handler;
63 i->flags = act->sa_flags;
64 i->mask = act->sa_mask;
65 if (act->sa_flags & SA_SIGINFO)
67 i->sigaction = act->sa_sigaction;
71 i->handler = act->sa_handler;
81 handler.
flags = act->sa_flags;
82 handler.
mask = act->sa_mask;
83 if (act->sa_flags & SA_SIGINFO)
89 handler.
handler = act->sa_handler;
95 oldact->sa_handler = SIG_IGN;
97 sigemptyset (&oldact->sa_mask);
107 NS_ASSERT (current != 0);
121 NS_ASSERT (current != 0);
142 for (
int s = SIGINT; s <= SIGRTMAX ; s++)
144 if (sigismember (
set, s))
162 current->
err = EINVAL;