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

Comparing libev/ev.pod (file contents):
Revision 1.40 by root, Sat Nov 24 10:15:16 2007 UTC vs.
Revision 1.48 by root, Tue Nov 27 08:11:52 2007 UTC

468 ev_ref (myloop); 468 ev_ref (myloop);
469 ev_signal_stop (myloop, &exitsig); 469 ev_signal_stop (myloop, &exitsig);
470 470
471=back 471=back
472 472
473
473=head1 ANATOMY OF A WATCHER 474=head1 ANATOMY OF A WATCHER
474 475
475A watcher is a structure that you create and register to record your 476A watcher is a structure that you create and register to record your
476interest in some event. For instance, if you want to wait for STDIN to 477interest in some event. For instance, if you want to wait for STDIN to
477become readable, you would create an C<ev_io> watcher for that: 478become readable, you would create an C<ev_io> watcher for that:
543The signal specified in the C<ev_signal> watcher has been received by a thread. 544The signal specified in the C<ev_signal> watcher has been received by a thread.
544 545
545=item C<EV_CHILD> 546=item C<EV_CHILD>
546 547
547The pid specified in the C<ev_child> watcher has received a status change. 548The pid specified in the C<ev_child> watcher has received a status change.
549
550=item C<EV_STAT>
551
552The path specified in the C<ev_stat> watcher changed its attributes somehow.
548 553
549=item C<EV_IDLE> 554=item C<EV_IDLE>
550 555
551The C<ev_idle> watcher has determined that you have nothing better to do. 556The C<ev_idle> watcher has determined that you have nothing better to do.
552 557
576with the error from read() or write(). This will not work in multithreaded 581with the error from read() or write(). This will not work in multithreaded
577programs, though, so beware. 582programs, though, so beware.
578 583
579=back 584=back
580 585
581=head2 SUMMARY OF GENERIC WATCHER FUNCTIONS 586=head2 GENERIC WATCHER FUNCTIONS
582 587
583In the following description, C<TYPE> stands for the watcher type, 588In the following description, C<TYPE> stands for the watcher type,
584e.g. C<timer> for C<ev_timer> watchers and C<io> for C<ev_io> watchers. 589e.g. C<timer> for C<ev_timer> watchers and C<io> for C<ev_io> watchers.
585 590
586=over 4 591=over 4
595which rolls both calls into one. 600which rolls both calls into one.
596 601
597You can reinitialise a watcher at any time as long as it has been stopped 602You can reinitialise a watcher at any time as long as it has been stopped
598(or never started) and there are no pending events outstanding. 603(or never started) and there are no pending events outstanding.
599 604
600The callbakc is always of type C<void (*)(ev_loop *loop, ev_TYPE *watcher, 605The callback is always of type C<void (*)(ev_loop *loop, ev_TYPE *watcher,
601int revents)>. 606int revents)>.
602 607
603=item C<ev_TYPE_set> (ev_TYPE *, [args]) 608=item C<ev_TYPE_set> (ev_TYPE *, [args])
604 609
605This macro initialises the type-specific parts of a watcher. You need to 610This macro initialises the type-specific parts of a watcher. You need to
688 693
689 694
690=head1 WATCHER TYPES 695=head1 WATCHER TYPES
691 696
692This section describes each watcher in detail, but will not repeat 697This section describes each watcher in detail, but will not repeat
693information given in the last section. 698information given in the last section. Any initialisation/set macros,
699functions and members specific to the watcher type are explained.
694 700
701Members are additionally marked with either I<[read-only]>, meaning that,
702while the watcher is active, you can look at the member and expect some
703sensible content, but you must not modify it (you can modify it while the
704watcher is stopped to your hearts content), or I<[read-write]>, which
705means you can expect it to have some sensible content while the watcher
706is active, but you can also modify it. Modifying it may not do something
707sensible or take immediate effect (or do anything at all), but libev will
708not crash or malfunction in any way.
695 709
710
696=head2 C<ev_io> - is this file descriptor readable or writable 711=head2 C<ev_io> - is this file descriptor readable or writable?
697 712
698I/O watchers check whether a file descriptor is readable or writable 713I/O watchers check whether a file descriptor is readable or writable
699in each iteration of the event loop (This behaviour is called 714in each iteration of the event loop, or, more precisely, when reading
700level-triggering because you keep receiving events as long as the 715would not block the process and writing would at least be able to write
701condition persists. Remember you can stop the watcher if you don't want to 716some data. This behaviour is called level-triggering because you keep
702act on the event and neither want to receive future events). 717receiving events as long as the condition persists. Remember you can stop
718the watcher if you don't want to act on the event and neither want to
719receive future events.
703 720
704In general you can register as many read and/or write event watchers per 721In general you can register as many read and/or write event watchers per
705fd as you want (as long as you don't confuse yourself). Setting all file 722fd as you want (as long as you don't confuse yourself). Setting all file
706descriptors to non-blocking mode is also usually a good idea (but not 723descriptors to non-blocking mode is also usually a good idea (but not
707required if you know what you are doing). 724required if you know what you are doing).
708 725
709You have to be careful with dup'ed file descriptors, though. Some backends 726You have to be careful with dup'ed file descriptors, though. Some backends
710(the linux epoll backend is a notable example) cannot handle dup'ed file 727(the linux epoll backend is a notable example) cannot handle dup'ed file
711descriptors correctly if you register interest in two or more fds pointing 728descriptors correctly if you register interest in two or more fds pointing
712to the same underlying file/socket etc. description (that is, they share 729to the same underlying file/socket/etc. description (that is, they share
713the same underlying "file open"). 730the same underlying "file open").
714 731
715If you must do this, then force the use of a known-to-be-good backend 732If you must do this, then force the use of a known-to-be-good backend
716(at the time of this writing, this includes only C<EVBACKEND_SELECT> and 733(at the time of this writing, this includes only C<EVBACKEND_SELECT> and
717C<EVBACKEND_POLL>). 734C<EVBACKEND_POLL>).
718 735
736Another thing you have to watch out for is that it is quite easy to
737receive "spurious" readyness notifications, that is your callback might
738be called with C<EV_READ> but a subsequent C<read>(2) will actually block
739because there is no data. Not only are some backends known to create a
740lot of those (for example solaris ports), it is very easy to get into
741this situation even with a relatively standard program structure. Thus
742it is best to always use non-blocking I/O: An extra C<read>(2) returning
743C<EAGAIN> is far preferable to a program hanging until some data arrives.
744
745If you cannot run the fd in non-blocking mode (for example you should not
746play around with an Xlib connection), then you have to seperately re-test
747wether a file descriptor is really ready with a known-to-be good interface
748such as poll (fortunately in our Xlib example, Xlib already does this on
749its own, so its quite safe to use).
750
719=over 4 751=over 4
720 752
721=item ev_io_init (ev_io *, callback, int fd, int events) 753=item ev_io_init (ev_io *, callback, int fd, int events)
722 754
723=item ev_io_set (ev_io *, int fd, int events) 755=item ev_io_set (ev_io *, int fd, int events)
724 756
725Configures an C<ev_io> watcher. The fd is the file descriptor to rceeive 757Configures an C<ev_io> watcher. The C<fd> is the file descriptor to
726events for and events is either C<EV_READ>, C<EV_WRITE> or C<EV_READ | 758rceeive events for and events is either C<EV_READ>, C<EV_WRITE> or
727EV_WRITE> to receive the given events. 759C<EV_READ | EV_WRITE> to receive the given events.
728 760
729Please note that most of the more scalable backend mechanisms (for example 761=item int fd [read-only]
730epoll and solaris ports) can result in spurious readyness notifications 762
731for file descriptors, so you practically need to use non-blocking I/O (and 763The file descriptor being watched.
732treat callback invocation as hint only), or retest separately with a safe 764
733interface before doing I/O (XLib can do this), or force the use of either 765=item int events [read-only]
734C<EVBACKEND_SELECT> or C<EVBACKEND_POLL>, which don't suffer from this 766
735problem. Also note that it is quite easy to have your callback invoked 767The events being watched.
736when the readyness condition is no longer valid even when employing
737typical ways of handling events, so its a good idea to use non-blocking
738I/O unconditionally.
739 768
740=back 769=back
741 770
742Example: call C<stdin_readable_cb> when STDIN_FILENO has become, well 771Example: call C<stdin_readable_cb> when STDIN_FILENO has become, well
743readable, but only once. Since it is likely line-buffered, you could 772readable, but only once. Since it is likely line-buffered, you could
756 ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ); 785 ev_io_init (&stdin_readable, stdin_readable_cb, STDIN_FILENO, EV_READ);
757 ev_io_start (loop, &stdin_readable); 786 ev_io_start (loop, &stdin_readable);
758 ev_loop (loop, 0); 787 ev_loop (loop, 0);
759 788
760 789
761=head2 C<ev_timer> - relative and optionally recurring timeouts 790=head2 C<ev_timer> - relative and optionally repeating timeouts
762 791
763Timer watchers are simple relative timers that generate an event after a 792Timer watchers are simple relative timers that generate an event after a
764given time, and optionally repeating in regular intervals after that. 793given time, and optionally repeating in regular intervals after that.
765 794
766The timers are based on real time, that is, if you register an event that 795The timers are based on real time, that is, if you register an event that
807 836
808If the timer is repeating, either start it if necessary (with the repeat 837If the timer is repeating, either start it if necessary (with the repeat
809value), or reset the running timer to the repeat value. 838value), or reset the running timer to the repeat value.
810 839
811This sounds a bit complicated, but here is a useful and typical 840This sounds a bit complicated, but here is a useful and typical
812example: Imagine you have a tcp connection and you want a so-called idle 841example: Imagine you have a tcp connection and you want a so-called
813timeout, that is, you want to be called when there have been, say, 60 842idle timeout, that is, you want to be called when there have been,
814seconds of inactivity on the socket. The easiest way to do this is to 843say, 60 seconds of inactivity on the socket. The easiest way to do
815configure an C<ev_timer> with after=repeat=60 and calling ev_timer_again each 844this is to configure an C<ev_timer> with C<after>=C<repeat>=C<60> and calling
816time you successfully read or write some data. If you go into an idle 845C<ev_timer_again> each time you successfully read or write some data. If
817state where you do not expect data to travel on the socket, you can stop 846you go into an idle state where you do not expect data to travel on the
818the timer, and again will automatically restart it if need be. 847socket, you can stop the timer, and again will automatically restart it if
848need be.
849
850You can also ignore the C<after> value and C<ev_timer_start> altogether
851and only ever use the C<repeat> value:
852
853 ev_timer_init (timer, callback, 0., 5.);
854 ev_timer_again (loop, timer);
855 ...
856 timer->again = 17.;
857 ev_timer_again (loop, timer);
858 ...
859 timer->again = 10.;
860 ev_timer_again (loop, timer);
861
862This is more efficient then stopping/starting the timer eahc time you want
863to modify its timeout value.
864
865=item ev_tstamp repeat [read-write]
866
867The current C<repeat> value. Will be used each time the watcher times out
868or C<ev_timer_again> is called and determines the next timeout (if any),
869which is also when any modifications are taken into account.
819 870
820=back 871=back
821 872
822Example: create a timer that fires after 60 seconds. 873Example: create a timer that fires after 60 seconds.
823 874
848 // and in some piece of code that gets executed on any "activity": 899 // and in some piece of code that gets executed on any "activity":
849 // reset the timeout to start ticking again at 10 seconds 900 // reset the timeout to start ticking again at 10 seconds
850 ev_timer_again (&mytimer); 901 ev_timer_again (&mytimer);
851 902
852 903
853=head2 C<ev_periodic> - to cron or not to cron 904=head2 C<ev_periodic> - to cron or not to cron?
854 905
855Periodic watchers are also timers of a kind, but they are very versatile 906Periodic watchers are also timers of a kind, but they are very versatile
856(and unfortunately a bit complex). 907(and unfortunately a bit complex).
857 908
858Unlike C<ev_timer>'s, they are not based on real time (or relative time) 909Unlike C<ev_timer>'s, they are not based on real time (or relative time)
950Simply stops and restarts the periodic watcher again. This is only useful 1001Simply stops and restarts the periodic watcher again. This is only useful
951when you changed some parameters or the reschedule callback would return 1002when you changed some parameters or the reschedule callback would return
952a different time than the last time it was called (e.g. in a crond like 1003a different time than the last time it was called (e.g. in a crond like
953program when the crontabs have changed). 1004program when the crontabs have changed).
954 1005
1006=item ev_tstamp interval [read-write]
1007
1008The current interval value. Can be modified any time, but changes only
1009take effect when the periodic timer fires or C<ev_periodic_again> is being
1010called.
1011
1012=item ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write]
1013
1014The current reschedule callback, or C<0>, if this functionality is
1015switched off. Can be changed any time, but changes only take effect when
1016the periodic timer fires or C<ev_periodic_again> is being called.
1017
955=back 1018=back
956 1019
957Example: call a callback every hour, or, more precisely, whenever the 1020Example: call a callback every hour, or, more precisely, whenever the
958system clock is divisible by 3600. The callback invocation times have 1021system clock is divisible by 3600. The callback invocation times have
959potentially a lot of jittering, but good long-term stability. 1022potentially a lot of jittering, but good long-term stability.
986 ev_periodic_init (&hourly_tick, clock_cb, 1049 ev_periodic_init (&hourly_tick, clock_cb,
987 fmod (ev_now (loop), 3600.), 3600., 0); 1050 fmod (ev_now (loop), 3600.), 3600., 0);
988 ev_periodic_start (loop, &hourly_tick); 1051 ev_periodic_start (loop, &hourly_tick);
989 1052
990 1053
991=head2 C<ev_signal> - signal me when a signal gets signalled 1054=head2 C<ev_signal> - signal me when a signal gets signalled!
992 1055
993Signal watchers will trigger an event when the process receives a specific 1056Signal watchers will trigger an event when the process receives a specific
994signal one or more times. Even though signals are very asynchronous, libev 1057signal one or more times. Even though signals are very asynchronous, libev
995will try it's best to deliver signals synchronously, i.e. as part of the 1058will try it's best to deliver signals synchronously, i.e. as part of the
996normal event processing, like any other event. 1059normal event processing, like any other event.
1009=item ev_signal_set (ev_signal *, int signum) 1072=item ev_signal_set (ev_signal *, int signum)
1010 1073
1011Configures the watcher to trigger on the given signal number (usually one 1074Configures the watcher to trigger on the given signal number (usually one
1012of the C<SIGxxx> constants). 1075of the C<SIGxxx> constants).
1013 1076
1077=item int signum [read-only]
1078
1079The signal the watcher watches out for.
1080
1014=back 1081=back
1015 1082
1016 1083
1017=head2 C<ev_child> - wait for pid status changes 1084=head2 C<ev_child> - watch out for process status changes
1018 1085
1019Child watchers trigger when your process receives a SIGCHLD in response to 1086Child watchers trigger when your process receives a SIGCHLD in response to
1020some child status changes (most typically when a child of yours dies). 1087some child status changes (most typically when a child of yours dies).
1021 1088
1022=over 4 1089=over 4
1030at the C<rstatus> member of the C<ev_child> watcher structure to see 1097at the C<rstatus> member of the C<ev_child> watcher structure to see
1031the status word (use the macros from C<sys/wait.h> and see your systems 1098the status word (use the macros from C<sys/wait.h> and see your systems
1032C<waitpid> documentation). The C<rpid> member contains the pid of the 1099C<waitpid> documentation). The C<rpid> member contains the pid of the
1033process causing the status change. 1100process causing the status change.
1034 1101
1102=item int pid [read-only]
1103
1104The process id this watcher watches out for, or C<0>, meaning any process id.
1105
1106=item int rpid [read-write]
1107
1108The process id that detected a status change.
1109
1110=item int rstatus [read-write]
1111
1112The process exit/trace status caused by C<rpid> (see your systems
1113C<waitpid> and C<sys/wait.h> documentation for details).
1114
1035=back 1115=back
1036 1116
1037Example: try to exit cleanly on SIGINT and SIGTERM. 1117Example: try to exit cleanly on SIGINT and SIGTERM.
1038 1118
1039 static void 1119 static void
1045 struct ev_signal signal_watcher; 1125 struct ev_signal signal_watcher;
1046 ev_signal_init (&signal_watcher, sigint_cb, SIGINT); 1126 ev_signal_init (&signal_watcher, sigint_cb, SIGINT);
1047 ev_signal_start (loop, &sigint_cb); 1127 ev_signal_start (loop, &sigint_cb);
1048 1128
1049 1129
1130=head2 C<ev_stat> - did the file attributes just change?
1131
1132This watches a filesystem path for attribute changes. That is, it calls
1133C<stat> regularly (or when the OS says it changed) and sees if it changed
1134compared to the last time, invoking the callback if it did.
1135
1136The path does not need to exist: changing from "path exists" to "path does
1137not exist" is a status change like any other. The condition "path does
1138not exist" is signified by the C<st_nlink> field being zero (which is
1139otherwise always forced to be at least one) and all the other fields of
1140the stat buffer having unspecified contents.
1141
1142Since there is no standard to do this, the portable implementation simply
1143calls C<stat (2)> regulalry on the path to see if it changed somehow. You
1144can specify a recommended polling interval for this case. If you specify
1145a polling interval of C<0> (highly recommended!) then a I<suitable,
1146unspecified default> value will be used (which you can expect to be around
1147five seconds, although this might change dynamically). Libev will also
1148impose a minimum interval which is currently around C<0.1>, but thats
1149usually overkill.
1150
1151This watcher type is not meant for massive numbers of stat watchers,
1152as even with OS-supported change notifications, this can be
1153resource-intensive.
1154
1155At the time of this writing, no specific OS backends are implemented, but
1156if demand increases, at least a kqueue and inotify backend will be added.
1157
1158=over 4
1159
1160=item ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)
1161
1162=item ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)
1163
1164Configures the watcher to wait for status changes of the given
1165C<path>. The C<interval> is a hint on how quickly a change is expected to
1166be detected and should normally be specified as C<0> to let libev choose
1167a suitable value. The memory pointed to by C<path> must point to the same
1168path for as long as the watcher is active.
1169
1170The callback will be receive C<EV_STAT> when a change was detected,
1171relative to the attributes at the time the watcher was started (or the
1172last change was detected).
1173
1174=item ev_stat_stat (ev_stat *)
1175
1176Updates the stat buffer immediately with new values. If you change the
1177watched path in your callback, you could call this fucntion to avoid
1178detecting this change (while introducing a race condition). Can also be
1179useful simply to find out the new values.
1180
1181=item ev_statdata attr [read-only]
1182
1183The most-recently detected attributes of the file. Although the type is of
1184C<ev_statdata>, this is usually the (or one of the) C<struct stat> types
1185suitable for your system. If the C<st_nlink> member is C<0>, then there
1186was some error while C<stat>ing the file.
1187
1188=item ev_statdata prev [read-only]
1189
1190The previous attributes of the file. The callback gets invoked whenever
1191C<prev> != C<attr>.
1192
1193=item ev_tstamp interval [read-only]
1194
1195The specified interval.
1196
1197=item const char *path [read-only]
1198
1199The filesystem path that is being watched.
1200
1201=back
1202
1203Example: Watch C</etc/passwd> for attribute changes.
1204
1205 static void
1206 passwd_cb (struct ev_loop *loop, ev_stat *w, int revents)
1207 {
1208 /* /etc/passwd changed in some way */
1209 if (w->attr.st_nlink)
1210 {
1211 printf ("passwd current size %ld\n", (long)w->attr.st_size);
1212 printf ("passwd current atime %ld\n", (long)w->attr.st_mtime);
1213 printf ("passwd current mtime %ld\n", (long)w->attr.st_mtime);
1214 }
1215 else
1216 /* you shalt not abuse printf for puts */
1217 puts ("wow, /etc/passwd is not there, expect problems. "
1218 "if this is windows, they already arrived\n");
1219 }
1220
1221 ...
1222 ev_stat passwd;
1223
1224 ev_stat_init (&passwd, passwd_cb, "/etc/passwd");
1225 ev_stat_start (loop, &passwd);
1226
1227
1050=head2 C<ev_idle> - when you've got nothing better to do 1228=head2 C<ev_idle> - when you've got nothing better to do...
1051 1229
1052Idle watchers trigger events when there are no other events are pending 1230Idle watchers trigger events when there are no other events are pending
1053(prepare, check and other idle watchers do not count). That is, as long 1231(prepare, check and other idle watchers do not count). That is, as long
1054as your process is busy handling sockets or timeouts (or even signals, 1232as your process is busy handling sockets or timeouts (or even signals,
1055imagine) it will not be triggered. But when your process is idle all idle 1233imagine) it will not be triggered. But when your process is idle all idle
1089 struct ev_idle *idle_watcher = malloc (sizeof (struct ev_idle)); 1267 struct ev_idle *idle_watcher = malloc (sizeof (struct ev_idle));
1090 ev_idle_init (idle_watcher, idle_cb); 1268 ev_idle_init (idle_watcher, idle_cb);
1091 ev_idle_start (loop, idle_cb); 1269 ev_idle_start (loop, idle_cb);
1092 1270
1093 1271
1094=head2 C<ev_prepare> and C<ev_check> - customise your event loop 1272=head2 C<ev_prepare> and C<ev_check> - customise your event loop!
1095 1273
1096Prepare and check watchers are usually (but not always) used in tandem: 1274Prepare and check watchers are usually (but not always) used in tandem:
1097prepare watchers get invoked before the process blocks and check watchers 1275prepare watchers get invoked before the process blocks and check watchers
1098afterwards. 1276afterwards.
1099 1277
1278You I<must not> call C<ev_loop> or similar functions that enter
1279the current event loop from either C<ev_prepare> or C<ev_check>
1280watchers. Other loops than the current one are fine, however. The
1281rationale behind this is that you do not need to check for recursion in
1282those watchers, i.e. the sequence will always be C<ev_prepare>, blocking,
1283C<ev_check> so if you have one watcher of each kind they will always be
1284called in pairs bracketing the blocking call.
1285
1100Their main purpose is to integrate other event mechanisms into libev and 1286Their main purpose is to integrate other event mechanisms into libev and
1101their use is somewhat advanced. This could be used, for example, to track 1287their use is somewhat advanced. This could be used, for example, to track
1102variable changes, implement your own watchers, integrate net-snmp or a 1288variable changes, implement your own watchers, integrate net-snmp or a
1103coroutine library and lots more. 1289coroutine library and lots more. They are also occasionally useful if
1290you cache some data and want to flush it before blocking (for example,
1291in X programs you might want to do an C<XFlush ()> in an C<ev_prepare>
1292watcher).
1104 1293
1105This is done by examining in each prepare call which file descriptors need 1294This is done by examining in each prepare call which file descriptors need
1106to be watched by the other library, registering C<ev_io> watchers for 1295to be watched by the other library, registering C<ev_io> watchers for
1107them and starting an C<ev_timer> watcher for any timeouts (many libraries 1296them and starting an C<ev_timer> watcher for any timeouts (many libraries
1108provide just this functionality). Then, in the check watcher you check for 1297provide just this functionality). Then, in the check watcher you check for
1130parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set> 1319parameters of any kind. There are C<ev_prepare_set> and C<ev_check_set>
1131macros, but using them is utterly, utterly and completely pointless. 1320macros, but using them is utterly, utterly and completely pointless.
1132 1321
1133=back 1322=back
1134 1323
1135Example: *TODO*. 1324Example: To include a library such as adns, you would add IO watchers
1325and a timeout watcher in a prepare handler, as required by libadns, and
1326in a check watcher, destroy them and call into libadns. What follows is
1327pseudo-code only of course:
1136 1328
1329 static ev_io iow [nfd];
1330 static ev_timer tw;
1137 1331
1332 static void
1333 io_cb (ev_loop *loop, ev_io *w, int revents)
1334 {
1335 // set the relevant poll flags
1336 // could also call adns_processreadable etc. here
1337 struct pollfd *fd = (struct pollfd *)w->data;
1338 if (revents & EV_READ ) fd->revents |= fd->events & POLLIN;
1339 if (revents & EV_WRITE) fd->revents |= fd->events & POLLOUT;
1340 }
1341
1342 // create io watchers for each fd and a timer before blocking
1343 static void
1344 adns_prepare_cb (ev_loop *loop, ev_prepare *w, int revents)
1345 {
1346 int timeout = 3600000;truct pollfd fds [nfd];
1347 // actual code will need to loop here and realloc etc.
1348 adns_beforepoll (ads, fds, &nfd, &timeout, timeval_from (ev_time ()));
1349
1350 /* the callback is illegal, but won't be called as we stop during check */
1351 ev_timer_init (&tw, 0, timeout * 1e-3);
1352 ev_timer_start (loop, &tw);
1353
1354 // create on ev_io per pollfd
1355 for (int i = 0; i < nfd; ++i)
1356 {
1357 ev_io_init (iow + i, io_cb, fds [i].fd,
1358 ((fds [i].events & POLLIN ? EV_READ : 0)
1359 | (fds [i].events & POLLOUT ? EV_WRITE : 0)));
1360
1361 fds [i].revents = 0;
1362 iow [i].data = fds + i;
1363 ev_io_start (loop, iow + i);
1364 }
1365 }
1366
1367 // stop all watchers after blocking
1368 static void
1369 adns_check_cb (ev_loop *loop, ev_check *w, int revents)
1370 {
1371 ev_timer_stop (loop, &tw);
1372
1373 for (int i = 0; i < nfd; ++i)
1374 ev_io_stop (loop, iow + i);
1375
1376 adns_afterpoll (adns, fds, nfd, timeval_from (ev_now (loop));
1377 }
1378
1379
1138=head2 C<ev_embed> - when one backend isn't enough 1380=head2 C<ev_embed> - when one backend isn't enough...
1139 1381
1140This is a rather advanced watcher type that lets you embed one event loop 1382This is a rather advanced watcher type that lets you embed one event loop
1141into another (currently only C<ev_io> events are supported in the embedded 1383into another (currently only C<ev_io> events are supported in the embedded
1142loop, other types of watchers might be handled in a delayed or incorrect 1384loop, other types of watchers might be handled in a delayed or incorrect
1143fashion and must not be used). 1385fashion and must not be used).
1221 1463
1222Make a single, non-blocking sweep over the embedded loop. This works 1464Make a single, non-blocking sweep over the embedded loop. This works
1223similarly to C<ev_loop (embedded_loop, EVLOOP_NONBLOCK)>, but in the most 1465similarly to C<ev_loop (embedded_loop, EVLOOP_NONBLOCK)>, but in the most
1224apropriate way for embedded loops. 1466apropriate way for embedded loops.
1225 1467
1468=item struct ev_loop *loop [read-only]
1469
1470The embedded event loop.
1471
1226=back 1472=back
1227 1473
1228 1474
1229=head1 OTHER FUNCTIONS 1475=head1 OTHER FUNCTIONS
1230 1476
1462 ev_vars.h 1708 ev_vars.h
1463 ev_wrap.h 1709 ev_wrap.h
1464 1710
1465 ev_win32.c required on win32 platforms only 1711 ev_win32.c required on win32 platforms only
1466 1712
1467 ev_select.c only when select backend is enabled (which is is by default) 1713 ev_select.c only when select backend is enabled (which is by default)
1468 ev_poll.c only when poll backend is enabled (disabled by default) 1714 ev_poll.c only when poll backend is enabled (disabled by default)
1469 ev_epoll.c only when the epoll backend is enabled (disabled by default) 1715 ev_epoll.c only when the epoll backend is enabled (disabled by default)
1470 ev_kqueue.c only when the kqueue backend is enabled (disabled by default) 1716 ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
1471 ev_port.c only when the solaris port backend is enabled (disabled by default) 1717 ev_port.c only when the solaris port backend is enabled (disabled by default)
1472 1718
1473F<ev.c> includes the backend files directly when enabled, so you only need 1719F<ev.c> includes the backend files directly when enabled, so you only need
1474to compile a single file. 1720to compile this single file.
1475 1721
1476=head3 LIBEVENT COMPATIBILITY API 1722=head3 LIBEVENT COMPATIBILITY API
1477 1723
1478To include the libevent compatibility API, also include: 1724To include the libevent compatibility API, also include:
1479 1725
1492 1738
1493=head3 AUTOCONF SUPPORT 1739=head3 AUTOCONF SUPPORT
1494 1740
1495Instead of using C<EV_STANDALONE=1> and providing your config in 1741Instead of using C<EV_STANDALONE=1> and providing your config in
1496whatever way you want, you can also C<m4_include([libev.m4])> in your 1742whatever way you want, you can also C<m4_include([libev.m4])> in your
1497F<configure.ac> and leave C<EV_STANDALONE> off. F<ev.c> will then include 1743F<configure.ac> and leave C<EV_STANDALONE> undefined. F<ev.c> will then
1498F<config.h> and configure itself accordingly. 1744include F<config.h> and configure itself accordingly.
1499 1745
1500For this of course you need the m4 file: 1746For this of course you need the m4 file:
1501 1747
1502 libev.m4 1748 libev.m4
1503 1749
1583otherwise another method will be used as fallback. This is the preferred 1829otherwise another method will be used as fallback. This is the preferred
1584backend for BSD and BSD-like systems, although on most BSDs kqueue only 1830backend for BSD and BSD-like systems, although on most BSDs kqueue only
1585supports some types of fds correctly (the only platform we found that 1831supports some types of fds correctly (the only platform we found that
1586supports ptys for example was NetBSD), so kqueue might be compiled in, but 1832supports ptys for example was NetBSD), so kqueue might be compiled in, but
1587not be used unless explicitly requested. The best way to use it is to find 1833not be used unless explicitly requested. The best way to use it is to find
1588out wether kqueue supports your type of fd properly and use an embedded 1834out whether kqueue supports your type of fd properly and use an embedded
1589kqueue loop. 1835kqueue loop.
1590 1836
1591=item EV_USE_PORT 1837=item EV_USE_PORT
1592 1838
1593If defined to be C<1>, libev will compile in support for the Solaris 1839If defined to be C<1>, libev will compile in support for the Solaris
1629will have the C<struct ev_loop *> as first argument, and you can create 1875will have the C<struct ev_loop *> as first argument, and you can create
1630additional independent event loops. Otherwise there will be no support 1876additional independent event loops. Otherwise there will be no support
1631for multiple event loops and there is no first event loop pointer 1877for multiple event loops and there is no first event loop pointer
1632argument. Instead, all functions act on the single default loop. 1878argument. Instead, all functions act on the single default loop.
1633 1879
1634=item EV_PERIODICS 1880=item EV_PERIODIC_ENABLE
1635 1881
1636If undefined or defined to be C<1>, then periodic timers are supported, 1882If undefined or defined to be C<1>, then periodic timers are supported. If
1637otherwise not. This saves a few kb of code. 1883defined to be C<0>, then they are not. Disabling them saves a few kB of
1884code.
1885
1886=item EV_EMBED_ENABLE
1887
1888If undefined or defined to be C<1>, then embed watchers are supported. If
1889defined to be C<0>, then they are not.
1890
1891=item EV_STAT_ENABLE
1892
1893If undefined or defined to be C<1>, then stat watchers are supported. If
1894defined to be C<0>, then they are not.
1895
1896=item EV_MINIMAL
1897
1898If you need to shave off some kilobytes of code at the expense of some
1899speed, define this symbol to C<1>. Currently only used for gcc to override
1900some inlining decisions, saves roughly 30% codesize of amd64.
1638 1901
1639=item EV_COMMON 1902=item EV_COMMON
1640 1903
1641By default, all watchers have a C<void *data> member. By redefining 1904By default, all watchers have a C<void *data> member. By redefining
1642this macro to a something else you can include more and other types of 1905this macro to a something else you can include more and other types of
1647 1910
1648 #define EV_COMMON \ 1911 #define EV_COMMON \
1649 SV *self; /* contains this struct */ \ 1912 SV *self; /* contains this struct */ \
1650 SV *cb_sv, *fh /* note no trailing ";" */ 1913 SV *cb_sv, *fh /* note no trailing ";" */
1651 1914
1652=item EV_CB_DECLARE(type) 1915=item EV_CB_DECLARE (type)
1653 1916
1654=item EV_CB_INVOKE(watcher,revents) 1917=item EV_CB_INVOKE (watcher, revents)
1655 1918
1656=item ev_set_cb(ev,cb) 1919=item ev_set_cb (ev, cb)
1657 1920
1658Can be used to change the callback member declaration in each watcher, 1921Can be used to change the callback member declaration in each watcher,
1659and the way callbacks are invoked and set. Must expand to a struct member 1922and the way callbacks are invoked and set. Must expand to a struct member
1660definition and a statement, respectively. See the F<ev.v> header file for 1923definition and a statement, respectively. See the F<ev.v> header file for
1661their default definitions. One possible use for overriding these is to 1924their default definitions. One possible use for overriding these is to
1662avoid the ev_loop pointer as first argument in all cases, or to use method 1925avoid the C<struct ev_loop *> as first argument in all cases, or to use
1663calls instead of plain function calls in C++. 1926method calls instead of plain function calls in C++.
1664 1927
1665=head2 EXAMPLES 1928=head2 EXAMPLES
1666 1929
1667For a real-world example of a program the includes libev 1930For a real-world example of a program the includes libev
1668verbatim, you can have a look at the EV perl module 1931verbatim, you can have a look at the EV perl module
1685And a F<ev_cpp.C> implementation file that contains libev proper and is compiled: 1948And a F<ev_cpp.C> implementation file that contains libev proper and is compiled:
1686 1949
1687 #include "ev_cpp.h" 1950 #include "ev_cpp.h"
1688 #include "ev.c" 1951 #include "ev.c"
1689 1952
1953
1954=head1 COMPLEXITIES
1955
1956In this section the complexities of (many of) the algorithms used inside
1957libev will be explained. For complexity discussions about backends see the
1958documentation for C<ev_default_init>.
1959
1960=over 4
1961
1962=item Starting and stopping timer/periodic watchers: O(log skipped_other_timers)
1963
1964=item Changing timer/periodic watchers (by autorepeat, again): O(log skipped_other_timers)
1965
1966=item Starting io/check/prepare/idle/signal/child watchers: O(1)
1967
1968=item Stopping check/prepare/idle watchers: O(1)
1969
1970=item Stopping an io/signal/child watcher: O(number_of_watchers_for_this_(fd/signal/pid % 16))
1971
1972=item Finding the next timer per loop iteration: O(1)
1973
1974=item Each change on a file descriptor per loop iteration: O(number_of_watchers_for_this_fd)
1975
1976=item Activating one watcher: O(1)
1977
1978=back
1979
1980
1690=head1 AUTHOR 1981=head1 AUTHOR
1691 1982
1692Marc Lehmann <libev@schmorp.de>. 1983Marc Lehmann <libev@schmorp.de>.
1693 1984

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines