117 Commits

Author SHA1 Message Date
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
Bert Belder
d06696ee78 tree: remove RB_AUGMENT calls 2017-09-10 20:40:44 +02:00
Bert Belder
d36adf242a socket: simplify update queue management 2017-09-10 20:40:44 +02:00
Bert Belder
ddb39a9ab6 queue: add QUEUE_ENQUEUED() to determine if an element is in a queue 2017-09-10 20:40:44 +02:00
Bert Belder
dfab856583 queue: rename QUEUE_ADD to QUEUE_MERGE
The old name was really confusing.
2017-09-10 20:40:44 +02:00
Bert Belder
e64b96542e queue: prefix private macros with underscore 2017-09-10 20:40:44 +02:00
Bert Belder
2b3fddafd1 util: add unused() macro 2017-09-10 20:40:44 +02:00
Bert Belder
bbe28c8729 socket: separate public from private ep_sock_t fields 2017-09-10 20:40:44 +02:00
Bert Belder
9061004ca2 epoll: make assignment in conditional expression palatable to msvc 2017-09-10 20:40:43 +02:00
Bert Belder
2a15b3a371 epoll: fix logic error in epoll_wait() timeout recomputation 2017-09-10 20:40:43 +02:00
Bert Belder
e36129b91b handle-tree: fix potential integer overflow in _handle_tree_compare 2017-09-10 20:40:42 +02:00
Bert Belder
c1e99cb100 handle-tree: avoid clang incomplete initializer warning 2017-09-10 20:40:42 +02:00
Bert Belder
07b5e727a3 error: avoid clang signed/unsigned comparison warning 2017-09-10 20:40:42 +02:00
Bert Belder
0ac3c921bd src: decorate internal APIs with EPOLL_INTERNAL 2017-09-10 20:40:42 +02:00
Bert Belder
3d1bae5073 epoll: move the socket lookup tree to it's own file 2017-09-10 20:39:49 +02:00
Bert Belder
0d941fd52a epoll: split out socket related code 2017-09-10 20:39:42 +02:00
Bert Belder
1a8c20ef36 tree.h: remove splay 2017-09-10 20:39:42 +02:00
Bert Belder
91069b2271 epoll: split out poll request functions into poll-request.[ch] 2017-09-10 20:39:36 +02:00
Bert Belder
89099e3103 src: major refactor 2017-09-10 20:39:19 +02:00
Bert Belder
67265bf826 epoll.c: move epoll_create() implementation further down 2017-09-10 20:39:18 +02:00
Bert Belder
37a36ea741 epoll: mark local functions static 2017-09-10 20:39:18 +02:00
Bert Belder
b0586e2fe7 epoll: factor out _ep_get_related_sockets() 2017-09-10 20:39:18 +02:00
Bert Belder
ee6ba5e849 epoll: move smaller _ep_sock_data fields to the bottom 2017-09-10 20:39:18 +02:00
Bert Belder
667b9a4b1d epoll: use epoll_data_t for per-socket user data field 2017-09-10 20:39:18 +02:00