… | |
… | |
925 | } |
925 | } |
926 | |
926 | |
927 | unsigned int |
927 | unsigned int |
928 | ev_embeddable_backends (void) |
928 | ev_embeddable_backends (void) |
929 | { |
929 | { |
|
|
930 | /* epoll embeddability broken on all linux versions up to at least 2.6.23 */ |
930 | return EVBACKEND_EPOLL |
931 | return EVBACKEND_KQUEUE |
931 | | EVBACKEND_KQUEUE |
|
|
932 | | EVBACKEND_PORT; |
932 | | EVBACKEND_PORT; |
933 | } |
933 | } |
934 | |
934 | |
935 | unsigned int |
935 | unsigned int |
936 | ev_backend (EV_P) |
936 | ev_backend (EV_P) |
… | |
… | |
2213 | return; |
2213 | return; |
2214 | |
2214 | |
2215 | { |
2215 | { |
2216 | struct ev_loop *loop = w->other; |
2216 | struct ev_loop *loop = w->other; |
2217 | assert (("loop to be embedded is not embeddable", backend & ev_embeddable_backends ())); |
2217 | assert (("loop to be embedded is not embeddable", backend & ev_embeddable_backends ())); |
2218 | ev_io_init (&w->io, embed_io_cb, backend_fd, EV_WRITE); |
2218 | ev_io_init (&w->io, embed_io_cb, backend_fd, EV_READ); |
2219 | } |
2219 | } |
2220 | |
2220 | |
2221 | ev_set_priority (&w->io, ev_priority (w)); |
2221 | ev_set_priority (&w->io, ev_priority (w)); |
2222 | ev_io_start (EV_A_ &w->io); |
2222 | ev_io_start (EV_A_ &w->io); |
2223 | |
2223 | |