From 81dacfa43ef94cd472f712f702b7674fa45b27ee Mon Sep 17 00:00:00 2001 From: alc Date: Mon, 8 Mar 2004 03:54:36 +0000 Subject: Implement a work around for the deadlock avoidance case in vm_object_deallocate() so that it doesn't spin forever either. Submitted by: bde --- sys/vm/vm_object.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'sys') diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 116a075..965666e 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -495,6 +495,13 @@ vm_object_deallocate(vm_object_t object) */ object->ref_count++; VM_OBJECT_UNLOCK(object); + /* + * More likely than not the thread + * holding robject's lock has lower + * priority than the current thread. + * Let the lower priority thread run. + */ + tsleep(&proc0, PVM, "vmo_de", 1); continue; } if ((robject->handle == NULL) && -- cgit v1.1