Mon Oct 21 21:58:03 1996 Thomas Bushnell, n/BSG * 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. Thu Sep 12 16:24:41 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (libpipe.so): Delete special dependency. Tue Jul 16 11:33:34 1996 Michael I. Bushnell, p/BSG * pipe.h (EWOULDBLOCK): Define to work around new libc bug. Mon Jul 1 17:29:07 1996 Miles Bader * pq.c (pq_queue): Initialize PACKET->buf_vm_alloced. Tue Jan 23 12:44:40 1996 Miles Bader * pq.h (packet_ensure, packet_ensure_efficiently): Use packet_fit(). (packet_fit): New function. * pq.c (packet_read): If there's lots of empty space at the beginning of a vm_alloced buffer, deallocate it. Mon Jan 22 17:12:39 1996 Miles Bader * pq.c (packet_realloc): Reflect in the new values of BUF_START & BUF_END that we've removed any empty space at the beginning of BUF. Sat Jan 13 13:56:13 1996 Miles Bader * pq.h (packet_ensure, packet_ensure_efficiently): Use packet_new_size() instead of packet_size_adjust(). (packet_size_adjust): Declaration removed. (packet_new_size): New declaration. * pq.c (packet_size_adjust): Function removed. (packet_new_size): New function. * pq.c (packet_read): Re-arrange to be slightly less confusing. Reverse start-past-buf-beginning test that may have leaked memory. * pipe.c (pipe_send): For non-blocking writes, avoid writing more than the user requested. Fri Jan 12 12:15:06 1996 Miles Bader * pq.c (pq_queue): Initialize the ports_alloced field. (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 become negative. Mon Oct 9 14:57:48 1995 Roland McGrath * Makefile: Specify shared library dependencies. Thu Sep 7 09:08:30 1995 Miles Bader * pq.c (packet_read): Don't leave PACKET in a fucked up state when it's vm_allocate'd but doesn't a page-multiple amount of data and we're reading everything. * pipe.c (_pipe_no_readers): REALLY wake up writers when the pipe breaks. Fri Sep 1 10:42:03 1995 Miles Bader * pipe.c (_pipe_no_readers): Wake up write selects too when the pipe breaks. Thu Aug 31 14:39:21 1995 Miles Bader * pipe.c (pipe_send): Make writes blockable. (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): New function. (pipe_multiple_lock): New variable. * pipe.h (pipe_wait): Renamed to `pipe_wait_readable'. (pipe_select): Renamed to `pipe_select_readable'. (pipe_writable, pipe_wait_writable, pipe_select_writable): New funcs. (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. Tue Aug 29 14:37:49 1995 Miles Bader * pipe.c (pipe_send): Use condition_broadcast, not condition_signal. * pipe.h (pipe_select): New function. * pipe.h (struct pipe): Remove interrupt_seq_num field. (pipe_wait): Use hurd_condition_wait to detect interrupts instead of previous ad-hoc mechanism. * pipe.c (pipe_create): Don't initialize interrupt_seq_num field. * pipe.h (pipe_acquire_reader, pipe_acquire_writer, pipe_add_reader, pipe_add_writer): `aquire' -> `acquire'. Fri Aug 11 18:35:32 1995 Miles Bader * pipe.c (pipe_create): Initialize READERS & WRITERS, not REFS. (_pipe_first_writer): New function. (_pipe_no_writers, _pipe_no_writers): New function. (pipe_break): Function deleted. Wed Aug 9 12:53:05 1995 Miles Bader * pipe.h (struct pipe): Keep separate ref counts for readers and writers. (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. Tue Aug 1 12:37:27 1995 Miles Bader * pipe.c (pipe_recv): Get rid of code to deal with getting the source address from the control packet if there is no data packet, since pipe_write always writes a data packet. Mon Jul 31 14:50:00 1995 Miles Bader * pipe.c (pipe_recv): Assert that a control packet should only have a source address 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. Fri Jul 28 23:03:27 1995 Miles Bader * pipe.h (stream_pipe_class, dgram_pipe_class, seqpack_pipe_class): Make these declarations extern so they don't fuck up initialization. (seqpacket_pipe_class): Renamed to `seqpack_pipe_class'.