Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jul 2002 08:33:01 -0700 (PDT)
From:      Bosko Milekic <bmilekic@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern subr_mbuf.c uipc_mbuf.c src/sys/sys mbuf.h
Message-ID:  <200207151533.g6FFX1Yo039597@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
bmilekic    2002/07/15 08:33:00 PDT

  Modified files:
    sys/kern             subr_mbuf.c uipc_mbuf.c 
    sys/sys              mbuf.h 
  Log:
  o Introduce new m_getcl() interface routine that allocates an mbuf
    and a cluster in one shot.
  o Introduce MBP_PERSIST and MBP_PERSISTENT control bits to mb_alloc();
    MBP_PERSIST means "if you can allocate, then keep the cache lock
    held on exit," and MBP_PERSISTENT means "a cache lock is alredy held
    on entry, so allocate from the specified (already locked) cache."
    They may be used in combination.
  o m_getcl() uses the MBP_PERSIST/MBP_PERSISTENT interface so that it
    doesn't drop the cache lock in between the mbuf and cluster allocations.
  o m_getm(), which takes a size and allocates an mbuf + cluster "best fit"
    chain, has been moved from uipc_mbuf.c to subr_mbuf.c and shown how to
    use MBP_PERSIST/MBP_PERSISTENT to attempt to do a grouped allocation
    without dropping the cache lock in between.
  
  Why this is good: much less bus-locked lock acquires/drops when they're
  not needed.  Also, prototype for m_getcl():
  struct mbuf * m_getcl(int how, short type, int flags);
  "how" and "type" are self-explanatory.  "flags" may be M_PKTHDR, in
  which case m_getcl() will make the mbuf a pkthdr-mbuf.
  
  While I'm in subr_mbuf.c:
  o Every exported routine now has a nice comment with a description of
    the expected arguments.  Eventually, mbuf(9) needs to be re-vamped
    but there's still more code to write/finalize before I get to that.
  o internal macros have been changed a bit.
  o consistently use 'short' for "type."  This somehow slipped through
    before (that 'type' was sometimes declared as int).
  
  Alfred has been pushing for the MBP_PERSIST{,ENT} thing for almost a
  year now.  Luigi asked for m_getcl(), and will probably MFC that
  part of this commit.
  
  TODO [Related]: teach mb_free() about MBP_PERSIST{, ENT}.
  
  Revision  Changes    Path
  1.21      +394 -73   src/sys/kern/subr_mbuf.c
  1.93      +0 -66     src/sys/kern/uipc_mbuf.c
  1.96      +6 -5      src/sys/sys/mbuf.h

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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