From 67265bf8266d1d1fc41a06959df0bb3c095563b2 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Mon, 4 Sep 2017 12:51:08 +0200 Subject: [PATCH] epoll.c: move epoll_create() implementation further down --- src/epoll.c | 62 ++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/src/epoll.c b/src/epoll.c index d62366e..69a7f84 100644 --- a/src/epoll.c +++ b/src/epoll.c @@ -94,38 +94,9 @@ static inline void _ep_io_req_free(_ep_io_req_t* io_req) { free(io_req); } -epoll_t epoll_create(void) { - _ep_port_data_t* port_data; - HANDLE iocp; - /* If necessary, do global initialization first. This is totally not - * thread-safe at the moment. - */ - if (!_ep_initialized) { - if (_ep_initialize() < 0) - return NULL; - _ep_initialized = 1; - } - port_data = malloc(sizeof *port_data); - if (port_data == NULL) - return_error(NULL, ERROR_NOT_ENOUGH_MEMORY); - iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); - if (iocp == INVALID_HANDLE_VALUE) { - free(port_data); - return_error(NULL); - } - - port_data->iocp = iocp; - port_data->attn_list = NULL; - port_data->pending_reqs_count = 0; - - memset(&port_data->peer_sockets, 0, sizeof port_data->peer_sockets); - RB_INIT(&port_data->sock_data_tree); - - return (epoll_t) port_data; -} static int _ep_get_related_sockets(_ep_port_data_t* port_data, SOCKET sock, @@ -490,6 +461,39 @@ int epoll_wait(epoll_t port_handle, return_success(0); } +epoll_t epoll_create(void) { + _ep_port_data_t* port_data; + HANDLE iocp; + + /* If necessary, do global initialization first. This is totally not + * thread-safe at the moment. + */ + if (!_ep_initialized) { + if (_ep_initialize() < 0) + return NULL; + _ep_initialized = 1; + } + + port_data = malloc(sizeof *port_data); + if (port_data == NULL) + return_error(NULL, ERROR_NOT_ENOUGH_MEMORY); + + iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); + if (iocp == INVALID_HANDLE_VALUE) { + free(port_data); + return_error(NULL); + } + + port_data->iocp = iocp; + port_data->attn_list = NULL; + port_data->pending_reqs_count = 0; + + memset(&port_data->peer_sockets, 0, sizeof port_data->peer_sockets); + RB_INIT(&port_data->sock_data_tree); + + return (epoll_t)port_data; +} + int epoll_close(epoll_t port_handle) { _ep_port_data_t* port_data; _ep_sock_data_t* sock_data;