From f7f31164f19cdffc5fc75cde6ac6d025b796f980 Mon Sep 17 00:00:00 2001 From: attilio Date: Thu, 15 May 2008 20:10:06 +0000 Subject: - Embed the recursion counter for any locking primitive directly in the lock_object, using an unified field called lo_data. - Replace lo_type usage with the w_name usage and at init time pass the lock "type" directly to witness_init() from the parent lock init function. Handle delayed initialization before than witness_initialize() is called through the witness_pendhelp structure. - Axe out LO_ENROLLPEND as it is not really needed. The case where the mutex init delayed wants to be destroyed can't happen because witness_destroy() checks for witness_cold and panic in case. - In enroll(), if we cannot allocate a new object from the freelist, notify that to userspace through a printf(). - Modify the depart function in order to return nothing as in the current CVS version it always returns true and adjust callers accordingly. - Fix the witness_addgraph() argument name prototype. - Remove unuseful code from itismychild(). This commit leads to a shrinked struct lock_object and so smaller locks, in particular on amd64 where 2 uintptr_t (16 bytes per-primitive) are gained. Reviewed by: jhb --- sys/sys/lockmgr.h | 1 + 1 file changed, 1 insertion(+) (limited to 'sys/sys/lockmgr.h') diff --git a/sys/sys/lockmgr.h b/sys/sys/lockmgr.h index e586838..2183144 100644 --- a/sys/sys/lockmgr.h +++ b/sys/sys/lockmgr.h @@ -59,6 +59,7 @@ #endif struct thread; +#define lk_recurse lock_object.lo_data /* * Function prototipes. Routines that start with an underscore are not part -- cgit v1.1