240 Commits

Author SHA1 Message Date
Bert Belder
347ad5399e error: shrink the error-to-errno map 2017-09-27 17:13:54 +02:00
Bert Belder
aad7c9151e afd: use RtlNtStatusToDosError to map NTSTATUS to error code 2017-09-27 17:05:34 +02:00
Bert Belder
8188c3df79 ntstatus: remove some unused definitions 2017-09-26 21:20:03 +02:00
Bert Belder
20e76abf32 nt: declarators -> attributes 2017-09-26 21:18:42 +02:00
Bert Belder
e3dda41f53 util: consistent naming 2017-09-26 21:14:44 +02:00
Bert Belder
d99e748ef8 sock: remove ep_sock_from_overlapped() internal API 2017-09-26 21:12:28 +02:00
Bert Belder
ba8823ad87 init: make global initialization thread-safe 2017-09-26 02:14:53 +02:00
Bert Belder
3642064c17 util: reorder the flavors of container_of 2017-09-26 02:14:53 +02:00
Bert Belder
809a6d84bf sock: remove ep_sock_find_in_tree() internal api 2017-09-26 02:14:53 +02:00
Bert Belder
3151f51417 port: improve _ep_port_feed_events() readability 2017-09-26 02:14:53 +02:00
Bert Belder
9a3952cdfb port: bump max completions that may be received from an IOCP port 2017-09-26 02:14:53 +02:00
Bert Belder
7b43e9c9f0 tree: don't set error on failure, this is the caller's responsibility 2017-09-25 20:35:48 +02:00
Bert Belder
562bf271df src: name header guard #defines consistently 2017-09-25 20:35:47 +02:00
Bert Belder
b61fd61008 src: rename epoll-socket.* to sock.* 2017-09-25 20:35:47 +02:00
Bert Belder
fa10bfc829 api: move epoll_xxx functions to api.c 2017-09-25 20:35:41 +02:00
Bert Belder
4ea40313be epoll: epoll_create(1) to match linux API more closely 2017-09-25 19:54:20 +02:00
Bert Belder
929ea10ebd port: immediately update poll set when other threads are polling 2017-09-25 19:42:01 +02:00
Bert Belder
729fa3c733 port: move IOCP port creation to ep_port_new() 2017-09-25 19:32:13 +02:00
Bert Belder
a6c2c49071 port: make ep_port_ctl() thread-safe 2017-09-25 19:26:40 +02:00
Bert Belder
851a5d7346 port: move ep_port_ctl() to port.c 2017-09-25 19:25:30 +02:00
Bert Belder
e37f4b2ccb port: make ep_port_wait() thread-safe 2017-09-25 19:18:13 +02:00
Bert Belder
d3a69678cf port: move ep_port_wait() to port.c 2017-09-25 19:17:58 +02:00
Bert Belder
d285bcfab7 epoll: break up _ep_wait() into two functions 2017-09-25 19:12:04 +02:00
Bert Belder
e4f213007f epoll: epoll_wait() should check whether maxevents is valid 2017-09-25 19:09:51 +02:00
Bert Belder
6629ae68b5 port: ep_port_feed_events() should return int not size_t 2017-09-25 19:08:25 +02:00
Bert Belder
fddb30bfd8 port: make ep_port_close() thread-safe 2017-09-25 18:35:37 +02:00
Bert Belder
258bc13100 port: make ep_port_delete() thread-safe 2017-09-25 18:35:37 +02:00
Bert Belder
7476633975 port: add a per-port lock 2017-09-25 18:35:36 +02:00
Bert Belder
f1383cadfd port: un-DRY closing IOCP port, don't fail delete if CloseHandle fails 2017-09-25 18:35:30 +02:00
Bert Belder
45728a1e90 api: reference the epoll port by windows HANDLE 2017-09-25 18:15:17 +02:00
Bert Belder
fd83d12648 port: move closing the IOCP port to it's own internal API 2017-09-25 18:15:17 +02:00
Bert Belder
3c2c4bfce7 api: use HANDLE and SOCKET types instead of their underlying types 2017-09-25 18:15:17 +02:00
Bert Belder
16f62017ba epoll: add global init function 2017-09-25 18:15:06 +02:00
Bert Belder
049a7b8be2 reflock-tree: add mechanism for pointer-safe tree lookups 2017-09-25 17:53:11 +02:00
Bert Belder
b9f4578a96 socket: use safe_container_of() in ep_sock_find_in_tree() 2017-09-25 17:52:08 +02:00
Bert Belder
1e24f44238 util: add safe_container_of() macro definition 2017-09-25 17:51:43 +02:00
Bert Belder
bb23a2b9f0 reflock: make it much simpler 2017-09-25 17:51:03 +02:00
Bert Belder
73d22b4419 init: rename global init functions to be more explicit 2017-09-23 14:05:35 +02:00
Bert Belder
6029e38d79 reflock: first version of combined reference counter and lock 2017-09-23 14:05:30 +02:00
Bert Belder
4a0354a6d2 nt: add definitions for keyed event support 2017-09-23 13:58:20 +02:00
Bert Belder
773d9cace3 util: add static_assert() polyfill for clang 2017-09-23 13:58:20 +02:00
Bert Belder
91cb493efc poll-group: use new queue APIs to move groups inside the allocator queue 2017-09-14 16:41:17 +02:00
Bert Belder
048d2cc363 queue: add internal queue_move_first() and queue_move_last() APIs 2017-09-14 16:41:16 +02:00
Bert Belder
34df608b98 queue: move implementation from header to queue.c 2017-09-14 16:41:16 +02:00
Bert Belder
2a8fd0f5a2 epoll: rename definition to _EPOLL_MAX_COMPLETION_COUNT 2017-09-14 16:41:16 +02:00
Bert Belder
3705120f2c epoll: merge all public APIs into epoll.c 2017-09-14 16:41:16 +02:00
Bert Belder
b2c69365e8 port: make ep_port_(add|del)_socket take ep_sock_t instead of tree_node_t 2017-09-14 16:41:16 +02:00
Bert Belder
0274e9d46b port: add internal ep_port_find_socket() API 2017-09-14 16:41:16 +02:00
Bert Belder
cc3bcb8490 port: move implementation to port.c 2017-09-14 16:41:16 +02:00
Bert Belder
4c049baaf5 socket: rename ep_sock_find() to ep_sock_find_in_tree() 2017-09-14 16:41:16 +02:00
Bert Belder
565ded935d tree: allow keys with value zero 2017-09-14 16:41:16 +02:00
Bert Belder
cd7669ef66 src: move AFD functions to afd.c, rewrite ep_sock initialization 2017-09-14 16:41:11 +02:00
Bert Belder
83efbfe2c7 epoll: add omitted 'static' keyword 2017-09-14 14:08:50 +02:00
Bert Belder
6363abe641 socket: get rid of _ep_sock_maybe_free() 2017-09-14 04:34:13 +02:00
Bert Belder
ec539fadfc socket: cancel poll request when socket is deleted w/ EPOLL_CTL_DEL 2017-09-14 04:34:12 +02:00
Bert Belder
34a9a4d4a7 poll-group: rename user_count to group_size 2017-09-14 04:34:12 +02:00
Bert Belder
dc742fa01e poll-group: rename _DS_MAX_USERS to _POLL_GROUP_MAX_SIZE 2017-09-14 04:06:18 +02:00
Bert Belder
427e0a0209 socket: use actual enum type for poll_status field 2017-09-14 03:54:54 +02:00
Bert Belder
0938dfda83 socket: make the poll request an integral part of struct ep_sock 2017-09-14 03:54:54 +02:00
Bert Belder
fe967a01a5 socket: make ep_sock_update() more readable 2017-09-14 03:54:54 +02:00
Bert Belder
6037bcf8ab socket: turn the 'deleted' flag into a bitfield 2017-09-14 03:54:49 +02:00
Bert Belder
3af19ec71c socket: get rid of _(set|clear)_latest_poll_req() functions 2017-09-14 03:13:18 +02:00
Bert Belder
022f3fcbd7 socket: rename latest_poll_req_events to pending_events 2017-09-14 03:08:02 +02:00
Bert Belder
bc82503d09 socket: make struct member order more logical 2017-09-14 03:06:33 +02:00
Bert Belder
84e92cbeaa poll-req: make poll_req and ep_sock lifecycles coincide completely 2017-09-14 03:03:37 +02:00
Bert Belder
423e85df94 socket: do not track or use poll_req_count, use poll_status instead 2017-09-14 03:03:12 +02:00
Bert Belder
99ddd49dfe socket: use an enum to track poll { idle, pending, cancelled } status 2017-09-14 03:02:46 +02:00
Bert Belder
6ea33eca54 socket: make ep_sock_update() control flow a little more readable 2017-09-14 03:02:46 +02:00
Bert Belder
0155abf6e2 socket: remove _is_latest_poll_req() 2017-09-14 03:02:45 +02:00
Bert Belder
0bd24cc1e5 port: do not track poll request count 2017-09-14 03:02:45 +02:00
Bert Belder
ee6a1e300a socket: remove unused unused() statement
See what I did there?
2017-09-14 03:02:45 +02:00
Bert Belder
b4aeb52a6b poll-request: fix typo in poll_req_cancel() 2017-09-14 03:02:45 +02:00
Bert Belder
c4f9f5c3d7 epoll: drop include <stdio.h> 2017-09-14 01:45:41 +02:00
Bert Belder
a8807482b2 port: free the port through _ep_port_free() 2017-09-14 00:56:22 +02:00
Bert Belder
45aaa10a62 poll-group: use 1 driver socket per N sockets, vs. 1 for *all* sockets 2017-09-14 00:55:01 +02:00
Bert Belder
1ad0497c9c poll-request: don't use exclusive polls now that we can cancel old ones 2017-09-14 00:55:01 +02:00
Bert Belder
43c159a576 port: when closing, use ep_sock_force_delete() instead of draining 2017-09-14 00:55:01 +02:00
Bert Belder
258ce95f79 socket: add ep_sock_force_delete() 2017-09-14 00:55:00 +02:00
Bert Belder
caade91a1a socket: never have more than one outstanding poll request
Instead, use the new poll_req_cancel() API to cancel poll requests that
are outdated, then submit a new poll request after they return.
2017-09-14 00:53:25 +02:00
Bert Belder
f2580ab432 socket: fix serious bug/typo in ep_sock_find() 2017-09-14 00:53:24 +02:00
Bert Belder
153bc1138a socket: fix EPOLLONESHOT semantics
When EPOLLONESHOT is specified, rather than deleting the socket, just
clear it's event mask.
2017-09-14 00:53:13 +02:00
Bert Belder
530da04ede socket: make comparison with zero explicit 2017-09-14 00:53:13 +02:00
Bert Belder
b4ca2e330b poll-request: implement poll_req_cancel() 2017-09-14 00:53:07 +02:00
Bert Belder
3696de480a socket: set _EP_SOCK_DELETED immediately after checking it 2017-09-14 00:53:07 +02:00
Bert Belder
4f16b267ad socket: make ep_sock_delete() return void 2017-09-14 00:53:01 +02:00
Bert Belder
eaec721f0c ntstatus: add definition for STATUS_CANCELLED 2017-09-14 00:49:23 +02:00
Bert Belder
6e92f49be1 afd: name afd_poll() arguments more clearly 2017-09-11 17:23:42 +02:00
Bert Belder
02dceacbe3 port: move epoll_(create|close) public APIs to api.c 2017-09-11 17:14:43 +02:00
Bert Belder
6448bd2203 socket: move socket assignment to ep_sock constructor 2017-09-11 17:13:18 +02:00
Bert Belder
184ba5b0e0 init: move global initialization to init.c 2017-09-11 15:18:12 +02:00
Bert Belder
7f8cdf7448 epoll: remove unused declaration 2017-09-11 03:51:48 +02:00
Bert Belder
eff08efcb8 socket: refactor lookup logic 2017-09-11 03:51:48 +02:00
Bert Belder
c4f2b71db4 tree: rename handle_tree -> tree 2017-09-11 03:51:47 +02:00
Bert Belder
4dd57efc8b rb: rename tree.h -> rb.h 2017-09-11 03:51:47 +02:00
Bert Belder
854f8a552c src: use 'queue_node' and 'tree_node' only 2017-09-11 03:51:47 +02:00
Bert Belder
1f795ae60f port: manipulate request count through ep_port_(add|del)_req 2017-09-11 03:51:43 +02:00
Bert Belder
4d9a24a708 queue: re-implement 2017-09-11 01:29:45 +02:00
Bert Belder
4568ce69d8 socket: refactor ep_sock delete/free flow 2017-09-11 01:26:44 +02:00
Bert Belder
8237c57951 port: rename internal APIs 2017-09-10 21:00:06 +02:00
Bert Belder
894b48b2bd tree: drop ARGSUSED comments 2017-09-10 20:51:11 +02:00