git: kernel - Use pool tokens to protect unix domain PCBs

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Sep 14 09:14:25 PDT 2012


commit 524d0e3c7c3041d91aaa8a6f0d1efa4623c0f413
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Sep 14 09:10:06 2012 -0700

    kernel - Use pool tokens to protect unix domain PCBs
    
    * The read, status, and write paths now use per-pcb pool tokens
      instead of the global unp_token.  The global token is still used
      for accept, connect, disconnect, etc.
    
    * General semantics for making this SMP safe is to obtain a pointer
      to the unp from so->so_pcb, then obtain the related pool token,
      then re-check that so->so_pcb still equals unp.
    
    * Pool token protects the peer pointer, unp->unp_conn.  Any change
      to unp->unp_conn requires both the pool token and the global token.
    
    * This should improve concurrent reading and writing w/unix domain
      sockets.

Summary of changes:
 sys/kern/uipc_usrreq.c |  179 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 141 insertions(+), 38 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/524d0e3c7c3041d91aaa8a6f0d1efa4623c0f413


-- 
DragonFly BSD source repository



More information about the Commits mailing list