On Mon, 5 Jan 2015, Helg wrote: > The man page for LOCK(9) says that if the kernel option LOCKDEBUG is > enabled, additional facilities are provided to assist in determining > deadlock occurrences. > > I created a copy of /sys/arch/amd64/conf/GENERIC and added option > LOCKDEBUG. Executing config and then make clean && make results in > warnings like: > > implicit declaration of function '__mp_lock' > > Adding includes for <sys/mplock.h> in the offending files resolves the > problem but this just doesn't seem right. > > Does anyone have any suggestions?
Yeah, don't use it. It used to be a lot more when there were still traces of the original "simplelocks" in the tree, but the code to do more with LOCKDEBUG was ripped out as those no-ops were felt to be more misleading than helpful. It's dead, Jim, let's bury LOCKDEBUG. oks? Philip Index: sys/arch/i386/i386/trap.c =================================================================== RCS file: /cvs/src/sys/arch/i386/i386/trap.c,v retrieving revision 1.119 diff -u -p -r1.119 trap.c --- sys/arch/i386/i386/trap.c 2 Dec 2014 18:13:10 -0000 1.119 +++ sys/arch/i386/i386/trap.c 11 Jan 2015 03:33:48 -0000 @@ -381,11 +381,6 @@ trap(struct trapframe *frame) case T_PAGEFLT: /* allow page faults in kernel mode */ if (p == 0 || p->p_addr == 0) goto we_re_toast; -#ifdef LOCKDEBUG - /* If we page-fault while in scheduler, we're doomed. */ - if (__mp_lock_held(&sched_lock)) - goto we_re_toast; -#endif pcb = &p->p_addr->u_pcb; #if 0 Index: sys/sys/sched.h =================================================================== RCS file: /cvs/src/sys/sys/sched.h,v retrieving revision 1.37 diff -u -p -r1.37 sched.h --- sys/sys/sched.h 17 Oct 2014 01:51:39 -0000 1.37 +++ sys/sys/sched.h 11 Jan 2015 03:33:48 -0000 @@ -183,7 +183,7 @@ void remrunqueue(struct proc *); yield(); \ } while (0) -#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) +#if defined(MULTIPROCESSOR) #include <sys/lock.h> /* @@ -215,7 +215,7 @@ do { \ splx(s); \ } while (/* CONSTCOND */ 0) -#else /* ! MULTIPROCESSOR || LOCKDEBUG */ +#else /* ! MULTIPROCESSOR */ #define SCHED_ASSERT_LOCKED() splassert(IPL_SCHED); #define SCHED_ASSERT_UNLOCKED() /* nothing */ @@ -225,7 +225,7 @@ do { \ #define SCHED_LOCK(s) s = splsched() #define SCHED_UNLOCK(s) splx(s) -#endif /* MULTIPROCESSOR || LOCKDEBUG */ +#endif /* MULTIPROCESSOR */ #endif /* _KERNEL */ #endif /* _SYS_SCHED_H_ */ Index: share/man/man9/lock.9 =================================================================== RCS file: /cvs/src/share/man/man9/lock.9,v retrieving revision 1.22 diff -u -p -r1.22 lock.9 --- share/man/man9/lock.9 9 Jul 2014 14:16:10 -0000 1.22 +++ share/man/man9/lock.9 11 Jan 2015 03:33:48 -0000 @@ -57,10 +57,6 @@ single process. It also allows upgrading a shared-access lock to an exclusive-access lock, as well as downgrading an exclusive-access lock to a shared-access lock. -.Pp -If the kernel option LOCKDEBUG is enabled, additional facilities -are provided to record additional lock information. -These facilities are provided to assist in determining deadlock occurrences. .Sh FUNCTIONS The functions which operate on locks are: .Bl -tag -width Ds