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 |
|