cvs commit: src/sys/kern kern_poll.c

Gleb Smirnoff glebius at FreeBSD.org
Mon Sep 5 09:02:12 PDT 2005


glebius     2005-09-05 16:02:11 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_poll.c 
  Log:
  Remove Giant mutex from polling(4) and use a separate poll_mtx(4)
  instead. Detailed changelist:
  
  o Add flags field to struct pollrec, to indicate that
    are particular entry is being worked on.
  o Define a macro PR_VALID() to check that a pollrec
    is valid and pollable.
  o Mark ISRs as mpsafe.
  
  o ether_poll()
    - Acquire poll_mtx while traversing pollrec array.
    - Skip pollrecs, that are being worked on.
    - Conditionally acquire Giant when entering handler.
  
  o netisr_pollmore()
    - Conditionally assert Giant.
    - Acquire poll_mtx while working with statistics.
  
  o netisr_poll()
    - Conditionally assert Giant.
    - Acquire poll_mtx while working with statistics
      and traversing pollrec array.
  
  o ether_poll_register(), ether_poll_deregister()
    - Conditionally assert Giant.
    - Acquire poll_mtx while working with pollrec array.
  
  o poll_idle()
    - Remove all strange manipulations with Giant.
  
  In collaboration with:  ru, pjd
  In collaboration with:  Oleg Bulyzhin <oleg rinet.ru>
  In collaboration with:  dima <_pppp mail.ru>
  
  Revision  Changes    Path
  1.21      +81 -38    src/sys/kern/kern_poll.c


More information about the cvs-all mailing list