ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.html
(Generate patch)

Comparing libev/ev.html (file contents):
Revision 1.10 by root, Mon Nov 12 08:32:27 2007 UTC vs.
Revision 1.13 by root, Mon Nov 12 08:35:36 2007 UTC

4<head> 4<head>
5 <title>libev</title> 5 <title>libev</title>
6 <meta name="description" content="Pod documentation for libev" /> 6 <meta name="description" content="Pod documentation for libev" />
7 <meta name="inputfile" content="&lt;standard input&gt;" /> 7 <meta name="inputfile" content="&lt;standard input&gt;" />
8 <meta name="outputfile" content="&lt;standard output&gt;" /> 8 <meta name="outputfile" content="&lt;standard output&gt;" />
9 <meta name="created" content="Mon Nov 12 09:32:26 2007" /> 9 <meta name="created" content="Mon Nov 12 09:35:36 2007" />
10 <meta name="generator" content="Pod::Xhtml 1.57" /> 10 <meta name="generator" content="Pod::Xhtml 1.57" />
11<link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head> 11<link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head>
12<body> 12<body>
13<div class="pod"> 13<div class="pod">
14<!-- INDEX START --> 14<!-- INDEX START -->
24<li><a href="#ANATOMY_OF_A_WATCHER">ANATOMY OF A WATCHER</a> 24<li><a href="#ANATOMY_OF_A_WATCHER">ANATOMY OF A WATCHER</a>
25<ul><li><a href="#ASSOCIATING_CUSTOM_DATA_WITH_A_WATCH">ASSOCIATING CUSTOM DATA WITH A WATCHER</a></li> 25<ul><li><a href="#ASSOCIATING_CUSTOM_DATA_WITH_A_WATCH">ASSOCIATING CUSTOM DATA WITH A WATCHER</a></li>
26</ul> 26</ul>
27</li> 27</li>
28<li><a href="#WATCHER_TYPES">WATCHER TYPES</a> 28<li><a href="#WATCHER_TYPES">WATCHER TYPES</a>
29<ul><li><a href="#code_ev_io_code_is_my_file_descripto"><code>ev_io</code> - is my file descriptor readable or writable</a></li> 29<ul><li><a href="#code_ev_io_code_is_this_file_descrip"><code>ev_io</code> - is this file descriptor readable or writable</a></li>
30<li><a href="#code_ev_timer_code_relative_and_opti"><code>ev_timer</code> - relative and optionally recurring timeouts</a></li> 30<li><a href="#code_ev_timer_code_relative_and_opti"><code>ev_timer</code> - relative and optionally recurring timeouts</a></li>
31<li><a href="#code_ev_periodic_code_to_cron_or_not"><code>ev_periodic</code> - to cron or not to cron it</a></li> 31<li><a href="#code_ev_periodic_code_to_cron_or_not"><code>ev_periodic</code> - to cron or not to cron it</a></li>
32<li><a href="#code_ev_signal_code_signal_me_when_a"><code>ev_signal</code> - signal me when a signal gets signalled</a></li> 32<li><a href="#code_ev_signal_code_signal_me_when_a"><code>ev_signal</code> - signal me when a signal gets signalled</a></li>
33<li><a href="#code_ev_child_code_wait_for_pid_stat"><code>ev_child</code> - wait for pid status changes</a></li> 33<li><a href="#code_ev_child_code_wait_for_pid_stat"><code>ev_child</code> - wait for pid status changes</a></li>
34<li><a href="#code_ev_idle_code_when_you_ve_got_no"><code>ev_idle</code> - when you've got nothing better to do</a></li> 34<li><a href="#code_ev_idle_code_when_you_ve_got_no"><code>ev_idle</code> - when you've got nothing better to do</a></li>
426<div id="WATCHER_TYPES_CONTENT"> 426<div id="WATCHER_TYPES_CONTENT">
427<p>This section describes each watcher in detail, but will not repeat 427<p>This section describes each watcher in detail, but will not repeat
428information given in the last section.</p> 428information given in the last section.</p>
429 429
430</div> 430</div>
431<h2 id="code_ev_io_code_is_my_file_descripto"><code>ev_io</code> - is my file descriptor readable or writable</h2> 431<h2 id="code_ev_io_code_is_this_file_descrip"><code>ev_io</code> - is this file descriptor readable or writable</h2>
432<div id="code_ev_io_code_is_my_file_descripto-2"> 432<div id="code_ev_io_code_is_this_file_descrip-2">
433<p>I/O watchers check whether a file descriptor is readable or writable 433<p>I/O watchers check whether a file descriptor is readable or writable
434in each iteration of the event loop (This behaviour is called 434in each iteration of the event loop (This behaviour is called
435level-triggering because you keep receiving events as long as the 435level-triggering because you keep receiving events as long as the
436condition persists. Remember you cna stop the watcher if you don't want to 436condition persists. Remember you cna stop the watcher if you don't want to
437act on the event and neither want to receive future events).</p> 437act on the event and neither want to receive future events).</p>
550<pre> ev_periodic_set (&amp;periodic, 0., 3600., 0); 550<pre> ev_periodic_set (&amp;periodic, 0., 3600., 0);
551 551
552</pre> 552</pre>
553 <p>This doesn't mean there will always be 3600 seconds in between triggers, 553 <p>This doesn't mean there will always be 3600 seconds in between triggers,
554but only that the the callback will be called when the system time shows a 554but only that the the callback will be called when the system time shows a
555full hour (UTC), or more correct, when the system time is evenly divisible 555full hour (UTC), or more correctly, when the system time is evenly divisible
556by 3600.</p> 556by 3600.</p>
557 <p>Another way to think about it (for the mathematically inclined) is that 557 <p>Another way to think about it (for the mathematically inclined) is that
558<code>ev_periodic</code> will try to run the callback in this mode at the next possible 558<code>ev_periodic</code> will try to run the callback in this mode at the next possible
559time where <code>time = at (mod interval)</code>, regardless of any time jumps.</p> 559time where <code>time = at (mod interval)</code>, regardless of any time jumps.</p>
560 </dd> 560 </dd>
563 <p>In this mode the values for <code>interval</code> and <code>at</code> are both being 563 <p>In this mode the values for <code>interval</code> and <code>at</code> are both being
564ignored. Instead, each time the periodic watcher gets scheduled, the 564ignored. Instead, each time the periodic watcher gets scheduled, the
565reschedule callback will be called with the watcher as first, and the 565reschedule callback will be called with the watcher as first, and the
566current time as second argument.</p> 566current time as second argument.</p>
567 <p>NOTE: <i>This callback MUST NOT stop or destroy the periodic or any other 567 <p>NOTE: <i>This callback MUST NOT stop or destroy the periodic or any other
568periodic watcher, ever, or make any event loop modificstions</i>. If you need 568periodic watcher, ever, or make any event loop modifications</i>. If you need
569to stop it, return 1e30 (or so, fudge fudge) and stop it afterwards.</p> 569to stop it, return <code>now + 1e30</code> (or so, fudge fudge) and stop it afterwards.</p>
570 <p>Also, <i>this callback must always return a time that is later than the
571passed <code>now</code> value</i>. Not even <code>now</code> itself will be ok.</p>
570 <p>Its prototype is c&lt;ev_tstamp (*reschedule_cb)(struct ev_periodic *w, 572 <p>Its prototype is <code>ev_tstamp (*reschedule_cb)(struct ev_periodic *w,
571ev_tstamp now)&gt;, e.g.:</p> 573ev_tstamp now)</code>, e.g.:</p>
572<pre> static ev_tstamp my_rescheduler (struct ev_periodic *w, ev_tstamp now) 574<pre> static ev_tstamp my_rescheduler (struct ev_periodic *w, ev_tstamp now)
573 { 575 {
574 return now + 60.; 576 return now + 60.;
575 } 577 }
576 578

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines