msm: consistency for equally ranked keys
[platform/upstream/rpm.git] / rpmio / rpmsq.h
1 #ifndef H_RPMSQ
2 #define H_RPMSQ
3
4 /** \ingroup rpmio
5  * \file rpmio/rpmsq.h
6  *
7  */
8 #include <rpm/rpmsw.h>
9 #include <signal.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 /** \ingroup rpmsq
16  * Default signal handler prototype.
17  * @param signum        signal number
18  * @param info          (siginfo_t) signal info
19  * @param context       signal context
20  */
21 #ifdef SA_SIGINFO
22 typedef void (*rpmsqAction_t) (int signum, siginfo_t * info, void * context);
23 #else
24 typedef void (*rpmsqAction_t) (int signum);
25 #endif
26
27 /** \ingroup rpmsq
28  * Test if given signal has been caught (while signals blocked).
29  * Similar to sigismember() but operates on internal signal queue.
30  * @param signum        signal to test for
31  * @return              1 if caught, 0 if not and -1 on error
32  */
33 int rpmsqIsCaught(int signum);
34
35 /** \ingroup rpmsq
36  * Default signal handler.
37  * @param signum        signal number
38  * @param info          (siginfo_t) signal info
39  * @param context       signal context
40  */
41 #ifdef SA_SIGINFO
42 void rpmsqAction(int signum, siginfo_t * info, void * context);
43 #else
44 void rpmsqAction(int signum);
45 #endif
46
47 /** \ingroup rpmsq
48  * Enable or disable a signal handler.
49  * @param signum        signal to enable (or disable if negative)
50  * @param handler       sa_sigaction handler (or NULL to use rpmsqHandler())
51  * @return              no. of refs, -1 on error
52  */
53 int rpmsqEnable(int signum, rpmsqAction_t handler);
54
55 #ifdef __cplusplus
56 }
57 #endif
58
59 #endif  /* H_RPMSQ */