… | |
… | |
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="<standard input>" /> |
7 | <meta name="inputfile" content="<standard input>" /> |
8 | <meta name="outputfile" content="<standard output>" /> |
8 | <meta name="outputfile" content="<standard output>" /> |
9 | <meta name="created" content="Mon Nov 12 09:46:59 2007" /> |
9 | <meta name="created" content="Mon Nov 12 09:58:24 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 --> |
… | |
… | |
17 | <ul><li><a href="#NAME">NAME</a></li> |
17 | <ul><li><a href="#NAME">NAME</a></li> |
18 | <li><a href="#SYNOPSIS">SYNOPSIS</a></li> |
18 | <li><a href="#SYNOPSIS">SYNOPSIS</a></li> |
19 | <li><a href="#DESCRIPTION">DESCRIPTION</a></li> |
19 | <li><a href="#DESCRIPTION">DESCRIPTION</a></li> |
20 | <li><a href="#FEATURES">FEATURES</a></li> |
20 | <li><a href="#FEATURES">FEATURES</a></li> |
21 | <li><a href="#CONVENTIONS">CONVENTIONS</a></li> |
21 | <li><a href="#CONVENTIONS">CONVENTIONS</a></li> |
|
|
22 | <li><a href="#TIME_REPRESENTATION">TIME REPRESENTATION</a></li> |
22 | <li><a href="#TIME_AND_OTHER_GLOBAL_FUNCTIONS">TIME AND OTHER GLOBAL FUNCTIONS</a></li> |
23 | <li><a href="#GLOBAL_FUNCTIONS">GLOBAL FUNCTIONS</a></li> |
23 | <li><a href="#FUNCTIONS_CONTROLLING_THE_EVENT_LOOP">FUNCTIONS CONTROLLING THE EVENT LOOP</a></li> |
24 | <li><a href="#FUNCTIONS_CONTROLLING_THE_EVENT_LOOP">FUNCTIONS CONTROLLING THE EVENT LOOP</a></li> |
24 | <li><a href="#ANATOMY_OF_A_WATCHER">ANATOMY OF A WATCHER</a> |
25 | <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> |
26 | <ul><li><a href="#ASSOCIATING_CUSTOM_DATA_WITH_A_WATCH">ASSOCIATING CUSTOM DATA WITH A WATCHER</a></li> |
26 | </ul> |
27 | </ul> |
27 | </li> |
28 | </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_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</a></li> |
32 | <li><a href="#code_ev_periodic_code_to_cron_or_not"><code>ev_periodic</code> - to cron or not to cron</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_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> |
34 | <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> |
35 | <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> |
35 | <li><a href="#code_ev_prepare_code_and_code_ev_che"><code>ev_prepare</code> and <code>ev_check</code> - your hooks into the event loop</a></li> |
36 | <li><a href="#code_ev_prepare_code_and_code_ev_che"><code>ev_prepare</code> and <code>ev_check</code> - customise your event loop</a></li> |
36 | </ul> |
37 | </ul> |
37 | </li> |
38 | </li> |
38 | <li><a href="#OTHER_FUNCTIONS">OTHER FUNCTIONS</a></li> |
39 | <li><a href="#OTHER_FUNCTIONS">OTHER FUNCTIONS</a></li> |
39 | <li><a href="#AUTHOR">AUTHOR</a> |
40 | <li><a href="#AUTHOR">AUTHOR</a> |
40 | </li> |
41 | </li> |
… | |
… | |
87 | support for multiple event loops, then all functions taking an initial |
88 | support for multiple event loops, then all functions taking an initial |
88 | argument of name <code>loop</code> (which is always of type <code>struct ev_loop *</code>) |
89 | argument of name <code>loop</code> (which is always of type <code>struct ev_loop *</code>) |
89 | will not have this argument.</p> |
90 | will not have this argument.</p> |
90 | |
91 | |
91 | </div> |
92 | </div> |
92 | <h1 id="TIME_AND_OTHER_GLOBAL_FUNCTIONS">TIME AND OTHER GLOBAL FUNCTIONS</h1><p><a href="#TOP" class="toplink">Top</a></p> |
93 | <h1 id="TIME_REPRESENTATION">TIME REPRESENTATION</h1><p><a href="#TOP" class="toplink">Top</a></p> |
93 | <div id="TIME_AND_OTHER_GLOBAL_FUNCTIONS_CONT"> |
94 | <div id="TIME_REPRESENTATION_CONTENT"> |
94 | <p>Libev represents time as a single floating point number, representing the |
95 | <p>Libev represents time as a single floating point number, representing the |
95 | (fractional) number of seconds since the (POSIX) epoch (somewhere near |
96 | (fractional) number of seconds since the (POSIX) epoch (somewhere near |
96 | the beginning of 1970, details are complicated, don't ask). This type is |
97 | the beginning of 1970, details are complicated, don't ask). This type is |
97 | called <code>ev_tstamp</code>, which is what you should use too. It usually aliases |
98 | called <code>ev_tstamp</code>, which is what you should use too. It usually aliases |
98 | to the double type in C.</p> |
99 | to the double type in C.</p> |
|
|
100 | |
|
|
101 | </div> |
|
|
102 | <h1 id="GLOBAL_FUNCTIONS">GLOBAL FUNCTIONS</h1><p><a href="#TOP" class="toplink">Top</a></p> |
|
|
103 | <div id="GLOBAL_FUNCTIONS_CONTENT"> |
99 | <dl> |
104 | <dl> |
100 | <dt>ev_tstamp ev_time ()</dt> |
105 | <dt>ev_tstamp ev_time ()</dt> |
101 | <dd> |
106 | <dd> |
102 | <p>Returns the current time as libev would use it.</p> |
107 | <p>Returns the current time as libev would use it.</p> |
103 | </dd> |
108 | </dd> |
… | |
… | |
142 | <div id="FUNCTIONS_CONTROLLING_THE_EVENT_LOOP-2"> |
147 | <div id="FUNCTIONS_CONTROLLING_THE_EVENT_LOOP-2"> |
143 | <p>An event loop is described by a <code>struct ev_loop *</code>. The library knows two |
148 | <p>An event loop is described by a <code>struct ev_loop *</code>. The library knows two |
144 | types of such loops, the <i>default</i> loop, which supports signals and child |
149 | types of such loops, the <i>default</i> loop, which supports signals and child |
145 | events, and dynamically created loops which do not.</p> |
150 | events, and dynamically created loops which do not.</p> |
146 | <p>If you use threads, a common model is to run the default event loop |
151 | <p>If you use threads, a common model is to run the default event loop |
147 | in your main thread (or in a separate thrad) and for each thread you |
152 | in your main thread (or in a separate thread) and for each thread you |
148 | create, you also create another event loop. Libev itself does no locking |
153 | create, you also create another event loop. Libev itself does no locking |
149 | whatsoever, so if you mix calls to the same event loop in different |
154 | whatsoever, so if you mix calls to the same event loop in different |
150 | threads, make sure you lock (this is usually a bad idea, though, even if |
155 | threads, make sure you lock (this is usually a bad idea, though, even if |
151 | done correctly, because it's hideous and inefficient).</p> |
156 | done correctly, because it's hideous and inefficient).</p> |
152 | <dl> |
157 | <dl> |
… | |
… | |
662 | believe me.</p> |
667 | believe me.</p> |
663 | </dd> |
668 | </dd> |
664 | </dl> |
669 | </dl> |
665 | |
670 | |
666 | </div> |
671 | </div> |
667 | <h2 id="code_ev_prepare_code_and_code_ev_che"><code>ev_prepare</code> and <code>ev_check</code> - your hooks into the event loop</h2> |
672 | <h2 id="code_ev_prepare_code_and_code_ev_che"><code>ev_prepare</code> and <code>ev_check</code> - customise your event loop</h2> |
668 | <div id="code_ev_prepare_code_and_code_ev_che-2"> |
673 | <div id="code_ev_prepare_code_and_code_ev_che-2"> |
669 | <p>Prepare and check watchers are usually (but not always) used in tandem: |
674 | <p>Prepare and check watchers are usually (but not always) used in tandem: |
670 | Prepare watchers get invoked before the process blocks and check watchers |
675 | Prepare watchers get invoked before the process blocks and check watchers |
671 | afterwards.</p> |
676 | afterwards.</p> |
672 | <p>Their main purpose is to integrate other event mechanisms into libev. This |
677 | <p>Their main purpose is to integrate other event mechanisms into libev. This |