2002-05-13  Marcus Brinkmann  <marcus@gnu.org>

	* demuxer.c (pager_demuxer): Lookup INP->msgh_local_port, rather
	than the remote port, as the kernel swaps them in transit.

2002-05-07  Roland McGrath  <roland@frob.com>

	* data-request.c (_pager_seqnos_memory_object_data_request): Use %z
	format modifier for vm_size_t argument.
	* data-return.c (_pager_do_write_request): Likewise.
	* data-unlock.c (_pager_seqnos_memory_object_data_unlock): Likewise.

2002-04-10  Neal H Walfield  <neal@cs.uml.edu>

       * pager-memcpy.c (pager_memcpy): Pass not the block but the byte
       offset of the page in question to pager_get_error.

2002-04-10  Neal H Walfield  <neal@cs.uml.edu>

	* pager-memcpy.c (VMCOPY_BETTER_THAN_MEMCPY): New macro.
	(pager_memcpy): Rewritten to use vmcopy.

2002-04-01  Neal H Walfield  <neal@cs.uml.edu>

	* data-request.c (_pager_seqnos_memory_object_data_request): Must
	hold P->interlock when calling _pager_allow_termination.

2002-01-19  Roland McGrath  <roland@frob.com>

	* demuxer.c (pager_demuxer): Fix last change so it works.  Add comment.

2002-01-16  Marcus Brinkmann <marcus@gnu.org>

	* demuxer.c (pager_demuxer): If the message was not accepted by
	one of the servers, acquire a reference to the pager and its lock,
	and wait until all previous messages have been processed.  This
	makes sure that the next message that arrives can proceed.
	Reported by Neal H Walfield <neal@cs.uml.edu>

2001-12-29  Roland McGrath  <roland@frob.com>

	* data-init.c, object-create.c: Removed obsolete files.

2001-02-25  Roland McGrath  <roland@frob.com>

	* pager-memcpy.c: Include <string.h> for memcpy decl.

2000-07-25  Thomas Bushnell, BSG  <tb@mit.edu>

	* priv.h (PM_WRITEWAIT): New pagemap bit.
	* data-return.c (_pager_do_write_request): Don't proceed with a
	pageout if one is already in progress.  Once we finish, wake up
	any potential PM_WRITEWAIT waiters.

	* priv.h (PM_INIT): Provide value again.
	* data-return.c (_pager_do_write_request): Track PM_INIT again.

	* priv.h (struct pager): Make pagemap consist of 16-bit elements
	instead of only 8 bits.
	* data-request.c (_pager_seqnos_memory_object_data_request):
	Make PM_ENTRY a short pointer.
	* data-return.c (_pager_do_write_request): Make PM_ENTRIES a short
	pointer.
	* lock-object.c (_pager_lock_object): Make PM_ENTRIES a short
	pointer.
	* mark-error.c (_pager_mark_next_request_error): Make P a short
	pointer.
	(_pager_mark_object_error): Likewise.
	* offer-page.c (pager_offer_page): Make PM_ENTRY a short pointer.
	* object-terminate.c (_pager_free_structure): Interpret
	pagemapsize correctly.
	* pagemap.c (_pager_pagemap_resize): Likewise.

2000-01-24  Roland McGrath  <roland@baalperazim.frob.com>

	* pager-memcpy.c (pager_memcpy): Short-circuit return for zero size.

1999-07-10  Roland McGrath  <roland@baalperazim.frob.com>

	* priv.h: Add #include <sys/mman.h> for munmap decl.
	* pager-memcpy.c: Likewise.

1999-07-09  Thomas Bushnell, BSG  <tb@mit.edu>

	* pagemap.c (_pager_pagemap_resize): Use mmap instead of vm_allocate.

1999-07-03  Thomas Bushnell, BSG  <tb@mit.edu>

	* data-return.c (_pager_do_write_request): Use munmap instead of
	vm_deallocate.
	* object-terminate.c (_pager_free_structure): Likewise.
	* pagemap.c (_pager_pagemap_resize): Likewise.
	* pager-memcpy.c (pager_memcpy): Likewise.

	* pager.h (pager_write_page): Doc adjustment.

Wed Aug 20 14:47:38 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* pager.h: Doc fix.

Thu Feb  6 12:01:36 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* pagemap.c (_pager_pagemap_resize): Return errors.
	* offer-page.c (pager_offer_page): Rewrite for clarity.
	Deal with _pager_pagemap_resize failing.
	* data-request.c (_pager_seqnos_memory_object_data_request): Deal
	with _pager_pagemap_resize failing.
	* lock-object.c (_pager_lock_object): Likewise.
	* mark-error.c (pager_get_error): Likewise.
	* priv.h (_pager_pagemap_resize): Returns an error_t.

