cvs commit: src/sys/kern kern_mac.c

Robert Watson rwatson at FreeBSD.org
Wed May 7 10:49:26 PDT 2003


rwatson     2003/05/07 10:49:25 PDT

  FreeBSD src repository

  Modified files:
    sys/kern             kern_mac.c 
  Log:
  Clean up locking for the MAC Framework:
  
  (1) Accept that we're now going to use mutexes, so don't attempt
      to avoid treating them as mutexes.  This cleans up locking
      accessor function names some.
  
  (2) Rename variables to _mtx, _cv, _count, simplifying the naming.
  
  (3) Add a new form of the _busy() primitive that conditionally
      makes the list busy: if there are entries on the list, bump
      the busy count.  If there are no entries, don't bump the busy
      count.  Return a boolean indicating whether or not the busy
      count was bumped.
  
  (4) Break mac_policy_list into two lists: one with the same name
      holding dynamic policies, and a new list, mac_static_policy_list,
      which holds policies loaded before mac_late and without the
      unload flag set.  The static list may be accessed without
      holding the busy count, since it can't change at run-time.
  
  (5) In general, prefer making the list busy conditionally, meaning
      we pay only one mutex lock per entry point if all modules are
      on the static list, rather than two (since we don't have to
      lower the busy count when we're done with the framework).  For
      systems running just Biba or MLS, this will halve the mutex
      accesses in the network stack, and may offer a substantial
      performance benefits.
  
  (6) Lay the groundwork for a dynamic-free kernel option which
      eliminates all locking associated with dynamically loaded or
      unloaded policies, for pre-configured systems requiring
      maximum performance but less run-time flexibility.
  
  These changes have been running for a few weeks on MAC development
  branch systems.
  
  Approved by:    re (jhb)
  Obtained from:  TrustedBSD Project
  Sponsored by:   DARPA, Network Associates Laboratories
  
  Revision  Changes    Path
  1.89      +181 -79   src/sys/kern/kern_mac.c


More information about the cvs-src mailing list