git: kernel - Refactor kqueue interlocks

Matthew Dillon dillon at crater.dragonflybsd.org
Mon Sep 6 18:49:41 PDT 2010


commit 4371bb25c4dc6be21df04e7de72b65682ca9f4c4
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Mon Sep 6 18:44:03 2010 -0700

    kernel - Refactor kqueue interlocks
    
    * Make KN_PROCESSING a soft lock flag.  When set nobody else can mess
      with a particular knote (other than setting certain flags) even if
      the originator blocks.
    
    * Interlock major processing with KN_PROCESSING.  Registration, event
      scan, knote(), deletion, and filter ops.
    
    * Block & restart when conflicts occur.  For the knote() hot-path we only
      block and restart if the 'hint' is non-zero, otherwise we just flag with
      KN_REPROCESS to indicate that reprocessing is required.
    
    * This should fix kqueue races related to blocking operations confusing
      the list scan.
    
    * Document the shit out of everything.
    
    Reported-by: Francois Tigeot <ftigeot at wolfpond.org>

Summary of changes:
 sys/kern/kern_event.c |  344 +++++++++++++++++++++++++++++++++++--------------
 sys/sys/event.h       |   18 ++-
 2 files changed, 255 insertions(+), 107 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4371bb25c4dc6be21df04e7de72b65682ca9f4c4


-- 
DragonFly BSD source repository





More information about the Commits mailing list