… | |
… | |
1373 | Simply stops and restarts the periodic watcher again. This is only useful |
1373 | Simply stops and restarts the periodic watcher again. This is only useful |
1374 | when you changed some parameters or the reschedule callback would return |
1374 | when you changed some parameters or the reschedule callback would return |
1375 | a different time than the last time it was called (e.g. in a crond like |
1375 | a different time than the last time it was called (e.g. in a crond like |
1376 | program when the crontabs have changed). |
1376 | program when the crontabs have changed). |
1377 | |
1377 | |
|
|
1378 | =item ev_tstamp ev_periodic_at (ev_periodic *) |
|
|
1379 | |
|
|
1380 | When active, returns the absolute time that the watcher is supposed to |
|
|
1381 | trigger next. |
|
|
1382 | |
1378 | =item ev_tstamp offset [read-write] |
1383 | =item ev_tstamp offset [read-write] |
1379 | |
1384 | |
1380 | When repeating, this contains the offset value, otherwise this is the |
1385 | When repeating, this contains the offset value, otherwise this is the |
1381 | absolute point in time (the C<at> value passed to C<ev_periodic_set>). |
1386 | absolute point in time (the C<at> value passed to C<ev_periodic_set>). |
1382 | |
1387 | |
… | |
… | |
1392 | =item ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write] |
1397 | =item ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) [read-write] |
1393 | |
1398 | |
1394 | The current reschedule callback, or C<0>, if this functionality is |
1399 | The current reschedule callback, or C<0>, if this functionality is |
1395 | switched off. Can be changed any time, but changes only take effect when |
1400 | switched off. Can be changed any time, but changes only take effect when |
1396 | the periodic timer fires or C<ev_periodic_again> is being called. |
1401 | the periodic timer fires or C<ev_periodic_again> is being called. |
1397 | |
|
|
1398 | =item ev_tstamp at [read-only] |
|
|
1399 | |
|
|
1400 | When active, contains the absolute time that the watcher is supposed to |
|
|
1401 | trigger next. |
|
|
1402 | |
1402 | |
1403 | =back |
1403 | =back |
1404 | |
1404 | |
1405 | =head3 Examples |
1405 | =head3 Examples |
1406 | |
1406 | |
… | |
… | |
1634 | When C<inotify (7)> support has been compiled into libev (generally only |
1634 | When C<inotify (7)> support has been compiled into libev (generally only |
1635 | available on Linux) and present at runtime, it will be used to speed up |
1635 | available on Linux) and present at runtime, it will be used to speed up |
1636 | change detection where possible. The inotify descriptor will be created lazily |
1636 | change detection where possible. The inotify descriptor will be created lazily |
1637 | when the first C<ev_stat> watcher is being started. |
1637 | when the first C<ev_stat> watcher is being started. |
1638 | |
1638 | |
1639 | Inotify presense does not change the semantics of C<ev_stat> watchers |
1639 | Inotify presence does not change the semantics of C<ev_stat> watchers |
1640 | except that changes might be detected earlier, and in some cases, to avoid |
1640 | except that changes might be detected earlier, and in some cases, to avoid |
1641 | making regular C<stat> calls. Even in the presense of inotify support |
1641 | making regular C<stat> calls. Even in the presence of inotify support |
1642 | there are many cases where libev has to resort to regular C<stat> polling. |
1642 | there are many cases where libev has to resort to regular C<stat> polling. |
1643 | |
1643 | |
1644 | (There is no support for kqueue, as apparently it cannot be used to |
1644 | (There is no support for kqueue, as apparently it cannot be used to |
1645 | implement this functionality, due to the requirement of having a file |
1645 | implement this functionality, due to the requirement of having a file |
1646 | descriptor open on the object at all times). |
1646 | descriptor open on the object at all times). |
… | |
… | |
2378 | |
2378 | |
2379 | =item * Priorities are not currently supported. Initialising priorities |
2379 | =item * Priorities are not currently supported. Initialising priorities |
2380 | will fail and all watchers will have the same priority, even though there |
2380 | will fail and all watchers will have the same priority, even though there |
2381 | is an ev_pri field. |
2381 | is an ev_pri field. |
2382 | |
2382 | |
|
|
2383 | =item * In libevent, the last base created gets the signals, in libev, the |
|
|
2384 | first base created (== the default loop) gets the signals. |
|
|
2385 | |
2383 | =item * Other members are not supported. |
2386 | =item * Other members are not supported. |
2384 | |
2387 | |
2385 | =item * The libev emulation is I<not> ABI compatible to libevent, you need |
2388 | =item * The libev emulation is I<not> ABI compatible to libevent, you need |
2386 | to use the libev header file and library. |
2389 | to use the libev header file and library. |
2387 | |
2390 | |
… | |
… | |
3257 | calling select (O(n²)) will likely make this unworkable. |
3260 | calling select (O(n²)) will likely make this unworkable. |
3258 | |
3261 | |
3259 | =back |
3262 | =back |
3260 | |
3263 | |
3261 | |
3264 | |
|
|
3265 | =head1 PORTABILITY REQUIREMENTS |
|
|
3266 | |
|
|
3267 | In addition to a working ISO-C implementation, libev relies on a few |
|
|
3268 | additional extensions: |
|
|
3269 | |
|
|
3270 | =over 4 |
|
|
3271 | |
|
|
3272 | =item C<sig_atomic_t volatile> must be thread-atomic as well |
|
|
3273 | |
|
|
3274 | The type C<sig_atomic_t volatile> (or whatever is defined as |
|
|
3275 | C<EV_ATOMIC_T>) must be atomic w.r.t. accesses from different |
|
|
3276 | threads. This is not part of the specification for C<sig_atomic_t>, but is |
|
|
3277 | believed to be sufficiently portable. |
|
|
3278 | |
|
|
3279 | =item C<sigprocmask> must work in a threaded environment |
|
|
3280 | |
|
|
3281 | Libev uses C<sigprocmask> to temporarily block signals. This is not |
|
|
3282 | allowed in a threaded program (C<pthread_sigmask> has to be used). Typical |
|
|
3283 | pthread implementations will either allow C<sigprocmask> in the "main |
|
|
3284 | thread" or will block signals process-wide, both behaviours would |
|
|
3285 | be compatible with libev. Interaction between C<sigprocmask> and |
|
|
3286 | C<pthread_sigmask> could complicate things, however. |
|
|
3287 | |
|
|
3288 | The most portable way to handle signals is to block signals in all threads |
|
|
3289 | except the initial one, and run the default loop in the initial thread as |
|
|
3290 | well. |
|
|
3291 | |
|
|
3292 | =back |
|
|
3293 | |
|
|
3294 | If you know of other additional requirements drop me a note. |
|
|
3295 | |
|
|
3296 | |
3262 | =head1 AUTHOR |
3297 | =head1 AUTHOR |
3263 | |
3298 | |
3264 | Marc Lehmann <libev@schmorp.de>. |
3299 | Marc Lehmann <libev@schmorp.de>. |
3265 | |
3300 | |