Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Nov 2007 11:11:29 +0000 (UTC)
From:      Jean-Sebastien Pedron <dumbbell@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern sys_pipe.c
Message-ID:  <200711251111.lAPBBTOU081138@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
dumbbell    2007-11-25 11:11:29 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_7)
    sys/kern             sys_pipe.c 
  Log:
  MFC 1.193:
    The kernel uses two ways to write data on a pipe:
        o  buffered write, for chunks smaller than PIPE_MINDIRECT bytes
        o  direct write, for everything else
  
    A call to writev(2) may receive struct iov of various size and the
    kernel may have to switch from one solution to the other. Before doing
    this, it must wake reader processes and any select/poll/kqueue up.
  
    This commit fixes a bug where select/poll/kqueue are not triggered
    when switching from buffered write to direct write. It adds calls to
    pipeselwakeup().
  
    I give more details on freebsd-arch@:
    http://lists.freebsd.org/pipermail/freebsd-arch/2007-September/006790.html
  
    This should fix issues with Erlang (lang/erlang) and kqueue.
  
  Reported by:    Rickard Green (Erlang)
  Approved by:    re (kensmith)
  
  Revision   Changes    Path
  1.191.2.1  +4 -0      src/sys/kern/sys_pipe.c



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