~ubuntu-branches/ubuntu/lucid/udev/lucid-proposed

« back to all changes in this revision

Viewing changes to libudev/docs/html/libudev-udev-monitor.html

  • Committer: Bazaar Package Importer
  • Author(s): Scott James Remnant
  • Date: 2009-12-03 14:56:46 UTC
  • mfrom: (0.8.1 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091203145646-ofqriew861vxrb2q
Tags: 149-1
* New upstream release:
  - Includes previous GIT updates.
  - Bug fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
2
<html>
 
3
<head>
 
4
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
5
<title>udev_monitor</title>
 
6
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
 
7
<link rel="home" href="index.html" title="libudev Reference Manual">
 
8
<link rel="up" href="ch01.html" title="libudev">
 
9
<link rel="prev" href="libudev-udev-device.html" title="udev_device">
 
10
<link rel="next" href="libudev-udev-enumerate.html" title="udev_enumerate">
 
11
<meta name="generator" content="GTK-Doc V1.11 (XML mode)">
 
12
<link rel="stylesheet" href="style.css" type="text/css">
 
13
<link rel="chapter" href="ch01.html" title="libudev">
 
14
<link rel="index" href="api-index-full.html" title="API Index">
 
15
</head>
 
16
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 
17
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
 
18
<tr valign="middle">
 
19
<td><a accesskey="p" href="libudev-udev-device.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 
20
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
 
21
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
 
22
<th width="100%" align="center">libudev Reference Manual</th>
 
23
<td><a accesskey="n" href="libudev-udev-enumerate.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
 
24
</tr>
 
25
<tr><td colspan="5" class="shortcuts">
 
26
<a href="#libudev-udev-monitor.synopsis" class="shortcut">Top</a>
 
27
                 | 
 
28
                <a href="#libudev-udev-monitor.description" class="shortcut">Description</a>
 
29
</td></tr>
 
30
</table>
 
31
<div class="refentry" title="udev_monitor">
 
32
<a name="libudev-udev-monitor"></a><div class="titlepage"></div>
 
33
<div class="refnamediv"><table width="100%"><tr>
 
34
<td valign="top">
 
35
<h2><span class="refentrytitle"><a name="libudev-udev-monitor.top_of_page"></a>udev_monitor</span></h2>
 
36
<p>udev_monitor — device event source</p>
 
37
</td>
 
38
<td valign="top" align="right"></td>
 
39
</tr></table></div>
 
40
<div class="refsynopsisdiv" title="Synopsis">
 
41
<a name="libudev-udev-monitor.synopsis"></a><h2>Synopsis</h2>
 
42
<pre class="synopsis">
 
43
struct              <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a>;
 
44
struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * <a class="link" href="libudev-udev-monitor.html#udev-monitor-ref" title="udev_monitor_ref ()">udev_monitor_ref</a>                  (struct udev_monitor *udev_monitor);
 
45
void                <a class="link" href="libudev-udev-monitor.html#udev-monitor-unref" title="udev_monitor_unref ()">udev_monitor_unref</a>                  (struct udev_monitor *udev_monitor);
 
46
struct <a class="link" href="libudev-udev.html#udev" title="struct udev">udev</a> *       <a class="link" href="libudev-udev-monitor.html#udev-monitor-get-udev" title="udev_monitor_get_udev ()">udev_monitor_get_udev</a>               (struct udev_monitor *udev_monitor);
 
47
struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * <a class="link" href="libudev-udev-monitor.html#udev-monitor-new-from-netlink" title="udev_monitor_new_from_netlink ()">udev_monitor_new_from_netlink</a>     (struct udev *udev,
 
48
                                                         const char *name);
 
49
struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * <a class="link" href="libudev-udev-monitor.html#udev-monitor-new-from-socket" title="udev_monitor_new_from_socket ()">udev_monitor_new_from_socket</a>      (struct udev *udev,
 
50
                                                         const char *socket_path);
 
51
int                 <a class="link" href="libudev-udev-monitor.html#udev-monitor-enable-receiving" title="udev_monitor_enable_receiving ()">udev_monitor_enable_receiving</a>       (struct udev_monitor *udev_monitor);
 
52
int                 <a class="link" href="libudev-udev-monitor.html#udev-monitor-get-fd" title="udev_monitor_get_fd ()">udev_monitor_get_fd</a>                 (struct udev_monitor *udev_monitor);
 
53
struct <a class="link" href="libudev-udev-device.html#udev-device" title="struct udev_device">udev_device</a> * <a class="link" href="libudev-udev-monitor.html#udev-monitor-receive-device" title="udev_monitor_receive_device ()">udev_monitor_receive_device</a>        (struct udev_monitor *udev_monitor);
 
54
int                 <a class="link" href="libudev-udev-monitor.html#udev-monitor-filter-add-match-subsystem-devtype" title="udev_monitor_filter_add_match_subsystem_devtype ()">udev_monitor_filter_add_match_subsystem_devtype</a>
 
55
                                                        (struct udev_monitor *udev_monitor,
 
56
                                                         const char *subsystem,
 
57
                                                         const char *devtype);
 
58
int                 <a class="link" href="libudev-udev-monitor.html#udev-monitor-filter-update" title="udev_monitor_filter_update ()">udev_monitor_filter_update</a>          (struct udev_monitor *udev_monitor);
 
59
int                 <a class="link" href="libudev-udev-monitor.html#udev-monitor-filter-remove" title="udev_monitor_filter_remove ()">udev_monitor_filter_remove</a>          (struct udev_monitor *udev_monitor);
 
60
</pre>
 
61
</div>
 
62
<div class="refsect1" title="Description">
 
63
<a name="libudev-udev-monitor.description"></a><h2>Description</h2>
 
64
<p>
 
65
Connects to a device event source.</p>
 
66
<p>
 
67
</p>
 
68
</div>
 
69
<div class="refsect1" title="Details">
 
70
<a name="libudev-udev-monitor.details"></a><h2>Details</h2>
 
71
<div class="refsect2" title="struct udev_monitor">
 
72
<a name="udev-monitor"></a><h3>struct udev_monitor</h3>
 
73
<pre class="programlisting">struct udev_monitor;</pre>
 
74
<p>
 
75
Opaque object handling one event source.</p>
 
76
<p>
 
77
</p>
 
78
</div>
 
79
<hr>
 
80
<div class="refsect2" title="udev_monitor_ref ()">
 
81
<a name="udev-monitor-ref"></a><h3>udev_monitor_ref ()</h3>
 
82
<pre class="programlisting">struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * udev_monitor_ref                  (struct udev_monitor *udev_monitor);</pre>
 
83
<p>
 
84
Take a reference of a udev monitor.</p>
 
85
<p>
 
86
</p>
 
87
<div class="variablelist"><table border="0">
 
88
<col align="left" valign="top">
 
89
<tbody>
 
90
<tr>
 
91
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
92
<td> udev monitor
 
93
</td>
 
94
</tr>
 
95
<tr>
 
96
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
97
<td> the passed udev monitor
 
98
</td>
 
99
</tr>
 
100
</tbody>
 
101
</table></div>
 
102
</div>
 
103
<hr>
 
104
<div class="refsect2" title="udev_monitor_unref ()">
 
105
<a name="udev-monitor-unref"></a><h3>udev_monitor_unref ()</h3>
 
106
<pre class="programlisting">void                udev_monitor_unref                  (struct udev_monitor *udev_monitor);</pre>
 
107
<p>
 
108
Drop a reference of a udev monitor. If the refcount reaches zero,
 
109
the bound socket will be closed, and the resources of the monitor
 
110
will be released.</p>
 
111
<p>
 
112
</p>
 
113
<div class="variablelist"><table border="0">
 
114
<col align="left" valign="top">
 
115
<tbody><tr>
 
116
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
117
<td> udev monitor
 
118
</td>
 
119
</tr></tbody>
 
120
</table></div>
 
121
</div>
 
122
<hr>
 
123
<div class="refsect2" title="udev_monitor_get_udev ()">
 
124
<a name="udev-monitor-get-udev"></a><h3>udev_monitor_get_udev ()</h3>
 
125
<pre class="programlisting">struct <a class="link" href="libudev-udev.html#udev" title="struct udev">udev</a> *       udev_monitor_get_udev               (struct udev_monitor *udev_monitor);</pre>
 
126
<p>
 
127
Retrieve the udev library context the monitor was created with.</p>
 
128
<p>
 
129
</p>
 
130
<div class="variablelist"><table border="0">
 
131
<col align="left" valign="top">
 
132
<tbody>
 
133
<tr>
 
134
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
135
<td> udev monitor
 
136
</td>
 
137
</tr>
 
138
<tr>
 
139
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
140
<td> the udev library context
 
141
</td>
 
142
</tr>
 
143
</tbody>
 
144
</table></div>
 
145
</div>
 
146
<hr>
 
147
<div class="refsect2" title="udev_monitor_new_from_netlink ()">
 
148
<a name="udev-monitor-new-from-netlink"></a><h3>udev_monitor_new_from_netlink ()</h3>
 
149
<pre class="programlisting">struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * udev_monitor_new_from_netlink     (struct udev *udev,
 
150
                                                         const char *name);</pre>
 
151
<p>
 
152
Create new udev monitor and connect to a specified event
 
153
source. Valid sources identifiers are "udev" and "kernel".
 
154
</p>
 
155
<p>
 
156
Applications should usually not connect directly to the
 
157
"kernel" events, because the devices might not be useable
 
158
at that time, before udev has configured them, and created
 
159
device nodes.
 
160
</p>
 
161
<p>
 
162
Accessing devices at the same time as udev, might result
 
163
in unpredictable behavior.
 
164
</p>
 
165
<p>
 
166
The "udev" events are sent out after udev has finished its
 
167
event processing, all rules have been processed, and needed
 
168
device nodes are created.
 
169
</p>
 
170
<p>
 
171
The initial refcount is 1, and needs to be decremented to
 
172
release the resources of the udev monitor.</p>
 
173
<p>
 
174
</p>
 
175
<div class="variablelist"><table border="0">
 
176
<col align="left" valign="top">
 
177
<tbody>
 
178
<tr>
 
179
<td><p><span class="term"><em class="parameter"><code>udev</code></em> :</span></p></td>
 
180
<td> udev library context
 
181
</td>
 
182
</tr>
 
183
<tr>
 
184
<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td>
 
185
<td> name of event source
 
186
</td>
 
187
</tr>
 
188
<tr>
 
189
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
190
<td> a new udev monitor, or <a
 
191
href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL--CAPS"
 
192
><span class="type">NULL</span></a>, in case of an error
 
193
</td>
 
194
</tr>
 
195
</tbody>
 
196
</table></div>
 
197
</div>
 
198
<hr>
 
199
<div class="refsect2" title="udev_monitor_new_from_socket ()">
 
200
<a name="udev-monitor-new-from-socket"></a><h3>udev_monitor_new_from_socket ()</h3>
 
201
<pre class="programlisting">struct <a class="link" href="libudev-udev-monitor.html#udev-monitor" title="struct udev_monitor">udev_monitor</a> * udev_monitor_new_from_socket      (struct udev *udev,
 
202
                                                         const char *socket_path);</pre>
 
203
<p>
 
204
Create new udev monitor and connect to a specified socket. The
 
205
path to a socket either points to an existing socket file, or if
 
206
the socket path starts with a '@' character, an abstract namespace
 
207
socket will be used.
 
208
</p>
 
209
<p>
 
210
A socket file will not be created. If it does not already exist,
 
211
it will fall-back and connect to an abstract namespace socket with
 
212
the given path. The permissions adjustment of a socket file, as
 
213
well as the later cleanup, needs to be done by the caller.
 
214
</p>
 
215
<p>
 
216
The initial refcount is 1, and needs to be decremented to
 
217
release the resources of the udev monitor.</p>
 
218
<p>
 
219
</p>
 
220
<div class="variablelist"><table border="0">
 
221
<col align="left" valign="top">
 
222
<tbody>
 
223
<tr>
 
224
<td><p><span class="term"><em class="parameter"><code>udev</code></em> :</span></p></td>
 
225
<td> udev library context
 
226
</td>
 
227
</tr>
 
228
<tr>
 
229
<td><p><span class="term"><em class="parameter"><code>socket_path</code></em> :</span></p></td>
 
230
<td> unix socket path
 
231
</td>
 
232
</tr>
 
233
<tr>
 
234
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
235
<td> a new udev monitor, or <a
 
236
href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL--CAPS"
 
237
><span class="type">NULL</span></a>, in case of an error
 
238
</td>
 
239
</tr>
 
240
</tbody>
 
241
</table></div>
 
242
</div>
 
243
<hr>
 
244
<div class="refsect2" title="udev_monitor_enable_receiving ()">
 
245
<a name="udev-monitor-enable-receiving"></a><h3>udev_monitor_enable_receiving ()</h3>
 
246
<pre class="programlisting">int                 udev_monitor_enable_receiving       (struct udev_monitor *udev_monitor);</pre>
 
247
<p>
 
248
Binds the <em class="parameter"><code>udev_monitor</code></em> socket to the event source.</p>
 
249
<p>
 
250
</p>
 
251
<div class="variablelist"><table border="0">
 
252
<col align="left" valign="top">
 
253
<tbody>
 
254
<tr>
 
255
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
256
<td> the monitor which should receive events
 
257
</td>
 
258
</tr>
 
259
<tr>
 
260
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
261
<td> 0 on success, otherwise a negative error value.
 
262
</td>
 
263
</tr>
 
264
</tbody>
 
265
</table></div>
 
266
</div>
 
267
<hr>
 
268
<div class="refsect2" title="udev_monitor_get_fd ()">
 
269
<a name="udev-monitor-get-fd"></a><h3>udev_monitor_get_fd ()</h3>
 
270
<pre class="programlisting">int                 udev_monitor_get_fd                 (struct udev_monitor *udev_monitor);</pre>
 
271
<p>
 
272
Retrieve the socket file descriptor associated with the monitor.</p>
 
273
<p>
 
274
</p>
 
275
<div class="variablelist"><table border="0">
 
276
<col align="left" valign="top">
 
277
<tbody>
 
278
<tr>
 
279
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
280
<td> udev monitor
 
281
</td>
 
282
</tr>
 
283
<tr>
 
284
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
285
<td> the socket file descriptor
 
286
</td>
 
287
</tr>
 
288
</tbody>
 
289
</table></div>
 
290
</div>
 
291
<hr>
 
292
<div class="refsect2" title="udev_monitor_receive_device ()">
 
293
<a name="udev-monitor-receive-device"></a><h3>udev_monitor_receive_device ()</h3>
 
294
<pre class="programlisting">struct <a class="link" href="libudev-udev-device.html#udev-device" title="struct udev_device">udev_device</a> * udev_monitor_receive_device        (struct udev_monitor *udev_monitor);</pre>
 
295
<p>
 
296
Receive data from the udev monitor socket, allocate a new udev
 
297
device, fill in the received data, and return the device.
 
298
</p>
 
299
<p>
 
300
Only socket connections with uid=0 are accepted. The caller
 
301
needs to make sure that there is data to read from the socket.
 
302
The call will block until the socket becomes readable.
 
303
</p>
 
304
<p>
 
305
The initial refcount is 1, and needs to be decremented to
 
306
release the resources of the udev device.</p>
 
307
<p>
 
308
</p>
 
309
<div class="variablelist"><table border="0">
 
310
<col align="left" valign="top">
 
311
<tbody>
 
312
<tr>
 
313
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
314
<td> udev monitor
 
315
</td>
 
316
</tr>
 
317
<tr>
 
318
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
319
<td> a new udev device, or <a
 
320
href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL--CAPS"
 
321
><span class="type">NULL</span></a>, in case of an error
 
322
</td>
 
323
</tr>
 
324
</tbody>
 
325
</table></div>
 
326
</div>
 
327
<hr>
 
328
<div class="refsect2" title="udev_monitor_filter_add_match_subsystem_devtype ()">
 
329
<a name="udev-monitor-filter-add-match-subsystem-devtype"></a><h3>udev_monitor_filter_add_match_subsystem_devtype ()</h3>
 
330
<pre class="programlisting">int                 udev_monitor_filter_add_match_subsystem_devtype
 
331
                                                        (struct udev_monitor *udev_monitor,
 
332
                                                         const char *subsystem,
 
333
                                                         const char *devtype);</pre>
 
334
<p>
 
335
The filter must be installed before the monitor is switched to listening mode.</p>
 
336
<p>
 
337
</p>
 
338
<div class="variablelist"><table border="0">
 
339
<col align="left" valign="top">
 
340
<tbody>
 
341
<tr>
 
342
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
343
<td> the monitor
 
344
</td>
 
345
</tr>
 
346
<tr>
 
347
<td><p><span class="term"><em class="parameter"><code>subsystem</code></em> :</span></p></td>
 
348
<td> the subsystem value to match the incoming devices against
 
349
</td>
 
350
</tr>
 
351
<tr>
 
352
<td><p><span class="term"><em class="parameter"><code>devtype</code></em> :</span></p></td>
 
353
<td> the devtype value to match the incoming devices against
 
354
</td>
 
355
</tr>
 
356
<tr>
 
357
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
358
<td> 0 on success, otherwise a negative error value.
 
359
</td>
 
360
</tr>
 
361
</tbody>
 
362
</table></div>
 
363
</div>
 
364
<hr>
 
365
<div class="refsect2" title="udev_monitor_filter_update ()">
 
366
<a name="udev-monitor-filter-update"></a><h3>udev_monitor_filter_update ()</h3>
 
367
<pre class="programlisting">int                 udev_monitor_filter_update          (struct udev_monitor *udev_monitor);</pre>
 
368
<p>
 
369
Update the installed filter. This might only be needed, if the filter was removed or changed.</p>
 
370
<p>
 
371
</p>
 
372
<div class="variablelist"><table border="0">
 
373
<col align="left" valign="top">
 
374
<tbody>
 
375
<tr>
 
376
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
377
<td> monitor
 
378
</td>
 
379
</tr>
 
380
<tr>
 
381
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
382
<td> 0 on success, otherwise a negative error value.
 
383
</td>
 
384
</tr>
 
385
</tbody>
 
386
</table></div>
 
387
</div>
 
388
<hr>
 
389
<div class="refsect2" title="udev_monitor_filter_remove ()">
 
390
<a name="udev-monitor-filter-remove"></a><h3>udev_monitor_filter_remove ()</h3>
 
391
<pre class="programlisting">int                 udev_monitor_filter_remove          (struct udev_monitor *udev_monitor);</pre>
 
392
<p>
 
393
Remove all filters from monitor.</p>
 
394
<p>
 
395
</p>
 
396
<div class="variablelist"><table border="0">
 
397
<col align="left" valign="top">
 
398
<tbody>
 
399
<tr>
 
400
<td><p><span class="term"><em class="parameter"><code>udev_monitor</code></em> :</span></p></td>
 
401
<td> monitor
 
402
</td>
 
403
</tr>
 
404
<tr>
 
405
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
406
<td> 0 on success, otherwise a negative error value.
 
407
</td>
 
408
</tr>
 
409
</tbody>
 
410
</table></div>
 
411
</div>
 
412
</div>
 
413
</div>
 
414
<div class="footer">
 
415
<hr>
 
416
          Generated by GTK-Doc V1.11</div>
 
417
</body>
 
418
</html>