Date: Sun, 27 Sep 1998 22:21:55 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: current@FreeBSD.ORG Subject: VM diagnostic code never committed? Message-ID: <199809272221.PAA01831@usr05.primenet.com>
next in thread | raw e-mail | index | archive | help
I looked for this code in -current, but was unable to find it; was it never committed? This patch basically fills in the one remaining hole in the VM MAP_LOCK_DIAGNOSTIC case. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. ---------------------------------------------------------------------------- *** vm_fault.c Mon May 4 03:01:43 1998 --- vm_fault.c.new Sat Aug 15 22:45:59 1998 *************** *** 590,597 **** */ (fs.lookup_still_valid || (((fs.entry->eflags & MAP_ENTRY_IS_A_MAP) == 0) && ! lockmgr(&fs.map->lock, ! LK_EXCLUSIVE|LK_NOWAIT, (void *)0, curproc) == 0))) { fs.lookup_still_valid = 1; /* --- 590,596 ---- */ (fs.lookup_still_valid || (((fs.entry->eflags & MAP_ENTRY_IS_A_MAP) == 0) && ! vm_map_lock_try(fs.map) == 0))) { fs.lookup_still_valid = 1; /* *** vm_glue.c Wed Mar 4 10:27:00 1998 --- vm_glue.c.new Sat Aug 15 22:47:13 1998 *************** *** 452,460 **** * do not swapout a process that is waiting for VM * data structures there is a possible deadlock. */ ! if (lockmgr(&vm->vm_map.lock, ! LK_EXCLUSIVE | LK_NOWAIT, ! (void *)0, curproc)) { vmspace_free(vm); continue; } --- 452,459 ---- * do not swapout a process that is waiting for VM * data structures there is a possible deadlock. */ ! if (vm_map_lock_try(&vm->vm_map)) { ! /* failed to obtain lock*/ vmspace_free(vm); continue; } *** vm_map.h Thu Jan 22 17:30:38 1998 --- vm_map.h.new Sat Aug 15 23:22:14 1998 *************** *** 242,247 **** --- 242,261 ---- #endif static __inline__ int + _vm_map_lock_try(vm_map_t map, struct proc *p) { + int rv; + + rv = lockmgr(&(map)->lock, LK_EXCLUSIVE | LK_NOWAIT, (void *)0, p); + #if defined(MAP_LOCK_DIAGNOSTIC) + if( !rv) + printf("locking map LK_EXCLUSIVE: 0x%x\n", map); + #endif + return rv; + } + + #define vm_map_lock_try(map) _vm_map_lock_try(map, curproc) + + static __inline__ int _vm_map_lock_upgrade(vm_map_t map, struct proc *p) { #if defined(MAP_LOCK_DIAGNOSTIC) printf("locking map LK_EXCLUPGRADE: 0x%x\n", map); *** vm_page.c Sat Aug 15 20:26:27 1998 --- vm_page.c.new Sat Aug 15 22:10:23 1998 *************** *** 388,393 **** --- 388,400 ---- register vm_pindex_t pindex; { register struct pglist *bucket; + #ifdef DIAGNOSTIC + register vm_page_t dm; + + dm = vm_page_lookup(object, pindex); + if (dm) + panic("vm_page_insert: insertion overwrites existing entry"); + #endif #if !defined(MAX_PERF) if (m->flags & PG_TABLED) *************** *** 1071,1076 **** --- 1078,1085 ---- /* * helper routine for vm_page_free and vm_page_free_zero + * + * must be at splhigh */ static int vm_page_freechk_and_unqueue(m) *** vm_pageout.c Mon Mar 30 09:56:58 1998 --- vm_pageout.c.new Sat Aug 15 22:45:37 1998 *************** *** 530,536 **** vm_map_entry_t tmpe; vm_object_t obj, bigobj; ! if (lockmgr(&map->lock, LK_EXCLUSIVE | LK_NOWAIT, (void *)0, curproc)) { return; } --- 530,537 ---- vm_map_entry_t tmpe; vm_object_t obj, bigobj; ! if (vm_map_lock_try(map)) { ! /* failed to obtain lock */ return; } ---------------------------------------------------------------------------- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199809272221.PAA01831>