Mon Jan 20 16:25:39 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* pager-memcpy.c (pager_memcpy): `preempter' -> `preemptor'.

Thu Sep 12 16:21:14 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): New variable.
	(libpager.so): Delete special depedency.

Tue Aug 13 10:47:47 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* object-terminate.c (_pager_free_structure): Don't bother calling
	mach_port_deallocate if the cells are already null; set the cells
	to null after the deallocation is done.
	(_pager_seqnos_memory_object_terminate): Destroy the rights passed
	in for control and name.

Thu May  9 11:10:11 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pager-create.c: Get rid of link warning.

	* pager-create.c (pager_create): ports_allocate_port ->
 	ports_create_port; if we get an error return a null structure.

Thu May  2 11:17:17 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* offer-page.c (pager_offer_page): Make sure we hold lock across
 	operation.  Also set incore bit when operation is complete.

Tue Apr 30 12:40:33 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Eliminate spurious extra
 	lock acquisition around pagemap frobbing.

Sun Apr 28 15:46:12 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>

	* pager-create.c (pager_create): Add link warning.

Thu Apr 18 13:03:55 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* data-return.c (_pager_do_write_request): If kernel didn't keep a
	copy, turn off INCORE bit.  Don't track INIT bit for now.
	* lock-object.c (_pager_lock_object): If SYNC and SHOULD_FLUSH,
 	then turn off PM_INCORE bits when flush is complete.
	* data-request.c (_pager_seqnos_memory_object_data_request): Set
 	PM_INCORE.
	* priv.h (PM_INIT): Comment out.
	(PM_INCORE): New bit.
	* offer-page.c: New file.
	* Makefile (SRCS): Add offer-page.c.
	* pager.h (pager_offer_page): New function.

Thu Apr 11 17:50:57 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pager-memcpy.c (pager_memcpy [copy]): Return error_t so that
	this function has the proper type as an arg for
	hurd_catch_signal.
	(pager_memcpy): Cast FAULT to proper type in call to
	hurd_catch_signal.

Tue Mar 26 15:38:06 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* lock-completed.c: Include <stdio.h>.

	* data-return.c (_pager_do_write_request): Delete unused label
 	`out'.

	* pager-sync.c (pager_sync, pager_sync_some): Ask for RETURN_ALL
	and not just RETURN_DIRTY, because we treat precious pages as
	dirty in this library.
	* pager-return.c (pager_return, pager_return_some): Likewise.

Mon Mar 18 13:10:32 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pager.h (pager_return, pager_return_some): New declarations.
	* Makefile (SRCS): Add pager-return.c.
	* pager-return.c: New file.

	* pager-flush.c (pager_flush): Lock request should be
 	VM_PROT_NO_CHANGE, not VM_PROT_NONE.
	(pager_flush_some): Likewise.

Wed Mar  6 17:53:20 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Correctly remove LR from
	P's linked list of lock requests.
	* pager-attr.c (pager_change_attributes): Likewise for attributes.

	* lock-object.c (_pager_lock_object): Don't barf anymore.
	* lock-completed.c (_pager_seqnos_memory_object_lock_completed): Ditto.
	* Makefile (SRCS): Remove barf.c.

Wed Feb 21 14:15:26 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Get rid of bletcherous semi.
	Make barf more voluminous.

	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Be picky about always releasing SEQNO.
	* object-init.c (_pager_seqnos_memory_object_init): Likewise.

Tue Feb 20 17:44:59 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Use barf instead of printf.
	* lock-completed.c (_pager_seqnos_memory_object_lock_completed): Ditto.
	* Makefile (SRCS): Add barf.c.

	* data-return.c (_pager_do_write_request): Always wait for and
	release SEQNO if OBJECT is a valid pager.
	* data-request.c (_pager_seqnos_memory_object_data_request): Likewise.
	* object-terminate.c (_pager_seqnos_memory_object_terminate): Likewise.

Tue Feb 20 16:05:42 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Print debugging message when
	SYNC.
	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Print a notice when an incoming lock completion corresponds to no
	outstanding lock request.

Tue Feb 20 15:10:29 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Remove `sync = 0'.

Fri Jan  5 17:09:43 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pager-memcpy.c: New file.
	* Makefile (SRCS): Add pager-memcpy.c.

Thu Jan  4 15:37:21 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pager.h: Declare pager_memcpy.

Mon Oct  9 14:57:48 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* priv.h: Declare _pager_page_errors extern, not common.

        * Makefile: Specify shared library dependencies.

Wed Sep 13 14:49:53 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
 	Don't push the locks_pending field negative in the case where the
 	pager was terminated before we get called.

