10 #include <sys/signal.h>
13 typedef struct rpmsig_s * rpmsig;
15 typedef struct rpmsqElem * rpmsq;
18 * SIGCHLD queue element.
21 struct rpmsqElem * q_forw; /*!< for use by insque(3)/remque(3). */
22 struct rpmsqElem * q_back;
23 pid_t child; /*!< Currently running child. */
24 pid_t reaped; /*!< Reaped waitpid(3) return. */
25 int status; /*!< Reaped waitpid(3) status. */
29 extern rpmsq rpmsqQueue;
32 extern sigset_t rpmsqCaught;
40 void Insque(/*@null@*/ void * elem, /*@null@*/ void * prev)
41 /*@globals rpmsqQueue @*/
42 /*@modifies elem, rpmsqQueue @*/;
46 void Remque(/*@null@*/ void * elem)
51 void rpmsqHandler(int signum)
52 /*@globals rpmsqCaught, fileSystem @*/
53 /*@modifies rpmsqCaught, fileSystem @*/;
56 * Enable or disable a signal handler.
57 * @param signum signal to enable (or disable if negative)
58 * @param handler signal handler (or NULL to use rpmsqHandler())
59 * @return no. of refs, -1 on error
61 int rpmsqEnable(int signum, /*@null@*/ sighandler_t handler)
62 /*@globals rpmsqCaught, fileSystem, internalState @*/
63 /*@modifies rpmsqCaught, fileSystem, internalState @*/;
66 * Execute a command, returning its status.
69 rpmsqExecve (const char ** argv)