Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Sep 2005 16:02:11 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern kern_poll.c
Message-ID:  <200509051602.j85G2Bpo090258@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



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