… | |
… | |
127 | .\} |
127 | .\} |
128 | .rm #[ #] #H #V #F C |
128 | .rm #[ #] #H #V #F C |
129 | .\" ======================================================================== |
129 | .\" ======================================================================== |
130 | .\" |
130 | .\" |
131 | .IX Title ""<STANDARD INPUT>" 1" |
131 | .IX Title ""<STANDARD INPUT>" 1" |
132 | .TH "<STANDARD INPUT>" 1 "2007-12-08" "perl v5.8.8" "User Contributed Perl Documentation" |
132 | .TH "<STANDARD INPUT>" 1 "2007-12-12" "perl v5.8.8" "User Contributed Perl Documentation" |
133 | .SH "NAME" |
133 | .SH "NAME" |
134 | libev \- a high performance full\-featured event loop written in C |
134 | libev \- a high performance full\-featured event loop written in C |
135 | .SH "SYNOPSIS" |
135 | .SH "SYNOPSIS" |
136 | .IX Header "SYNOPSIS" |
136 | .IX Header "SYNOPSIS" |
137 | .Vb 1 |
137 | .Vb 1 |
… | |
… | |
259 | .IX Item "int ev_version_major ()" |
259 | .IX Item "int ev_version_major ()" |
260 | .PD 0 |
260 | .PD 0 |
261 | .IP "int ev_version_minor ()" 4 |
261 | .IP "int ev_version_minor ()" 4 |
262 | .IX Item "int ev_version_minor ()" |
262 | .IX Item "int ev_version_minor ()" |
263 | .PD |
263 | .PD |
264 | You can find out the major and minor version numbers of the library |
264 | You can find out the major and minor \s-1ABI\s0 version numbers of the library |
265 | you linked against by calling the functions \f(CW\*(C`ev_version_major\*(C'\fR and |
265 | you linked against by calling the functions \f(CW\*(C`ev_version_major\*(C'\fR and |
266 | \&\f(CW\*(C`ev_version_minor\*(C'\fR. If you want, you can compare against the global |
266 | \&\f(CW\*(C`ev_version_minor\*(C'\fR. If you want, you can compare against the global |
267 | symbols \f(CW\*(C`EV_VERSION_MAJOR\*(C'\fR and \f(CW\*(C`EV_VERSION_MINOR\*(C'\fR, which specify the |
267 | symbols \f(CW\*(C`EV_VERSION_MAJOR\*(C'\fR and \f(CW\*(C`EV_VERSION_MINOR\*(C'\fR, which specify the |
268 | version of the library your program was compiled against. |
268 | version of the library your program was compiled against. |
269 | .Sp |
269 | .Sp |
|
|
270 | These version numbers refer to the \s-1ABI\s0 version of the library, not the |
|
|
271 | release version. |
|
|
272 | .Sp |
270 | Usually, it's a good idea to terminate if the major versions mismatch, |
273 | Usually, it's a good idea to terminate if the major versions mismatch, |
271 | as this indicates an incompatible change. Minor versions are usually |
274 | as this indicates an incompatible change. Minor versions are usually |
272 | compatible to older versions, so a larger minor version alone is usually |
275 | compatible to older versions, so a larger minor version alone is usually |
273 | not a problem. |
276 | not a problem. |
274 | .Sp |
277 | .Sp |
275 | Example: Make sure we haven't accidentally been linked against the wrong |
278 | Example: Make sure we haven't accidentally been linked against the wrong |
276 | version. |
279 | version. |
… | |
… | |
1062 | If you cannot run the fd in non-blocking mode (for example you should not |
1065 | If you cannot run the fd in non-blocking mode (for example you should not |
1063 | play around with an Xlib connection), then you have to seperately re-test |
1066 | play around with an Xlib connection), then you have to seperately re-test |
1064 | whether a file descriptor is really ready with a known-to-be good interface |
1067 | whether a file descriptor is really ready with a known-to-be good interface |
1065 | such as poll (fortunately in our Xlib example, Xlib already does this on |
1068 | such as poll (fortunately in our Xlib example, Xlib already does this on |
1066 | its own, so its quite safe to use). |
1069 | its own, so its quite safe to use). |
|
|
1070 | .PP |
|
|
1071 | \fIThe special problem of disappearing file descriptors\fR |
|
|
1072 | .IX Subsection "The special problem of disappearing file descriptors" |
|
|
1073 | .PP |
|
|
1074 | Some backends (e.g kqueue, epoll) need to be told about closing a file |
|
|
1075 | descriptor (either by calling \f(CW\*(C`close\*(C'\fR explicitly or by any other means, |
|
|
1076 | such as \f(CW\*(C`dup\*(C'\fR). The reason is that you register interest in some file |
|
|
1077 | descriptor, but when it goes away, the operating system will silently drop |
|
|
1078 | this interest. If another file descriptor with the same number then is |
|
|
1079 | registered with libev, there is no efficient way to see that this is, in |
|
|
1080 | fact, a different file descriptor. |
|
|
1081 | .PP |
|
|
1082 | To avoid having to explicitly tell libev about such cases, libev follows |
|
|
1083 | the following policy: Each time \f(CW\*(C`ev_io_set\*(C'\fR is being called, libev |
|
|
1084 | will assume that this is potentially a new file descriptor, otherwise |
|
|
1085 | it is assumed that the file descriptor stays the same. That means that |
|
|
1086 | you \fIhave\fR to call \f(CW\*(C`ev_io_set\*(C'\fR (or \f(CW\*(C`ev_io_init\*(C'\fR) when you change the |
|
|
1087 | descriptor even if the file descriptor number itself did not change. |
|
|
1088 | .PP |
|
|
1089 | This is how one would do it normally anyway, the important point is that |
|
|
1090 | the libev application should not optimise around libev but should leave |
|
|
1091 | optimisations to libev. |
|
|
1092 | .PP |
|
|
1093 | \fIWatcher-Specific Functions\fR |
|
|
1094 | .IX Subsection "Watcher-Specific Functions" |
1067 | .IP "ev_io_init (ev_io *, callback, int fd, int events)" 4 |
1095 | .IP "ev_io_init (ev_io *, callback, int fd, int events)" 4 |
1068 | .IX Item "ev_io_init (ev_io *, callback, int fd, int events)" |
1096 | .IX Item "ev_io_init (ev_io *, callback, int fd, int events)" |
1069 | .PD 0 |
1097 | .PD 0 |
1070 | .IP "ev_io_set (ev_io *, int fd, int events)" 4 |
1098 | .IP "ev_io_set (ev_io *, int fd, int events)" 4 |
1071 | .IX Item "ev_io_set (ev_io *, int fd, int events)" |
1099 | .IX Item "ev_io_set (ev_io *, int fd, int events)" |
… | |
… | |
1124 | .Ve |
1152 | .Ve |
1125 | .PP |
1153 | .PP |
1126 | The callback is guarenteed to be invoked only when its timeout has passed, |
1154 | The callback is guarenteed to be invoked only when its timeout has passed, |
1127 | but if multiple timers become ready during the same loop iteration then |
1155 | but if multiple timers become ready during the same loop iteration then |
1128 | order of execution is undefined. |
1156 | order of execution is undefined. |
|
|
1157 | .PP |
|
|
1158 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1159 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1129 | .IP "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)" 4 |
1160 | .IP "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)" 4 |
1130 | .IX Item "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)" |
1161 | .IX Item "ev_timer_init (ev_timer *, callback, ev_tstamp after, ev_tstamp repeat)" |
1131 | .PD 0 |
1162 | .PD 0 |
1132 | .IP "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" 4 |
1163 | .IP "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" 4 |
1133 | .IX Item "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" |
1164 | .IX Item "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" |
… | |
… | |
1235 | but on wallclock time (absolute time). You can tell a periodic watcher |
1266 | but on wallclock time (absolute time). You can tell a periodic watcher |
1236 | to trigger \*(L"at\*(R" some specific point in time. For example, if you tell a |
1267 | to trigger \*(L"at\*(R" some specific point in time. For example, if you tell a |
1237 | periodic watcher to trigger in 10 seconds (by specifiying e.g. \f(CW\*(C`ev_now () |
1268 | periodic watcher to trigger in 10 seconds (by specifiying e.g. \f(CW\*(C`ev_now () |
1238 | + 10.\*(C'\fR) and then reset your system clock to the last year, then it will |
1269 | + 10.\*(C'\fR) and then reset your system clock to the last year, then it will |
1239 | take a year to trigger the event (unlike an \f(CW\*(C`ev_timer\*(C'\fR, which would trigger |
1270 | take a year to trigger the event (unlike an \f(CW\*(C`ev_timer\*(C'\fR, which would trigger |
1240 | roughly 10 seconds later and of course not if you reset your system time |
1271 | roughly 10 seconds later). |
1241 | again). |
|
|
1242 | .PP |
1272 | .PP |
1243 | They can also be used to implement vastly more complex timers, such as |
1273 | They can also be used to implement vastly more complex timers, such as |
1244 | triggering an event on eahc midnight, local time. |
1274 | triggering an event on each midnight, local time or other, complicated, |
|
|
1275 | rules. |
1245 | .PP |
1276 | .PP |
1246 | As with timers, the callback is guarenteed to be invoked only when the |
1277 | As with timers, the callback is guarenteed to be invoked only when the |
1247 | time (\f(CW\*(C`at\*(C'\fR) has been passed, but if multiple periodic timers become ready |
1278 | time (\f(CW\*(C`at\*(C'\fR) has been passed, but if multiple periodic timers become ready |
1248 | during the same loop iteration then order of execution is undefined. |
1279 | during the same loop iteration then order of execution is undefined. |
|
|
1280 | .PP |
|
|
1281 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1282 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1249 | .IP "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)" 4 |
1283 | .IP "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)" 4 |
1250 | .IX Item "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)" |
1284 | .IX Item "ev_periodic_init (ev_periodic *, callback, ev_tstamp at, ev_tstamp interval, reschedule_cb)" |
1251 | .PD 0 |
1285 | .PD 0 |
1252 | .IP "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)" 4 |
1286 | .IP "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)" 4 |
1253 | .IX Item "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)" |
1287 | .IX Item "ev_periodic_set (ev_periodic *, ev_tstamp after, ev_tstamp repeat, reschedule_cb)" |
1254 | .PD |
1288 | .PD |
1255 | Lots of arguments, lets sort it out... There are basically three modes of |
1289 | Lots of arguments, lets sort it out... There are basically three modes of |
1256 | operation, and we will explain them from simplest to complex: |
1290 | operation, and we will explain them from simplest to complex: |
1257 | .RS 4 |
1291 | .RS 4 |
1258 | .IP "* absolute timer (interval = reschedule_cb = 0)" 4 |
1292 | .IP "* absolute timer (at = time, interval = reschedule_cb = 0)" 4 |
1259 | .IX Item "absolute timer (interval = reschedule_cb = 0)" |
1293 | .IX Item "absolute timer (at = time, interval = reschedule_cb = 0)" |
1260 | In this configuration the watcher triggers an event at the wallclock time |
1294 | In this configuration the watcher triggers an event at the wallclock time |
1261 | \&\f(CW\*(C`at\*(C'\fR and doesn't repeat. It will not adjust when a time jump occurs, |
1295 | \&\f(CW\*(C`at\*(C'\fR and doesn't repeat. It will not adjust when a time jump occurs, |
1262 | that is, if it is to be run at January 1st 2011 then it will run when the |
1296 | that is, if it is to be run at January 1st 2011 then it will run when the |
1263 | system time reaches or surpasses this time. |
1297 | system time reaches or surpasses this time. |
1264 | .IP "* non-repeating interval timer (interval > 0, reschedule_cb = 0)" 4 |
1298 | .IP "* non-repeating interval timer (at = offset, interval > 0, reschedule_cb = 0)" 4 |
1265 | .IX Item "non-repeating interval timer (interval > 0, reschedule_cb = 0)" |
1299 | .IX Item "non-repeating interval timer (at = offset, interval > 0, reschedule_cb = 0)" |
1266 | In this mode the watcher will always be scheduled to time out at the next |
1300 | In this mode the watcher will always be scheduled to time out at the next |
1267 | \&\f(CW\*(C`at + N * interval\*(C'\fR time (for some integer N) and then repeat, regardless |
1301 | \&\f(CW\*(C`at + N * interval\*(C'\fR time (for some integer N, which can also be negative) |
1268 | of any time jumps. |
1302 | and then repeat, regardless of any time jumps. |
1269 | .Sp |
1303 | .Sp |
1270 | This can be used to create timers that do not drift with respect to system |
1304 | This can be used to create timers that do not drift with respect to system |
1271 | time: |
1305 | time: |
1272 | .Sp |
1306 | .Sp |
1273 | .Vb 1 |
1307 | .Vb 1 |
… | |
… | |
1280 | by 3600. |
1314 | by 3600. |
1281 | .Sp |
1315 | .Sp |
1282 | Another way to think about it (for the mathematically inclined) is that |
1316 | Another way to think about it (for the mathematically inclined) is that |
1283 | \&\f(CW\*(C`ev_periodic\*(C'\fR will try to run the callback in this mode at the next possible |
1317 | \&\f(CW\*(C`ev_periodic\*(C'\fR will try to run the callback in this mode at the next possible |
1284 | time where \f(CW\*(C`time = at (mod interval)\*(C'\fR, regardless of any time jumps. |
1318 | time where \f(CW\*(C`time = at (mod interval)\*(C'\fR, regardless of any time jumps. |
|
|
1319 | .Sp |
|
|
1320 | For numerical stability it is preferable that the \f(CW\*(C`at\*(C'\fR value is near |
|
|
1321 | \&\f(CW\*(C`ev_now ()\*(C'\fR (the current time), but there is no range requirement for |
|
|
1322 | this value. |
1285 | .IP "* manual reschedule mode (reschedule_cb = callback)" 4 |
1323 | .IP "* manual reschedule mode (at and interval ignored, reschedule_cb = callback)" 4 |
1286 | .IX Item "manual reschedule mode (reschedule_cb = callback)" |
1324 | .IX Item "manual reschedule mode (at and interval ignored, reschedule_cb = callback)" |
1287 | In this mode the values for \f(CW\*(C`interval\*(C'\fR and \f(CW\*(C`at\*(C'\fR are both being |
1325 | In this mode the values for \f(CW\*(C`interval\*(C'\fR and \f(CW\*(C`at\*(C'\fR are both being |
1288 | ignored. Instead, each time the periodic watcher gets scheduled, the |
1326 | ignored. Instead, each time the periodic watcher gets scheduled, the |
1289 | reschedule callback will be called with the watcher as first, and the |
1327 | reschedule callback will be called with the watcher as first, and the |
1290 | current time as second argument. |
1328 | current time as second argument. |
1291 | .Sp |
1329 | .Sp |
1292 | \&\s-1NOTE:\s0 \fIThis callback \s-1MUST\s0 \s-1NOT\s0 stop or destroy any periodic watcher, |
1330 | \&\s-1NOTE:\s0 \fIThis callback \s-1MUST\s0 \s-1NOT\s0 stop or destroy any periodic watcher, |
1293 | ever, or make any event loop modifications\fR. If you need to stop it, |
1331 | ever, or make any event loop modifications\fR. If you need to stop it, |
1294 | return \f(CW\*(C`now + 1e30\*(C'\fR (or so, fudge fudge) and stop it afterwards (e.g. by |
1332 | return \f(CW\*(C`now + 1e30\*(C'\fR (or so, fudge fudge) and stop it afterwards (e.g. by |
1295 | starting a prepare watcher). |
1333 | starting an \f(CW\*(C`ev_prepare\*(C'\fR watcher, which is legal). |
1296 | .Sp |
1334 | .Sp |
1297 | Its prototype is \f(CW\*(C`ev_tstamp (*reschedule_cb)(struct ev_periodic *w, |
1335 | Its prototype is \f(CW\*(C`ev_tstamp (*reschedule_cb)(struct ev_periodic *w, |
1298 | ev_tstamp now)\*(C'\fR, e.g.: |
1336 | ev_tstamp now)\*(C'\fR, e.g.: |
1299 | .Sp |
1337 | .Sp |
1300 | .Vb 4 |
1338 | .Vb 4 |
… | |
… | |
1324 | .IX Item "ev_periodic_again (loop, ev_periodic *)" |
1362 | .IX Item "ev_periodic_again (loop, ev_periodic *)" |
1325 | Simply stops and restarts the periodic watcher again. This is only useful |
1363 | Simply stops and restarts the periodic watcher again. This is only useful |
1326 | when you changed some parameters or the reschedule callback would return |
1364 | when you changed some parameters or the reschedule callback would return |
1327 | a different time than the last time it was called (e.g. in a crond like |
1365 | a different time than the last time it was called (e.g. in a crond like |
1328 | program when the crontabs have changed). |
1366 | program when the crontabs have changed). |
|
|
1367 | .IP "ev_tstamp offset [read\-write]" 4 |
|
|
1368 | .IX Item "ev_tstamp offset [read-write]" |
|
|
1369 | When repeating, this contains the offset value, otherwise this is the |
|
|
1370 | absolute point in time (the \f(CW\*(C`at\*(C'\fR value passed to \f(CW\*(C`ev_periodic_set\*(C'\fR). |
|
|
1371 | .Sp |
|
|
1372 | Can be modified any time, but changes only take effect when the periodic |
|
|
1373 | timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being called. |
1329 | .IP "ev_tstamp interval [read\-write]" 4 |
1374 | .IP "ev_tstamp interval [read\-write]" 4 |
1330 | .IX Item "ev_tstamp interval [read-write]" |
1375 | .IX Item "ev_tstamp interval [read-write]" |
1331 | The current interval value. Can be modified any time, but changes only |
1376 | The current interval value. Can be modified any time, but changes only |
1332 | take effect when the periodic timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being |
1377 | take effect when the periodic timer fires or \f(CW\*(C`ev_periodic_again\*(C'\fR is being |
1333 | called. |
1378 | called. |
… | |
… | |
1393 | first watcher gets started will libev actually register a signal watcher |
1438 | first watcher gets started will libev actually register a signal watcher |
1394 | with the kernel (thus it coexists with your own signal handlers as long |
1439 | with the kernel (thus it coexists with your own signal handlers as long |
1395 | as you don't register any with libev). Similarly, when the last signal |
1440 | as you don't register any with libev). Similarly, when the last signal |
1396 | watcher for a signal is stopped libev will reset the signal handler to |
1441 | watcher for a signal is stopped libev will reset the signal handler to |
1397 | \&\s-1SIG_DFL\s0 (regardless of what it was set to before). |
1442 | \&\s-1SIG_DFL\s0 (regardless of what it was set to before). |
|
|
1443 | .PP |
|
|
1444 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1445 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1398 | .IP "ev_signal_init (ev_signal *, callback, int signum)" 4 |
1446 | .IP "ev_signal_init (ev_signal *, callback, int signum)" 4 |
1399 | .IX Item "ev_signal_init (ev_signal *, callback, int signum)" |
1447 | .IX Item "ev_signal_init (ev_signal *, callback, int signum)" |
1400 | .PD 0 |
1448 | .PD 0 |
1401 | .IP "ev_signal_set (ev_signal *, int signum)" 4 |
1449 | .IP "ev_signal_set (ev_signal *, int signum)" 4 |
1402 | .IX Item "ev_signal_set (ev_signal *, int signum)" |
1450 | .IX Item "ev_signal_set (ev_signal *, int signum)" |
… | |
… | |
1409 | .ie n .Sh """ev_child"" \- watch out for process status changes" |
1457 | .ie n .Sh """ev_child"" \- watch out for process status changes" |
1410 | .el .Sh "\f(CWev_child\fP \- watch out for process status changes" |
1458 | .el .Sh "\f(CWev_child\fP \- watch out for process status changes" |
1411 | .IX Subsection "ev_child - watch out for process status changes" |
1459 | .IX Subsection "ev_child - watch out for process status changes" |
1412 | Child watchers trigger when your process receives a \s-1SIGCHLD\s0 in response to |
1460 | Child watchers trigger when your process receives a \s-1SIGCHLD\s0 in response to |
1413 | some child status changes (most typically when a child of yours dies). |
1461 | some child status changes (most typically when a child of yours dies). |
|
|
1462 | .PP |
|
|
1463 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1464 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1414 | .IP "ev_child_init (ev_child *, callback, int pid)" 4 |
1465 | .IP "ev_child_init (ev_child *, callback, int pid)" 4 |
1415 | .IX Item "ev_child_init (ev_child *, callback, int pid)" |
1466 | .IX Item "ev_child_init (ev_child *, callback, int pid)" |
1416 | .PD 0 |
1467 | .PD 0 |
1417 | .IP "ev_child_set (ev_child *, int pid)" 4 |
1468 | .IP "ev_child_set (ev_child *, int pid)" 4 |
1418 | .IX Item "ev_child_set (ev_child *, int pid)" |
1469 | .IX Item "ev_child_set (ev_child *, int pid)" |
… | |
… | |
1483 | reader). Inotify will be used to give hints only and should not change the |
1534 | reader). Inotify will be used to give hints only and should not change the |
1484 | semantics of \f(CW\*(C`ev_stat\*(C'\fR watchers, which means that libev sometimes needs |
1535 | semantics of \f(CW\*(C`ev_stat\*(C'\fR watchers, which means that libev sometimes needs |
1485 | to fall back to regular polling again even with inotify, but changes are |
1536 | to fall back to regular polling again even with inotify, but changes are |
1486 | usually detected immediately, and if the file exists there will be no |
1537 | usually detected immediately, and if the file exists there will be no |
1487 | polling. |
1538 | polling. |
|
|
1539 | .PP |
|
|
1540 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1541 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1488 | .IP "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)" 4 |
1542 | .IP "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)" 4 |
1489 | .IX Item "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)" |
1543 | .IX Item "ev_stat_init (ev_stat *, callback, const char *path, ev_tstamp interval)" |
1490 | .PD 0 |
1544 | .PD 0 |
1491 | .IP "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)" 4 |
1545 | .IP "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)" 4 |
1492 | .IX Item "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)" |
1546 | .IX Item "ev_stat_set (ev_stat *, const char *path, ev_tstamp interval)" |
… | |
… | |
1571 | .PP |
1625 | .PP |
1572 | Apart from keeping your process non-blocking (which is a useful |
1626 | Apart from keeping your process non-blocking (which is a useful |
1573 | effect on its own sometimes), idle watchers are a good place to do |
1627 | effect on its own sometimes), idle watchers are a good place to do |
1574 | \&\*(L"pseudo\-background processing\*(R", or delay processing stuff to after the |
1628 | \&\*(L"pseudo\-background processing\*(R", or delay processing stuff to after the |
1575 | event loop has handled all outstanding events. |
1629 | event loop has handled all outstanding events. |
|
|
1630 | .PP |
|
|
1631 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1632 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1576 | .IP "ev_idle_init (ev_signal *, callback)" 4 |
1633 | .IP "ev_idle_init (ev_signal *, callback)" 4 |
1577 | .IX Item "ev_idle_init (ev_signal *, callback)" |
1634 | .IX Item "ev_idle_init (ev_signal *, callback)" |
1578 | Initialises and configures the idle watcher \- it has no parameters of any |
1635 | Initialises and configures the idle watcher \- it has no parameters of any |
1579 | kind. There is a \f(CW\*(C`ev_idle_set\*(C'\fR macro, but using it is utterly pointless, |
1636 | kind. There is a \f(CW\*(C`ev_idle_set\*(C'\fR macro, but using it is utterly pointless, |
1580 | believe me. |
1637 | believe me. |
… | |
… | |
1645 | supports this, they will be called before other \f(CW\*(C`ev_check\*(C'\fR watchers did |
1702 | supports this, they will be called before other \f(CW\*(C`ev_check\*(C'\fR watchers did |
1646 | their job. As \f(CW\*(C`ev_check\*(C'\fR watchers are often used to embed other event |
1703 | their job. As \f(CW\*(C`ev_check\*(C'\fR watchers are often used to embed other event |
1647 | loops those other event loops might be in an unusable state until their |
1704 | loops those other event loops might be in an unusable state until their |
1648 | \&\f(CW\*(C`ev_check\*(C'\fR watcher ran (always remind yourself to coexist peacefully with |
1705 | \&\f(CW\*(C`ev_check\*(C'\fR watcher ran (always remind yourself to coexist peacefully with |
1649 | others). |
1706 | others). |
|
|
1707 | .PP |
|
|
1708 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1709 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1650 | .IP "ev_prepare_init (ev_prepare *, callback)" 4 |
1710 | .IP "ev_prepare_init (ev_prepare *, callback)" 4 |
1651 | .IX Item "ev_prepare_init (ev_prepare *, callback)" |
1711 | .IX Item "ev_prepare_init (ev_prepare *, callback)" |
1652 | .PD 0 |
1712 | .PD 0 |
1653 | .IP "ev_check_init (ev_check *, callback)" 4 |
1713 | .IP "ev_check_init (ev_check *, callback)" 4 |
1654 | .IX Item "ev_check_init (ev_check *, callback)" |
1714 | .IX Item "ev_check_init (ev_check *, callback)" |
… | |
… | |
1901 | \& ev_embed_start (loop_hi, &embed); |
1961 | \& ev_embed_start (loop_hi, &embed); |
1902 | \& } |
1962 | \& } |
1903 | \& else |
1963 | \& else |
1904 | \& loop_lo = loop_hi; |
1964 | \& loop_lo = loop_hi; |
1905 | .Ve |
1965 | .Ve |
|
|
1966 | .PP |
|
|
1967 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
1968 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1906 | .IP "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)" 4 |
1969 | .IP "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)" 4 |
1907 | .IX Item "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)" |
1970 | .IX Item "ev_embed_init (ev_embed *, callback, struct ev_loop *embedded_loop)" |
1908 | .PD 0 |
1971 | .PD 0 |
1909 | .IP "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)" 4 |
1972 | .IP "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)" 4 |
1910 | .IX Item "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)" |
1973 | .IX Item "ev_embed_set (ev_embed *, callback, struct ev_loop *embedded_loop)" |
… | |
… | |
1930 | \&\f(CW\*(C`ev_default_fork\*(C'\fR or \f(CW\*(C`ev_loop_fork\*(C'\fR). The invocation is done before the |
1993 | \&\f(CW\*(C`ev_default_fork\*(C'\fR or \f(CW\*(C`ev_loop_fork\*(C'\fR). The invocation is done before the |
1931 | event loop blocks next and before \f(CW\*(C`ev_check\*(C'\fR watchers are being called, |
1994 | event loop blocks next and before \f(CW\*(C`ev_check\*(C'\fR watchers are being called, |
1932 | and only in the child after the fork. If whoever good citizen calling |
1995 | and only in the child after the fork. If whoever good citizen calling |
1933 | \&\f(CW\*(C`ev_default_fork\*(C'\fR cheats and calls it in the wrong process, the fork |
1996 | \&\f(CW\*(C`ev_default_fork\*(C'\fR cheats and calls it in the wrong process, the fork |
1934 | handlers will be invoked, too, of course. |
1997 | handlers will be invoked, too, of course. |
|
|
1998 | .PP |
|
|
1999 | \fIWatcher-Specific Functions and Data Members\fR |
|
|
2000 | .IX Subsection "Watcher-Specific Functions and Data Members" |
1935 | .IP "ev_fork_init (ev_signal *, callback)" 4 |
2001 | .IP "ev_fork_init (ev_signal *, callback)" 4 |
1936 | .IX Item "ev_fork_init (ev_signal *, callback)" |
2002 | .IX Item "ev_fork_init (ev_signal *, callback)" |
1937 | Initialises and configures the fork watcher \- it has no parameters of any |
2003 | Initialises and configures the fork watcher \- it has no parameters of any |
1938 | kind. There is a \f(CW\*(C`ev_fork_set\*(C'\fR macro, but using it is utterly pointless, |
2004 | kind. There is a \f(CW\*(C`ev_fork_set\*(C'\fR macro, but using it is utterly pointless, |
1939 | believe me. |
2005 | believe me. |