Age | Commit message (Collapse) | Author |
|
|
|
2005-05-17 Neal H. Walfield <neal@gnu.org>
* connq.h (struct connq_request): Remove forward.
(connq_listen): Wait for a request to be queued not until there is
a connection attempt. Remove REQ parameter. Update callers.
(connq_request_complete): Remove declaration.
(connq_connect): Wait for a slot to queue a request not until
there is an acceptor. Remove SOCK parameter. Update callers.
(connq_connect_complete): New declaration.
(connq_connect_cancel): New declaration.
* connq.c (struct connq): Remove fields noqueue, queue, length,
head and tail. Add fields head, tail, count, max, connectors and
num_connectors. That is, replace the circular buffer with a
singly linked list.
(qnext): Remove function.
(struct connq_request): Remove field signal, lock, completed and
err. Add field next.
(connq_request_init): Rewrite according to new semantics.
(connq_request_enqueue): New function.
(connq_request_dequeue): New function.
(connq_create): Update according to new semantics.
(connq_destroy): Likewise.
(connq_listen): Rewrite to not block until there is a connector
but until there is a request in the queue.
(connq_request_complete): Remove function.
(connq_connect): Rewrite to not block until there is an acceptor
but until there is space for a request.
(connq_connect_complete): New function.
(connq_connect_cancel): New function.
(connq_compress): Remove dead code.
(connq_set_length): Rewrite.
* socket.c (S_socket_connect): Create the server socket here...
(S_socket_accept): ... not here.
|
|
* connq.c (connq_compress): #if 0 out unused function.
|
|
* connq.c: Include <assert.h>. Reported by Arkadi E. Shishlov
<arkadi@it.lv>.
|
|
* connq.c (connq_destroy): New function.
* connq.h: Prototype connq_destroy.
* sock.c (sock_free): Call connq_destroy when listen or connect
queue exist.
|
|
Unlock CQ->lock when returning EWOULDBLOCK.
|
|
|
|
(connq_listen): Use hurd_condition_wait to detect interrupts instead of
previous ad-hoc mechanism.
(connq_interrupt, connq_interrupt_sock): Functions deleted.
|
|
(connq_interrupt_sock): Use connq_compress to compress the queue.
|
|
|
|
(connq_interrupt): New function.
(connq_set_length): When shrinking the queue, actually do so, and don't leak
memory.
(struct connq): Add the INTERRUPT_SEQ_NUM field, used to detect interupts.
(connq_listen): Detect when we get interrupted, and return EINTR.
Don't lock the accepted request just to get its sock.
(connq_connect): Initialize REQ before using it.
(connq_request_init): Swap the arguments.
(connq_listen, connq_connect, connq_interrupt, connq_set_length): Reverse the
roles of the HEAD and TAIL fields, and make sure they're used correctly.
(qprev): Deleted function.
|
|
|
|
|
|
|
|
|
|
|
|
|