Tue Sep  5 15:50:12 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* chg-compl.c (_pager_seqnos_memory_object_change_completed):
	Don't push the attrs_pending field negative in the case where the
	pager was terminated before we get called.

Wed Aug 23 15:00:46 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (SRCS): Make this the main list of files, from which
	the others are derived.
	(COBJS, REMHDRS): Removed.
	(OBJS): Derived mostly from $(SRCS).

Fri Jul 21 16:43:19 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* object-create.c (_pager_seqnos_memory_object_create): Drop
	initial reference created by ports_intern_external_reference when
	we're done with P.

Thu Jul  6 15:36:36 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile: Removed dependencies that are now automatically
 	generated.

Mon Jun 26 20:15:03 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* get-upi.c: New file.
	* pager.h (pager_get_upi): New function.
	* Makefile (COBJS): Add get-upi.o.

Thu Jun 22 11:43:15 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* object-init.c (_pager_seqnos_memory_object_init): Rather than an
	empty `if' body and an unconditional return, how about a real
	test?

	* notify-stubs.c: New file.
	* Makefile (COBJS): Add notify-stubs.o.

Tue Jun 20 12:44:22 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* chg-compl.c (_pager_seqnos_memory_object_change_completed): Use
	new ports routines.
	* pager-shutdown.c (pager_shutdown): Likewise.
	* object-terminate.c (_pager_free_structure): Likewise.
	* object-init.c (_pager_seqnos_memory_object_init): Likewise.
	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Likewise.
	* data-unlock.c (_pager_seqnos_memory_object_data_unlock): Likewise.
	* data-return.c (_pager_do_write_request): Likewise.
	* data-request.c (_pager_seqnos_memory_object_data_request):
	Likewise.
	* pager-create.c (pager_create): New parm BUCKET.  Allocate port
	using new ports interface.  Arrange to have _pager_class
	initialized at startup.
	* clean.c, dropweak.c: New files.
	* no-senders.c: Rename pager_no_senders to
	_pager_do_seqnos_mach_notify_no_senders.  Lookup up port right
	ourselves.  Remove function pager_clean (now in clean.c).
	* priv.h (_pager_class): New var.
	(_pager_clean, _pager_real_dropweak): New decls.
	* Makefile (COBJS): Delete reference.o.  Add clean.o and dropweak.o
	(OBJS): Add notifyServer.o.
	(demuxer.o): Depend on notify_S.h.
	* demuxer.c: Include "notify_S.h".
	(pager_demuxer): Declare and use _pager_seqnos_notify_server.
	* pager.h: Include <hurd/ports.h>.
	(pager_no_senders, pager_reference, pager_unreference,
	pager_port_type, pager_clean): Remove declarations.
	(pager_create): New parm BUCKET.
	(pager_clean): Doc fix.
	(pager_dropweak): New decl.
	* reference.c: Deleted file.

Thu May 11 11:19:44 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* priv.h (PM_NEXTERROR, SET_PM_NEXTERROR): Mask 2-bit error code
	with 0x3, not 0x2!

	* mark-error.c (_pager_mark_next_request_error,
	_pager_mark_object_error): Put the error code in the correct place
	in the pagemap rather than always at the beginning.
	(pager_get_error): Get the error code from the pagemap rather than
	just using the pagemap offset!

Wed Nov 23 00:28:19 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* demuxer.c (pager_demuxer): Call
	_pager_seqnos_memory_object_server, not
	seqnos_memory_object_server.

Tue Nov  8 14:15:01 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* lock-object.c (_pager_lock_object): Hammer SYNC to zero for now;
	there's some deadlock bug in noticing when the sync finishes.

Tue Aug 30 17:55:34 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* data-return.c: Include <assert.h>.
	(_pager_seqnos_memory_object_data_return): Use return correctly.

Mon Aug 29 17:30:52 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* priv.h (PM_INIT): New pagemap bit.
	* data-return.c (_pager_do_write-request): Set PM_INIT for
	affected pages.  New var `omitdata' hold a bitmap of the
	pages that we are not actually writing.  Set accordingly
	while looking through pagemap before starting I/O.  Don't
	actually call I/O on these pages or frob the page map with them
	later.

	* data-return.c (_pager_seqnos_memory_object_data_return): Split
	into two functions; _pager_do_write_request does the real work
	now.

	* object-create.c: New file.
	* data-init.c: New file.

Fri Jul 22 11:54:05 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile: Rewritten to use new scheme.
	* data-request.c: Include "memory_object_S.h" instead of
	"memory_object.h".
	* data-return.c: Likewise.
	* data-unlock.c: Likewise.
	* lock-completed: Likewise.
	* stubs.c: Likewise.
	* object-init.c: Likewise.
	* demuxer.c: Likewise.
	* object-terminate.c: Likewise.

