ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/libpeak-0.1.2/doc/html/group__signal.html
Revision: 3251
Committed: Wed Apr 2 16:58:30 2014 UTC (10 years ago) by michael
Content type: text/html
File size: 11445 byte(s)
Log Message:
- Imported libpeak-0.1.2

File Contents

# Content
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>PEAK Library: Signal notifications</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.5 -->
7 <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a></div>
8 <h1>Signal notifications</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
9 The PEAK Library wraps signal interruptions to provide safe signal notifications (via a callback). Now you can consider handling signals like any other events (stream, timer, etc.). The API is very simple here, when you want to handle a signal (defined by a number), use <a class="el" href="group__signal.html#ga5">peak_signal_create()</a> and specify a pointer to a callback function. Then, schedule a task for signal notifications using <a class="el" href="group__signal.html#ga6">peak_signal_schedule()</a>. For convenience, especially for use with SIGPIPE, a <a class="el" href="group__signal.html#ga8">peak_signal_ignore()</a> method is provided to ignore a specified signal.
10 <p>
11 <table border=0 cellpadding=0 cellspacing=0>
12 <tr><td></td></tr>
13 <tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
14 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="ga0" doxytag="signal::peak_signal" ></a>
15 typedef __peak_signal *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga0">peak_signal</a></td></tr>
16
17 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opaque type for the signal object. <br><br></td></tr>
18 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="ga1" doxytag="signal::peak_signal_event_callback" ></a>
19 typedef void(*&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga1">peak_signal_event_callback</a> )(<a class="el" href="group__signal.html#ga0">peak_signal</a> i, int value, void *context)</td></tr>
20
21 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Signal notification callback type. <br><br></td></tr>
22 <tr><td colspan=2><br><h2>Functions</h2></td></tr>
23 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="group__signal.html#ga0">peak_signal</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga2">peak_signal_create</a> (int signum, <a class="el" href="group__signal.html#ga1">peak_signal_event_callback</a> cb, void *context)</td></tr>
24
25 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new signal notification object. <a href="#ga2"></a><br><br></td></tr>
26 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga3">peak_signal_ignore</a> (int signum)</td></tr>
27
28 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore a signal. <a href="#ga3"></a><br><br></td></tr>
29 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga4">peak_signal_schedule</a> (<a class="el" href="group__signal.html#ga0">peak_signal</a> i, <a class="el" href="group__task__common.html#ga0">peak_task</a> task)</td></tr>
30
31 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedule a task for signal event notification. <a href="#ga4"></a><br><br></td></tr>
32 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__signal.html#ga5">peak_signal_unschedule</a> (<a class="el" href="group__signal.html#ga0">peak_signal</a> i, <a class="el" href="group__task__common.html#ga0">peak_task</a> task)</td></tr>
33
34 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unschedule a task for signal event notification. <a href="#ga5"></a><br><br></td></tr>
35 </table>
36 <hr><h2>Function Documentation</h2>
37 <a class="anchor" name="ga2" doxytag="signal.h::peak_signal_create" ></a><p>
38 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
39 <tr>
40 <td class="mdRow">
41 <table cellpadding="0" cellspacing="0" border="0">
42 <tr>
43 <td class="md" nowrap valign="top"> <a class="el" href="group__signal.html#ga0">peak_signal</a> peak_signal_create </td>
44 <td class="md" valign="top">(&nbsp;</td>
45 <td class="md" nowrap valign="top">int&nbsp;</td>
46 <td class="mdname" nowrap> <em>signum</em>, </td>
47 </tr>
48 <tr>
49 <td></td>
50 <td></td>
51 <td class="md" nowrap><a class="el" href="group__signal.html#ga1">peak_signal_event_callback</a>&nbsp;</td>
52 <td class="mdname" nowrap> <em>cb</em>, </td>
53 </tr>
54 <tr>
55 <td></td>
56 <td></td>
57 <td class="md" nowrap>void *&nbsp;</td>
58 <td class="mdname" nowrap> <em>context</em></td>
59 </tr>
60 <tr>
61 <td></td>
62 <td class="md">)&nbsp;</td>
63 <td class="md" colspan="2"></td>
64 </tr>
65
66 </table>
67 </td>
68 </tr>
69 </table>
70 <table cellspacing=5 cellpadding=0 border=0>
71 <tr>
72 <td>
73 &nbsp;
74 </td>
75 <td>
76
77 <p>
78 Create a new signal notification object.
79 <p>
80 <dl compact><dt><b>Parameters:</b></dt><dd>
81 <table border="0" cellspacing="2" cellpadding="0">
82 <tr><td valign=top><em>signum</em>&nbsp;</td><td>The signal number to handle. </td></tr>
83 <tr><td valign=top><em>cb</em>&nbsp;</td><td>A pointer to your notification callback function that handles signal events that may occur once scheduled. </td></tr>
84 <tr><td valign=top><em>context</em>&nbsp;</td><td>An extra application-defined pointer that will be passed to your signal event callback function (it's not used by the library).</td></tr>
85 </table>
86 </dl>
87 <dl compact><dt><b>Returns:</b></dt><dd>A newly allocated peak_signal reference or NULL if an error was encountered. </dd></dl>
88 </td>
89 </tr>
90 </table>
91 <a class="anchor" name="ga3" doxytag="signal.h::peak_signal_ignore" ></a><p>
92 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
93 <tr>
94 <td class="mdRow">
95 <table cellpadding="0" cellspacing="0" border="0">
96 <tr>
97 <td class="md" nowrap valign="top"> int peak_signal_ignore </td>
98 <td class="md" valign="top">(&nbsp;</td>
99 <td class="md" nowrap valign="top">int&nbsp;</td>
100 <td class="mdname1" valign="top" nowrap> <em>signum</em> </td>
101 <td class="md" valign="top">&nbsp;)&nbsp;</td>
102 <td class="md" nowrap></td>
103 </tr>
104
105 </table>
106 </td>
107 </tr>
108 </table>
109 <table cellspacing=5 cellpadding=0 border=0>
110 <tr>
111 <td>
112 &nbsp;
113 </td>
114 <td>
115
116 <p>
117 Ignore a signal.
118 <p>
119 Note that some signals can't be handled nor ignored, like SIGKILL.<p>
120 <dl compact><dt><b>Parameters:</b></dt><dd>
121 <table border="0" cellspacing="2" cellpadding="0">
122 <tr><td valign=top><em>signum</em>&nbsp;</td><td>The signal number to ignore.</td></tr>
123 </table>
124 </dl>
125 <dl compact><dt><b>Return values:</b></dt><dd>
126 <table border="0" cellspacing="2" cellpadding="0">
127 <tr><td valign=top><em>0</em>&nbsp;</td><td>The operation was successful. </td></tr>
128 <tr><td valign=top><em>-1</em>&nbsp;</td><td>The signal can't be ignored, error might be set to indicate the error (just like sigaction(2) does). </td></tr>
129 </table>
130 </dl>
131 </td>
132 </tr>
133 </table>
134 <a class="anchor" name="ga4" doxytag="signal.h::peak_signal_schedule" ></a><p>
135 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
136 <tr>
137 <td class="mdRow">
138 <table cellpadding="0" cellspacing="0" border="0">
139 <tr>
140 <td class="md" nowrap valign="top"> void peak_signal_schedule </td>
141 <td class="md" valign="top">(&nbsp;</td>
142 <td class="md" nowrap valign="top"><a class="el" href="group__signal.html#ga0">peak_signal</a>&nbsp;</td>
143 <td class="mdname" nowrap> <em>i</em>, </td>
144 </tr>
145 <tr>
146 <td></td>
147 <td></td>
148 <td class="md" nowrap><a class="el" href="group__task__common.html#ga0">peak_task</a>&nbsp;</td>
149 <td class="mdname" nowrap> <em>task</em></td>
150 </tr>
151 <tr>
152 <td></td>
153 <td class="md">)&nbsp;</td>
154 <td class="md" colspan="2"></td>
155 </tr>
156
157 </table>
158 </td>
159 </tr>
160 </table>
161 <table cellspacing=5 cellpadding=0 border=0>
162 <tr>
163 <td>
164 &nbsp;
165 </td>
166 <td>
167
168 <p>
169 Schedule a task for signal event notification.
170 <p>
171 This will enable you to receive signal notifications (using the provided callback in <a class="el" href="group__signal.html#ga5">peak_signal_create()</a>) within the specified task. If the task has several threads, one of its thread calls the callback.<p>
172 <dl compact><dt><b>Parameters:</b></dt><dd>
173 <table border="0" cellspacing="2" cellpadding="0">
174 <tr><td valign=top><em>i</em>&nbsp;</td><td>The signal object. </td></tr>
175 <tr><td valign=top><em>task</em>&nbsp;</td><td>The task to schedule (usually <a class="el" href="group__task__common.html#ga8">peak_task_self()</a>). </td></tr>
176 </table>
177 </dl>
178 </td>
179 </tr>
180 </table>
181 <a class="anchor" name="ga5" doxytag="signal.h::peak_signal_unschedule" ></a><p>
182 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
183 <tr>
184 <td class="mdRow">
185 <table cellpadding="0" cellspacing="0" border="0">
186 <tr>
187 <td class="md" nowrap valign="top"> void peak_signal_unschedule </td>
188 <td class="md" valign="top">(&nbsp;</td>
189 <td class="md" nowrap valign="top"><a class="el" href="group__signal.html#ga0">peak_signal</a>&nbsp;</td>
190 <td class="mdname" nowrap> <em>i</em>, </td>
191 </tr>
192 <tr>
193 <td></td>
194 <td></td>
195 <td class="md" nowrap><a class="el" href="group__task__common.html#ga0">peak_task</a>&nbsp;</td>
196 <td class="mdname" nowrap> <em>task</em></td>
197 </tr>
198 <tr>
199 <td></td>
200 <td class="md">)&nbsp;</td>
201 <td class="md" colspan="2"></td>
202 </tr>
203
204 </table>
205 </td>
206 </tr>
207 </table>
208 <table cellspacing=5 cellpadding=0 border=0>
209 <tr>
210 <td>
211 &nbsp;
212 </td>
213 <td>
214
215 <p>
216 Unschedule a task for signal event notification.
217 <p>
218 This will disable notifications for the specified signal object.<p>
219 <dl compact><dt><b>Parameters:</b></dt><dd>
220 <table border="0" cellspacing="2" cellpadding="0">
221 <tr><td valign=top><em>i</em>&nbsp;</td><td>The signal object. </td></tr>
222 <tr><td valign=top><em>task</em>&nbsp;</td><td>The task to unschedule (usually <a class="el" href="group__task__common.html#ga8">peak_task_self()</a>). </td></tr>
223 </table>
224 </dl>
225 </td>
226 </tr>
227 </table>
228 <hr size="1"><address style="align: right;"><small>Generated on Sat Jan 17 21:41:54 2004 for the PEAK Library by
229 <a href="http://www.doxygen.org/index.html">
230 <img src="doxygen.png" alt="doxygen" align="middle" border="0" >
231 </a></small>&nbsp; &nbsp; <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=98146&amp;type=1" width="88" height="31" align="middle" border="0" alt="SourceForge.net Logo" /></a></address>
232 </body>
233 </html>
234