Tue Jul 16 11:33:34 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pipe.h (EWOULDBLOCK): Define to work around new libc bug.

Mon Jul  1 17:29:07 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* pq.c (pq_queue): Initialize PACKET->buf_vm_alloced.

Tue Jan 23 12:44:40 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <roland@churchy.gnu.ai.mit.edu>

        * Makefile: Specify shared library dependencies.

Thu Sep  7 09:08:30 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* pipe.c (_pipe_no_readers): Wake up write selects too when the
	pipe breaks.

Thu Aug 31 14:39:21 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@geech.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@geech.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* 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'.
