… | |
… | |
441 | example) that can't properly initialise their signal masks. |
441 | example) that can't properly initialise their signal masks. |
442 | |
442 | |
443 | =item C<EVFLAG_NOSIGMASK> |
443 | =item C<EVFLAG_NOSIGMASK> |
444 | |
444 | |
445 | When this flag is specified, then libev will avoid to modify the signal |
445 | When this flag is specified, then libev will avoid to modify the signal |
446 | mask. Specifically, this means you ahve to make sure signals are unblocked |
446 | mask. Specifically, this means you have to make sure signals are unblocked |
447 | when you want to receive them. |
447 | when you want to receive them. |
448 | |
448 | |
449 | This behaviour is useful when you want to do your own signal handling, or |
449 | This behaviour is useful when you want to do your own signal handling, or |
450 | want to handle signals only in specific threads and want to avoid libev |
450 | want to handle signals only in specific threads and want to avoid libev |
451 | unblocking the signals. |
451 | unblocking the signals. |
… | |
… | |
512 | totally I<different> file descriptors (even already closed ones, so |
512 | totally I<different> file descriptors (even already closed ones, so |
513 | one cannot even remove them from the set) than registered in the set |
513 | one cannot even remove them from the set) than registered in the set |
514 | (especially on SMP systems). Libev tries to counter these spurious |
514 | (especially on SMP systems). Libev tries to counter these spurious |
515 | notifications by employing an additional generation counter and comparing |
515 | notifications by employing an additional generation counter and comparing |
516 | that against the events to filter out spurious ones, recreating the set |
516 | that against the events to filter out spurious ones, recreating the set |
517 | when required. Epoll also errornously rounds down timeouts, but gives you |
517 | when required. Epoll also erroneously rounds down timeouts, but gives you |
518 | no way to know when and by how much, so sometimes you have to busy-wait |
518 | no way to know when and by how much, so sometimes you have to busy-wait |
519 | because epoll returns immediately despite a nonzero timeout. And last |
519 | because epoll returns immediately despite a nonzero timeout. And last |
520 | not least, it also refuses to work with some file descriptors which work |
520 | not least, it also refuses to work with some file descriptors which work |
521 | perfectly fine with C<select> (files, many character devices...). |
521 | perfectly fine with C<select> (files, many character devices...). |
522 | |
522 | |
… | |
… | |
1386 | |
1386 | |
1387 | =over 4 |
1387 | =over 4 |
1388 | |
1388 | |
1389 | =item initialiased |
1389 | =item initialiased |
1390 | |
1390 | |
1391 | Before a watcher can be registered with the event looop it has to be |
1391 | Before a watcher can be registered with the event loop it has to be |
1392 | initialised. This can be done with a call to C<ev_TYPE_init>, or calls to |
1392 | initialised. This can be done with a call to C<ev_TYPE_init>, or calls to |
1393 | C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function. |
1393 | C<ev_init> followed by the watcher-specific C<ev_TYPE_set> function. |
1394 | |
1394 | |
1395 | In this state it is simply some block of memory that is suitable for |
1395 | In this state it is simply some block of memory that is suitable for |
1396 | use in an event loop. It can be moved around, freed, reused etc. at |
1396 | use in an event loop. It can be moved around, freed, reused etc. at |
… | |
… | |
4904 | requires, and its I/O model is fundamentally incompatible with the POSIX |
4904 | requires, and its I/O model is fundamentally incompatible with the POSIX |
4905 | model. Libev still offers limited functionality on this platform in |
4905 | model. Libev still offers limited functionality on this platform in |
4906 | the form of the C<EVBACKEND_SELECT> backend, and only supports socket |
4906 | the form of the C<EVBACKEND_SELECT> backend, and only supports socket |
4907 | descriptors. This only applies when using Win32 natively, not when using |
4907 | descriptors. This only applies when using Win32 natively, not when using |
4908 | e.g. cygwin. Actually, it only applies to the microsofts own compilers, |
4908 | e.g. cygwin. Actually, it only applies to the microsofts own compilers, |
4909 | as every compielr comes with a slightly differently broken/incompatible |
4909 | as every compiler comes with a slightly differently broken/incompatible |
4910 | environment. |
4910 | environment. |
4911 | |
4911 | |
4912 | Lifting these limitations would basically require the full |
4912 | Lifting these limitations would basically require the full |
4913 | re-implementation of the I/O system. If you are into this kind of thing, |
4913 | re-implementation of the I/O system. If you are into this kind of thing, |
4914 | then note that glib does exactly that for you in a very portable way (note |
4914 | then note that glib does exactly that for you in a very portable way (note |