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

Comparing libev/ev.pod (file contents):
Revision 1.331 by root, Sun Oct 24 21:51:03 2010 UTC vs.
Revision 1.335 by root, Mon Oct 25 10:32:05 2010 UTC

77on event-based programming, nor will it introduce event-based programming 77on event-based programming, nor will it introduce event-based programming
78with libev. 78with libev.
79 79
80Familiarity with event based programming techniques in general is assumed 80Familiarity with event based programming techniques in general is assumed
81throughout this document. 81throughout this document.
82
83=head1 WHAT TO READ WHEN IN A HURRY
84
85This manual tries to be very detailed, but unfortunately, this also makes
86it very long. If you just want to know the basics of libev, I suggest
87reading L<ANATOMY OF A WATCHER>, then the L<EXAMPLE PROGRAM> above and
88look up the missing functions in L<GLOBAL FUNCTIONS> and the C<ev_io> and
89C<ev_timer> sections in L<WATCHER TYPES>.
82 90
83=head1 ABOUT LIBEV 91=head1 ABOUT LIBEV
84 92
85Libev is an event loop: you register interest in certain events (such as a 93Libev is an event loop: you register interest in certain events (such as a
86file descriptor being readable or a timeout occurring), and it will manage 94file descriptor being readable or a timeout occurring), and it will manage
1146programs, though, as the fd could already be closed and reused for another 1154programs, though, as the fd could already be closed and reused for another
1147thing, so beware. 1155thing, so beware.
1148 1156
1149=back 1157=back
1150 1158
1151=head2 WATCHER STATES
1152
1153There are various watcher states mentioned throughout this manual -
1154active, pending and so on. In this section these states and the rules to
1155transition between them will be described in more detail - and while these
1156rules might look complicated, they usually do "the right thing".
1157
1158=over 4
1159
1160=item initialiased
1161
1162Before a watcher can be registered with the event looop it has to be
1163initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1164C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1165
1166In this state it is simply some block of memory that is suitable for use
1167in an event loop. It can be moved around, freed, reused etc. at will.
1168
1169=item started/running/active
1170
1171Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1172property of the event loop, and is actively waiting for events. While in
1173this state it cannot be accessed (except in a few documented ways), moved,
1174freed or anything else - the only legal thing is to keep a pointer to it,
1175and call libev functions on it that are documented to work on active watchers.
1176
1177=item pending
1178
1179If a watcher is active and libev determines that an event it is interested
1180in has occurred (such as a timer expiring), it will become pending. It will
1181stay in this pending state until either it is stopped or its callback is
1182about to be invoked, so it is not normally pending inside the watcher
1183callback.
1184
1185The watcher might or might not be active while it is pending (for example,
1186an expired non-repeating timer can be pending but no longer active). If it
1187is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1188but it is still property of the event loop at this time, so cannot be
1189moved, freed or reused. And if it is active the rules described in the
1190previous item still apply.
1191
1192It is also possible to feed an event on a watcher that is not active (e.g.
1193via C<ev_feed_event>), in which case it becomes pending without being
1194active.
1195
1196=item stopped
1197
1198A watcher can be stopped implicitly by libev (in which case it might still
1199be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1200latter will clear any pending state the watcher might be in, regardless
1201of whether it was active or not, so stopping a watcher explicitly before
1202freeing it is often a good idea.
1203
1204While stopped (and not pending) the watcher is essentially in the
1205initialised state, that is it can be reused, moved, modified in any way
1206you wish.
1207
1208=back
1209
1210=head2 GENERIC WATCHER FUNCTIONS 1159=head2 GENERIC WATCHER FUNCTIONS
1211 1160
1212=over 4 1161=over 4
1213 1162
1214=item C<ev_init> (ev_TYPE *watcher, callback) 1163=item C<ev_init> (ev_TYPE *watcher, callback)
1355 1304
1356See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related 1305See also C<ev_feed_fd_event> and C<ev_feed_signal_event> for related
1357functions that do not need a watcher. 1306functions that do not need a watcher.
1358 1307
1359=back 1308=back
1360
1361 1309
1362=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER 1310=head2 ASSOCIATING CUSTOM DATA WITH A WATCHER
1363 1311
1364Each watcher has, by default, a member C<void *data> that you can change 1312Each watcher has, by default, a member C<void *data> that you can change
1365and read at any time: libev will completely ignore it. This can be used 1313and read at any time: libev will completely ignore it. This can be used
1421 t2_cb (EV_P_ ev_timer *w, int revents) 1369 t2_cb (EV_P_ ev_timer *w, int revents)
1422 { 1370 {
1423 struct my_biggy big = (struct my_biggy *) 1371 struct my_biggy big = (struct my_biggy *)
1424 (((char *)w) - offsetof (struct my_biggy, t2)); 1372 (((char *)w) - offsetof (struct my_biggy, t2));
1425 } 1373 }
1374
1375=head2 WATCHER STATES
1376
1377There are various watcher states mentioned throughout this manual -
1378active, pending and so on. In this section these states and the rules to
1379transition between them will be described in more detail - and while these
1380rules might look complicated, they usually do "the right thing".
1381
1382=over 4
1383
1384=item initialiased
1385
1386Before a watcher can be registered with the event looop it has to be
1387initialised. This can be done with a call to C<ev_TYPE_init>, or calls to
1388C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function.
1389
1390In this state it is simply some block of memory that is suitable for use
1391in an event loop. It can be moved around, freed, reused etc. at will.
1392
1393=item started/running/active
1394
1395Once a watcher has been started with a call to C<ev_TYPE_start> it becomes
1396property of the event loop, and is actively waiting for events. While in
1397this state it cannot be accessed (except in a few documented ways), moved,
1398freed or anything else - the only legal thing is to keep a pointer to it,
1399and call libev functions on it that are documented to work on active watchers.
1400
1401=item pending
1402
1403If a watcher is active and libev determines that an event it is interested
1404in has occurred (such as a timer expiring), it will become pending. It will
1405stay in this pending state until either it is stopped or its callback is
1406about to be invoked, so it is not normally pending inside the watcher
1407callback.
1408
1409The watcher might or might not be active while it is pending (for example,
1410an expired non-repeating timer can be pending but no longer active). If it
1411is stopped, it can be freely accessed (e.g. by calling C<ev_TYPE_set>),
1412but it is still property of the event loop at this time, so cannot be
1413moved, freed or reused. And if it is active the rules described in the
1414previous item still apply.
1415
1416It is also possible to feed an event on a watcher that is not active (e.g.
1417via C<ev_feed_event>), in which case it becomes pending without being
1418active.
1419
1420=item stopped
1421
1422A watcher can be stopped implicitly by libev (in which case it might still
1423be pending), or explicitly by calling its C<ev_TYPE_stop> function. The
1424latter will clear any pending state the watcher might be in, regardless
1425of whether it was active or not, so stopping a watcher explicitly before
1426freeing it is often a good idea.
1427
1428While stopped (and not pending) the watcher is essentially in the
1429initialised state, that is it can be reused, moved, modified in any way
1430you wish.
1431
1432=back
1426 1433
1427=head2 WATCHER PRIORITY MODELS 1434=head2 WATCHER PRIORITY MODELS
1428 1435
1429Many event loops support I<watcher priorities>, which are usually small 1436Many event loops support I<watcher priorities>, which are usually small
1430integers that influence the ordering of event callback invocation 1437integers that influence the ordering of event callback invocation
4757structure (guaranteed by POSIX but not by ISO C for example), but it also 4764structure (guaranteed by POSIX but not by ISO C for example), but it also
4758assumes that the same (machine) code can be used to call any watcher 4765assumes that the same (machine) code can be used to call any watcher
4759callback: The watcher callbacks have different type signatures, but libev 4766callback: The watcher callbacks have different type signatures, but libev
4760calls them using an C<ev_watcher *> internally. 4767calls them using an C<ev_watcher *> internally.
4761 4768
4769=item pointer accesses must be thread-atomic
4770
4771Accessing a pointer value must be atomic, it must both be readable and
4772writable in one piece - this is the case on all current architectures.
4773
4762=item C<sig_atomic_t volatile> must be thread-atomic as well 4774=item C<sig_atomic_t volatile> must be thread-atomic as well
4763 4775
4764The type C<sig_atomic_t volatile> (or whatever is defined as 4776The type C<sig_atomic_t volatile> (or whatever is defined as
4765C<EV_ATOMIC_T>) must be atomic with respect to accesses from different 4777C<EV_ATOMIC_T>) must be atomic with respect to accesses from different
4766threads. This is not part of the specification for C<sig_atomic_t>, but is 4778threads. This is not part of the specification for C<sig_atomic_t>, but is
4872=back 4884=back
4873 4885
4874 4886
4875=head1 PORTING FROM LIBEV 3.X TO 4.X 4887=head1 PORTING FROM LIBEV 3.X TO 4.X
4876 4888
4877The major version 4 introduced some minor incompatible changes to the API. 4889The major version 4 introduced some incompatible changes to the API.
4878 4890
4879At the moment, the C<ev.h> header file tries to implement superficial 4891At the moment, the C<ev.h> header file provides compatibility definitions
4880compatibility, so most programs should still compile. Those might be 4892for all changes, so most programs should still compile. The compatibility
4881removed in later versions of libev, so better update early than late. 4893layer might be removed in later versions of libev, so better update to the
4894new API early than late.
4882 4895
4883=over 4 4896=over 4
4897
4898=item C<EV_COMPAT3> backwards compatibility mechanism
4899
4900The backward compatibility mechanism can be controlled by
4901C<EV_COMPAT3>. See L<PREPROCESSOR SYMBOLS/MACROS> in the L<EMBEDDING>
4902section.
4884 4903
4885=item C<ev_default_destroy> and C<ev_default_fork> have been removed 4904=item C<ev_default_destroy> and C<ev_default_fork> have been removed
4886 4905
4887These calls can be replaced easily by their C<ev_loop_xxx> counterparts: 4906These calls can be replaced easily by their C<ev_loop_xxx> counterparts:
4888 4907
4914ev_loop> anymore and C<EV_TIMER> now follows the same naming scheme 4933ev_loop> anymore and C<EV_TIMER> now follows the same naming scheme
4915as all other watcher types. Note that C<ev_loop_fork> is still called 4934as all other watcher types. Note that C<ev_loop_fork> is still called
4916C<ev_loop_fork> because it would otherwise clash with the C<ev_fork> 4935C<ev_loop_fork> because it would otherwise clash with the C<ev_fork>
4917typedef. 4936typedef.
4918 4937
4919=item C<EV_COMPAT3> backwards compatibility mechanism
4920
4921The backward compatibility mechanism can be controlled by
4922C<EV_COMPAT3>. See L<PREPROCESSOR SYMBOLS/MACROS> in the L<EMBEDDING>
4923section.
4924
4925=item C<EV_MINIMAL> mechanism replaced by C<EV_FEATURES> 4938=item C<EV_MINIMAL> mechanism replaced by C<EV_FEATURES>
4926 4939
4927The preprocessor symbol C<EV_MINIMAL> has been replaced by a different 4940The preprocessor symbol C<EV_MINIMAL> has been replaced by a different
4928mechanism, C<EV_FEATURES>. Programs using C<EV_MINIMAL> usually compile 4941mechanism, C<EV_FEATURES>. Programs using C<EV_MINIMAL> usually compile
4929and work, but the library code will of course be larger. 4942and work, but the library code will of course be larger.
5003 5016
5004=back 5017=back
5005 5018
5006=head1 AUTHOR 5019=head1 AUTHOR
5007 5020
5008Marc Lehmann <libev@schmorp.de>, with repeated corrections by Mikael Magnusson. 5021Marc Lehmann <libev@schmorp.de>, with repeated corrections by Mikael
5022Magnusson and Emanuele Giaquinta.
5009 5023

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines