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 (12 years, 3 months ago) by michael
Content type: text/html
File size: 11445 byte(s)
Log Message:
- Imported libpeak-0.1.2

File Contents

# User Rev Content
1 michael 3251 <!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