Tue Jul  5 14:14:17 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (TAGSHDRS): New variable.

Wed Jun  1 11:41:24 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* pager-attr.c (pager_change_attributes): Return immediately
	if we are already in the requested state.

	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Call ports_done_with_port before returning to free reference
	created by ports_check_port_type.
	* chg-compl.c (_pager_seqnos_memory_object_change_completed):
	Likewise.

	* seqnos.c (_pager_release_seqno): New second arg SEQNO.
	Set p->seqno here.  All callers changed.
	(_pager_wait_for_seqno): Don't set p->seqno here; then it
	might get released before we actually call _pager_release_seqno.
	* priv.h (_pager_release_seqno): Declare new second arg.

	* priv.h (KERNEL_INIT_RACE): New compilation option.  All the
	changes in this block are conditionalized by this macro.
	* priv.h (struct pager): New members init_head and init_tail.
	(struct pending_init): New type.
	* object-init.c (_pager_seqnos_memory_object_init): If the object
	is not ready for init, then queue the init for later processing.
	* object-terminate.c (_pager_seqnos_memory_object_terminate): If
	there is a pending init, return it here.
	* no-senders.c (pager_clean): Destroy all pending inits here.

	* object-terminate.c (_pager_free_structure): Don't unlock
	interlock or free the seqno here.
	(_pager_seqnos_memory_object_terminate): Unlock interlock and
	free seqno after calling _pager_free_structure.
	* no-senders.c (pager_clean): Unlock interlock after calling
	_pager_free_structure.  Don't free seqno here at all.

Tue May 24 15:25:54 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* data-return.c (_pager_seqnos_memory_object_data_return): New
	vars NPAGES, I, and PAGERRS.  Rename var PM_ENTRY to be
	PM_ENTRIES.  Deal with multiple-page data_return calls by dealing
	with multiple pagemap slots and calling pager_write_page multiple
	times.

	* data-return.c (_pager_seqnos_memory_object_data_return): Fix
	printf messages; include length in bogus length messages.

	*data-unlock (_pager_seqnos_memory_object_data_unlock): Likewise.

Mon May 23 13:06:31 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* data-request.c (_pager_seqnos_memory_object_data_request):
	Report length in bogus arg messages; terminate messages with
	newlines.

	* chg-compl.c: Include <stdio.h>.

	* priv.h (struct pager [may_cache, copy_strategy]):  New members.
	* pager.h (pager_create_pager): Added new args MAY_CACHE and
	COPY_STRATEGY.
	(pager_report_attributes): Deleted declaration.
	* object-init.c (_pager_seqnos_memory_object_init): Set attributes
	from values in P rather than by calling pager_report_attributes.
	* pager-attr.c (pager_change_attributes): Don't panic if the
	pager isn't yet initialized by the kernel; record the provided
	values in may_cache and copy_strategy.

	* pager-attr.c: Spelling fix.
	Include <assert.h>.
	* Makefile (COBJS): Added pager-attr.o.

Fri May 20 15:41:12 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
	Delete unneeded variable wakeup.  Break out of loop as soon
	as we find the right record.  Call condition_broadcast only
	if we need bother.

	* pager.h (pager_change_attributes, pager_report_attributes):
	New declarations.
	* priv.h (struct attribute_request): New structure.
	(struct pager [attribute_requests]): New member.
	* pager-create.c (pager_create): Initialize new member.
	* object-init.c (_pager_seqnos_memory_object_init): Call
	pager_report_attributes for correct args to memory_object_ready.
	* pager-attr.c: New file.
	* object-terminate.c (_pager_free_structure): Wakeup pending
	pager_change_attribute requests.
	* stubs.c (_pager_seqnos_memory_object_change_completed): Deleted
	function.
	* chg-compl.c: New file.
	* Makefile (COBJS): Added chg-compl.o.

Thu May  5 07:49:21 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stubs.c (_pager_seqnos_memory_object_supply_completed): Change
	RESULT arg to type kern_return_t; error_t is not compatible.

	* demuxer.c (pager_demuxer): Declare seqnos_memory_object_server.

	* stubs.c, lock-completed.c: Changed return type of all RPC server
	functions to kern_return_t.  error_t is not compatible with the
	declarations in the mig-generated header files.

	* Makefile: Change uses of $(headers) to $(includedir).

Tue Apr 26 15:08:57 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* object-init.c (_pager_seqnos_memory_object_init): Only check
	for inits of active objects AFTER waiting for seqno; otherwise we
	could race against a prior terminate.
