2002-04-01 Neal H Walfield * data-request.c (_pager_seqnos_memory_object_data_request): Must hold P->interlock when calling _pager_allow_termination. 2002-01-19 Roland McGrath * demuxer.c (pager_demuxer): Fix last change so it works. Add comment. 2001-01-16 Marcus Brinkmann * 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 2001-12-29 Roland McGrath * data-init.c, object-create.c: Removed obsolete files. 2001-02-25 Roland McGrath * pager-memcpy.c: Include for memcpy decl. 2000-07-25 Thomas Bushnell, BSG * 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 * pager-memcpy.c (pager_memcpy): Short-circuit return for zero size. 1999-07-10 Roland McGrath * priv.h: Add #include for munmap decl. * pager-memcpy.c: Likewise. 1999-07-09 Thomas Bushnell, BSG * pagemap.c (_pager_pagemap_resize): Use mmap instead of vm_allocate. 1999-07-03 Thomas Bushnell, BSG * 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 * pager.h: Doc fix. Thu Feb 6 12:01:36 1997 Miles Bader * 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 * pager-memcpy.c (pager_memcpy): `preempter' -> `preemptor'. Thu Sep 12 16:21:14 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (libpager.so): Delete special depedency. Tue Aug 13 10:47:47 1996 Thomas Bushnell, n/BSG * 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 * 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 * 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 * lock-object.c (_pager_lock_object): Eliminate spurious extra lock acquisition around pagemap frobbing. Sun Apr 28 15:46:12 1996 Roland McGrath * pager-create.c (pager_create): Add link warning. Thu Apr 18 13:03:55 1996 Michael I. Bushnell, p/BSG * 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 * 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 * lock-completed.c: Include . * 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 * 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 * 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 * 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 * 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 * 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 * lock-object.c (_pager_lock_object): Remove `sync = 0'. Fri Jan 5 17:09:43 1996 Roland McGrath * pager-memcpy.c: New file. * Makefile (SRCS): Add pager-memcpy.c. Thu Jan 4 15:37:21 1996 Roland McGrath * pager.h: Declare pager_memcpy. Mon Oct 9 14:57:48 1995 Roland McGrath * 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 * 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 * 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 * 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 * 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 * Makefile: Removed dependencies that are now automatically generated. Mon Jun 26 20:15:03 1995 Michael I Bushnell * 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 * 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 * 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 . (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 * 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 * 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 * 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 * data-return.c: Include . (_pager_seqnos_memory_object_data_return): Use return correctly. Mon Aug 29 17:30:52 1994 Michael I Bushnell * 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 * 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 . * 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 . * 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.