Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Mar 2003 12:56:40 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern subr_witness.c src/sys/sys lock.h
Message-ID:  <200303042056.h24KueTF061294@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
jhb         2003/03/04 12:56:40 PST

  FreeBSD src repository

  Modified files:
    sys/kern             subr_witness.c 
    sys/sys              lock.h 
  Log:
  A small overhaul of witness:
  - Add a comment about special lock order rules and Giant near the top of
    subr_witness.c.  Specifically, this documents and explains the real lock
    order relationship between Giant and sleepable locks (i.e. lockmgr locks
    and sx locks).  Basically, Giant can be safely acquired either before or
    after sleepable locks and the case of Giant before a sleepable lock is
    exempted as a special case.
  - Add a new static function 'witness_list_lock()' that displays a single
    line of information about a struct lock_instance.  This is used to
    make the output of witness messages more consistent and reduce some code
    duplication.
  - Fixup a few comments in witness_lock().
  - Properly handle the Giant-before-sleepable-lock lock order exception in
    a more general fashion and remove the no longer needed LI_SLEPT flag.
  - Break up the last condition before assuming a reversal a bit to try
    and make the logic less confusing in witness_lock().
  - Axe WITNESS_SLEEP() now that LI_SLEPT is no longer needed and replace it
    with a more general WITNESS_WARN() macro/function combination.
    WITNESS_WARN() allows you to output a customized message out to the
    console along with a list of held locks.  It will optionally drop into
    the debugger as well.  You can exempt a single lock from the check by
    passing it in as the second argument.  You can also use flags to specify
    if Giant should be exempt from the check, if all sleepable locks should
    be exempt from the check, and if witness should panic if any non-exempt
    locks are found.
  - Make the witness_list() function static.  Other areas of the kernel
    should use the new WITNESS_WARN() instead.
  
  Revision  Changes    Path
  1.139     +112 -56   src/sys/kern/subr_witness.c
  1.47      +11 -7     src/sys/sys/lock.h

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-src" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303042056.h24KueTF061294>