Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Oct 2009 14:49:16 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/kern uipc_usrreq.c
Message-ID:  <200910051449.n95EneJu096884@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
rwatson     2009-10-05 14:49:16 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             uipc_usrreq.c 
  Log:
  SVN rev 197775 on 2009-10-05 14:49:16Z by rwatson
  
  First cut at implementing SOCK_SEQPACKET support for UNIX (local) domain
  sockets.  This allows for reliable bi-directional datagram communication
  over UNIX domain sockets, in contrast to SOCK_DGRAM (M:N, unreliable) or
  SOCK_STERAM (bi-directional bytestream).  Largely, this reuses existing
  UNIX domain socket code.  This allows applications requiring record-
  oriented semantics to do so reliably via local IPC.
  
  Some implementation notes (also present in XXX comments):
  
  - Currently we lack an sbappend variant able to do datagrams and control
    data without doing addresses, so we mark SOCK_SEQPACKET as PR_ADDR.
    Adding a new variant will solve this problem.
  
  - UNIX domain sockets on FreeBSD provide back-pressure/flow control
    notification for stream sockets by manipulating the send socket
    buffer's size during pru_send and pru_rcvd.  This trick works less well
    for SOCK_SEQPACKET as sosend_generic() uses sb_hiwat not just to
    manage blocking, but also to determine maximum datagram size.  Fixing
    this requires rethinking how back-pressure is done for SOCK_SEQPACKET;
    in the mean time, it's possible to get EMSGSIZE when buffers fill,
    instead of blocking.
  
  Discussed with: benl
  Reviewed by:    bz, rpaulo
  MFC after:      3 months
  Sponsored by:   Google
  
  Revision  Changes    Path
  1.234     +123 -16   src/sys/kern/uipc_usrreq.c



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