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