42 lines
1.1 KiB
Markdown
42 lines
1.1 KiB
Markdown
## wepoll
|
|
|
|
This library is based on [wepoll v1.5.8](https://github.com/piscisaureus/wepoll/commit/0598a791bf9cbbf480793d778930fc635b044980).
|
|
|
|
An eventfd-like mechanism is added to it. After making the changes, we can wake up `trantor::EventLoop` from the epoll_wait() function.
|
|
|
|
## Modifications
|
|
|
|
```shell
|
|
diff wepoll.h Wepoll.h
|
|
53a54
|
|
> EPOLLEVENT = (int)(1U << 14),
|
|
67a69
|
|
> #define EPOLLEVENT (1U << 14)
|
|
111a114
|
|
> WEPOLL_EXPORT void epoll_post_signal(HANDLE ephnd, uint64_t event);
|
|
```
|
|
|
|
```shell
|
|
diff wepoll.c Wepoll.c
|
|
50a51
|
|
> EPOLLEVENT = (int)(1U << 14),
|
|
64a66
|
|
> #define EPOLLEVENT (1U << 14)
|
|
1262a1265,1271
|
|
> if (iocp_events[i].lpCompletionKey)
|
|
> {
|
|
> struct epoll_event* ev = &epoll_events[epoll_event_count++];
|
|
> ev->data.u64 = (uint64_t)iocp_events[i].lpCompletionKey;
|
|
> ev->events = EPOLLEVENT;
|
|
> continue;
|
|
> }
|
|
2441a2451,2457
|
|
> void epoll_post_signal(HANDLE port_handle, uint64_t event)
|
|
> {
|
|
> ULONG_PTR ev;
|
|
> ev = (ULONG_PTR)event;
|
|
> PostQueuedCompletionStatus(port_handle, 1, ev, NULL);
|
|
> }
|
|
>
|
|
```
|