doc: expand epoll_ctl() documentation

This commit is contained in:
Bert Belder 2018-05-02 06:49:32 +02:00
parent 56f2d70ce3
commit d6845acd26
No known key found for this signature in database
GPG Key ID: 7A77887B2E2ED461

View File

@ -87,15 +87,21 @@ int epoll_ctl(HANDLE ephnd,
``` ```
* Control which socket events are monitored by an epoll port. * Control which socket events are monitored by an epoll port.
* `ephnd` must be a HANDLE created by `epoll_create` or `epoll_create1`. * `ephnd` must be a HANDLE created by
[`epoll_create()`](#epoll_createepoll_create1) or
[`epoll_create1()`](#epoll_createepoll_create1).
* `op` must be one of `EPOLL_CTL_ADD`, `EPOLL_CTL_MOD`, `EPOLL_CTL_DEL`. * `op` must be one of `EPOLL_CTL_ADD`, `EPOLL_CTL_MOD`, `EPOLL_CTL_DEL`.
* `sock` must be a valid socket created by `socket()` or ` * `sock` must be a valid socket created by [`socket()`][msdn socket],
[`WSASocket()`][msdn wsasocket], or [`accept()`][msdn accept].
* `event` should be a pointer to a [`struct epoll_event`](#struct-epoll_event).<br>
If `op` is `EPOLL_CTL_DEL` then the `event` parameter is ignored, and it
may be `NULL`.
* Returns 0 on success, -1 on failure.
* It is recommended to always explicitly remove a socket from its epoll * It is recommended to always explicitly remove a socket from its epoll
set using `EPOLL_CTL_DEL` *before* closing it. As on Linux, sockets set using `EPOLL_CTL_DEL` *before* closing it.<br>
are automatically removed from the epoll set when they are closed, but As on Linux, closed sockets are automatically removed from the epoll set, but
wepoll may not be able to detect this until the next call to wepoll may not be able to detect that a socket was closed until the next call
`epoll_wait()`. to [`epoll_wait()`](#epoll_wait).
* TODO: expand
* [Linux man page][man epoll_ctl] * [Linux man page][man epoll_ctl]
### epoll_wait ### epoll_wait
@ -177,6 +183,9 @@ struct epoll_event {
[man epoll_create]: http://man7.org/linux/man-pages/man2/epoll_create.2.html [man epoll_create]: http://man7.org/linux/man-pages/man2/epoll_create.2.html
[man epoll_ctl]: http://man7.org/linux/man-pages/man2/epoll_ctl.2.html [man epoll_ctl]: http://man7.org/linux/man-pages/man2/epoll_ctl.2.html
[man epoll_wait]: http://man7.org/linux/man-pages/man2/epoll_wait.2.html [man epoll_wait]: http://man7.org/linux/man-pages/man2/epoll_wait.2.html
[msdn accept]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms737526(v=vs.85).aspx
[msdn socket]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms740506(v=vs.85).aspx
[msdn wsasocket]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms742212(v=vs.85).aspx
[select scale]: https://daniel.haxx.se/docs/poll-vs-select.html [select scale]: https://daniel.haxx.se/docs/poll-vs-select.html
[wsapoll broken]: https://daniel.haxx.se/blog/2012/10/10/wsapoll-is-broken/ [wsapoll broken]: https://daniel.haxx.se/blog/2012/10/10/wsapoll-is-broken/
[wepoll.c]: https://github.com/piscisaureus/wepoll/blob/dist/wepoll.c [wepoll.c]: https://github.com/piscisaureus/wepoll/blob/dist/wepoll.c