Age | Commit message (Collapse) | Author |
|
* pipe.h: Add extern inline protection.
* pq.h: Likewise.
* pipe-funcs.c, pq-funcs.c: New files.
* Makefile (SRCS): Add pipe-funcs.c and pq-funcs.c.
|
|
|
|
|
|
|
|
|
|
(packet_ensure, packet_ensure_efficiently): Use packet_fit().
|
|
vm_alloced buffer, deallocate it.
|
|
removed any empty space at the beginning of BUF.
|
|
Use packet_new_size() instead of packet_size_adjust().
(packet_size_adjust): Declaration removed.
(packet_new_size): New declaration.
|
|
For non-blocking writes, avoid writing more than the user requested.
|
|
(packet_new_size): New function.
(packet_read): Re-arrange to be slightly less confusing.
Reverse start-past-buf-beginning test that may have leaked memory.
|
|
(packet_read): When a page-aligned read consumes the whole buffer, but there's
a non-page-multiple amount available, don't let buf_len go negative.
|
|
|
|
|
|
but doesn't a page-multiple amount of data and we're reading everything.
|
|
|
|
(pipe_select): Renamed to `pipe_select_readable'.
(pipe_writable, pipe_wait_writable, pipe_select_writable): New functions.
(pipe_acquire_reader): Call _pipe_first_reader if necessary.
(_pipe_first_reader): New declaration.
(struct pipe): New fields: `write_limit', `write_atomic',
`pending_writes', `pending_write_selects'.
(struct pipe): `pending_selects' changed to `pending_read_selects'.
(pipe_pair_select): New declaration.
|
|
`pipe_select_read' --> `pipe_select_readable'.
`pipe_select_write' --> `pipe_select_writable'.
|
|
(pipe_recv): Wakeup blocked writers.
(pipe_kick): Function deleted.
(pipe_create): Make connection-oriented pipes start out broken.
(_pipe_first_reader): New function.
(_pipe_first_writer): Don't check whether PIPE is connection- oriented before
clearing PIPE_BROKEN, as otherwise it will never be set.
(pipe_pair_select_read_write): New function.
(pipe_multiple_lock): New variable.
|
|
|
|
|
|
|
|
(pipe_wait): Use hurd_condition_wait to detect interrupts instead of previous
ad-hoc mechanism.
|
|
`aquire' -> `acquire'.
|
|
|
|
(_pipe_first_writer): New function.
(_pipe_no_writers, _pipe_no_writers): New function.
(pipe_break): Function deleted.
|
|
(pipe_aquire_reader, pipe_aquire_writer): New functions.
(pipe_release_reader, pipe_release_writer): New functions.
(pipe_add_reader, pipe_add_writer): New functions.
(pipe_remove_reader, pipe_remove_writer): New functions.
(_pipe_first_writer): New function decl.
(_pipe_no_writers, _pipe_no_writers): New function decl.
(pipe_aquire, pipe_release): Function deleted.
(pipe_break): Function decl deleted.
|
|
control packet if there is no data packet, since pipe_write always writes a
data packet.
|
|
if there is no corresponding data packet.
(pipe_send): Change the test to determine whether we should write a control
packet, so that we only do so if we need to. Also, don't record the source
address in control packets, as it's recorded in the following data packet
anyway, and this prevents it from being dealloc'd twice.
|
|
Make these declarations extern so they don't fuck up initialization.
(seqpacket_pipe_class): Renamed to `seqpack_pipe_class'.
|
|
|