On Sat, 10 Jan 2015 19:39:19 -0800 Philip Guenther <guent...@gmail.com> wrote:
> 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. Thanks. I figured as much when I started to look deeper into the implementation of lockinit and lockmgr. These are now just legacy wrappers for rwlock functions. Removing LOCKDEBUG makes sense to me. > > 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 -- Helg <xx...@msn.com>