… | |
… | |
3001 | unsigned int |
3001 | unsigned int |
3002 | ev_supported_backends (void) EV_NOEXCEPT |
3002 | ev_supported_backends (void) EV_NOEXCEPT |
3003 | { |
3003 | { |
3004 | unsigned int flags = 0; |
3004 | unsigned int flags = 0; |
3005 | |
3005 | |
3006 | if (EV_USE_PORT ) flags |= EVBACKEND_PORT; |
3006 | if (EV_USE_PORT ) flags |= EVBACKEND_PORT; |
3007 | if (EV_USE_KQUEUE ) flags |= EVBACKEND_KQUEUE; |
3007 | if (EV_USE_KQUEUE ) flags |= EVBACKEND_KQUEUE; |
3008 | if (EV_USE_EPOLL ) flags |= EVBACKEND_EPOLL; |
3008 | if (EV_USE_EPOLL ) flags |= EVBACKEND_EPOLL; |
3009 | if (EV_USE_LINUXAIO) flags |= EVBACKEND_LINUXAIO; |
3009 | if (EV_USE_LINUXAIO ) flags |= EVBACKEND_LINUXAIO; |
3010 | if (EV_USE_IOURING ) flags |= EVBACKEND_IOURING; |
3010 | if (EV_USE_IOURING && ev_linux_version () >= 0x050601) flags |= EVBACKEND_IOURING; /* 5.6.1+ */ |
3011 | if (EV_USE_POLL ) flags |= EVBACKEND_POLL; |
3011 | if (EV_USE_POLL ) flags |= EVBACKEND_POLL; |
3012 | if (EV_USE_SELECT ) flags |= EVBACKEND_SELECT; |
3012 | if (EV_USE_SELECT ) flags |= EVBACKEND_SELECT; |
3013 | |
3013 | |
3014 | return flags; |
3014 | return flags; |
3015 | } |
3015 | } |
3016 | |
3016 | |
3017 | ecb_cold |
3017 | ecb_cold |
3018 | unsigned int |
3018 | unsigned int |
… | |
… | |
3048 | |
3048 | |
3049 | ecb_cold |
3049 | ecb_cold |
3050 | unsigned int |
3050 | unsigned int |
3051 | ev_embeddable_backends (void) EV_NOEXCEPT |
3051 | ev_embeddable_backends (void) EV_NOEXCEPT |
3052 | { |
3052 | { |
3053 | int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT; |
3053 | int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT | EVBACKEND_IOURING; |
3054 | |
3054 | |
3055 | /* epoll embeddability broken on all linux versions up to at least 2.6.23 */ |
3055 | /* epoll embeddability broken on all linux versions up to at least 2.6.23 */ |
3056 | if (ev_linux_version () < 0x020620) /* disable it on linux < 2.6.32 */ |
3056 | if (ev_linux_version () < 0x020620) /* disable it on linux < 2.6.32 */ |
3057 | flags &= ~EVBACKEND_EPOLL; |
3057 | flags &= ~EVBACKEND_EPOLL; |
3058 | |
3058 | |
3059 | /* EVBACKEND_LINUXAIO is theoretically embeddable, but suffers from a performance overhead */ |
3059 | /* EVBACKEND_LINUXAIO is theoretically embeddable, but suffers from a performance overhead */ |
3060 | |
|
|
3061 | /* EVBACKEND_IOURING is practically embeddable, but the current implementation is not |
|
|
3062 | * because our backend_fd is the epoll fd we need as fallback. |
|
|
3063 | * if the kernel ever is fixed, this might change... |
|
|
3064 | */ |
|
|
3065 | |
3060 | |
3066 | return flags; |
3061 | return flags; |
3067 | } |
3062 | } |
3068 | |
3063 | |
3069 | unsigned int |
3064 | unsigned int |