Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Oct 2000 00:26:38 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/sys mutex.h src/sys/kern kern_mutex.c src/sys/i386/include mutex.h src/sys/i386/i386 synch_machdep.c src/sys/alpha/include mutex.h src/sys/alpha/alpha synch_machdep.c src/sys/ia64/include mutex.h src/sys/ia64/ia64 synch_machdep.c ...
Message-ID:  <200010200726.AAA40906@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
jhb         2000/10/20 00:26:37 PDT

  Modified files:
    sys/kern             kern_mutex.c 
    sys/i386/include     mutex.h 
    sys/alpha/include    mutex.h 
    sys/ia64/include     mutex.h 
    sys/conf             files.alpha files.i386 files.ia64 
                         files.pc98 options 
  Added files:
    sys/sys              mutex.h 
  Removed files:
    sys/i386/i386        synch_machdep.c 
    sys/alpha/alpha      synch_machdep.c 
    sys/ia64/ia64        synch_machdep.c 
  Log:
  - Make the mutex code almost completely machine independent.  This greatly
    reducues the maintenance load for the mutex code.  The only MD portions
    of the mutex code are in machine/mutex.h now, which include the assembly
    macros for handling mutexes as well as optionally overriding the mutex
    micro-operations.  For example, we use optimized micro-ops on the x86
    platform #ifndef I386_CPU.
  - Change the behavior of the SMP_DEBUG kernel option.  In the new code,
    mtx_assert() only depends on INVARIANTS, allowing other kernel developers
    to have working mutex assertiions without having to include all of the
    mutex debugging code.  The SMP_DEBUG kernel option has been renamed to
    MUTEX_DEBUG and now just controls extra mutex debugging code.
  - Abolish the ugly mtx_f hack.  Instead, we dynamically allocate
    seperate mtx_debug structures on the fly in mtx_init, except for mutexes
    that are initiated very early in the boot process.   These mutexes
    are declared using a special MUTEX_DECLARE() macro, and use a new
    flag MTX_COLD when calling mtx_init.  This is still somewhat hackish,
    but it is less evil than the mtx_f filler struct, and the mtx struct is
    now the same size with and without mutex debugging code.
  - Add some micro-micro-operation macros for doing the actual atomic
    operations on the mutex mtx_lock field to make it easier for other archs
    to override/optimize mutex ops if needed.  These new tiny ops also clean
    up the code in some places by replacing long atomic operation function
    calls that spanned 2-3 lines with a short 1-line macro call.
  - Don't call mi_switch() from mtx_enter_hard() when we block while trying
    to obtain a sleep mutex.  Calling mi_switch() would bogusly release
    Giant before switching to the next process.  Instead, inline most of the
    code from mi_switch() in the mtx_enter_hard() function.  Note that when
    we finally kill Giant we can back this out and go back to calling
    mi_switch().
  
  Revision  Changes    Path
  1.6       +596 -11   src/sys/kern/kern_mutex.c
  1.11      +26 -515   src/sys/i386/include/mutex.h
  1.12      +13 -469   src/sys/alpha/include/mutex.h
  1.4       +15 -484   src/sys/ia64/include/mutex.h
  1.59      +1 -2      src/sys/conf/files.alpha
  1.335     +1 -2      src/sys/conf/files.i386
  1.4       +1 -2      src/sys/conf/files.ia64
  1.172     +1 -2      src/sys/conf/files.pc98
  1.233     +2 -2      src/sys/conf/options



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




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