FreeBSD src
Go to file
Robert Watson 84d61770bc 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
2009-10-05 14:49:16 +00:00
bin sh: Disallow mismatched quotes in backticks (...). 2009-10-01 21:40:08 +00:00
cddl Fletcher4 is not the default checksum algorithm. 2009-09-25 18:24:21 +00:00
contrib Vendor import of OpenSSH 5.3p1 2009-10-01 15:19:37 +00:00
crypto Upgrade to OpenSSH 5.3p1. 2009-10-01 17:12:52 +00:00
etc tabify 2009-10-05 09:28:54 +00:00
games Fix several instances of spaces before commas, and one of a space 2009-07-16 20:29:36 +00:00
gnu Add FreeBSD 7.2 and 7.3. 2009-09-21 17:19:36 +00:00
include Modified locale(1) to be able to show the altmon_X fields and the [cxX]_fmt's. 2009-10-05 07:11:19 +00:00
kerberos5 Disconnect closefrom.c as we have it as a system call. 2009-06-16 00:09:06 +00:00
lib Modified locale(1) to be able to show the altmon_X fields and the [cxX]_fmt's. 2009-10-05 07:13:15 +00:00
libexec printerr_reply() has never been used for as long as we've had this code in 2009-09-26 23:05:01 +00:00
release In lists, if there is a Li command remove it. This fixes markup for 2009-10-04 16:30:33 +00:00
rescue Add the "vnet" and "-vnet" options, to allow moving interfaces between 2009-06-24 18:21:37 +00:00
sbin The cylinder group tag cg_initediblk needs to match the number of inodes 2009-10-05 01:31:16 +00:00
secure Upgrade to OpenSSH 5.3p1. 2009-10-01 17:12:52 +00:00
share TRENDnet TEW-424UB has multiple revisions so clarify zyd(4) man page and 2009-10-03 02:28:28 +00:00
sys First cut at implementing SOCK_SEQPACKET support for UNIX (local) domain 2009-10-05 14:49:16 +00:00
tools Regression tests for r197752 (handling of empty/NULL buffers). 2009-10-04 19:44:41 +00:00
usr.bin Backout changes for c_fmt, x_fmt and X_fmt, they were coming from 2009-10-05 07:21:21 +00:00
usr.sbin Fix using lp(1) without the new -t option after r194171. 2009-09-29 21:28:32 +00:00
COPYRIGHT Bump the odometer of the years. A little early this year for 7.1R. 2008-12-30 04:46:25 +00:00
LOCKS
MAINTAINERS - pkg_install is maintained by portmgr. 2009-07-06 11:46:18 +00:00
Makefile Add a new world named 'mips' to our universe. 2009-04-01 17:11:50 +00:00
Makefile.inc1 Fix comment about KERNFAST. 2009-09-10 07:37:36 +00:00
ObsoleteFiles.inc Add entries for moved files during vesa/dpms promotion. 2009-09-10 21:42:00 +00:00
README Vendor import of OpenSSH 5.3p1 2009-10-01 15:19:37 +00:00
UPDATING Fix several logic bugs in the previous IPv6 variable change and 2009-09-26 18:59:00 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel, the kernel-modules and the contents of /etc.  The ``world''
target should only be used in cases where the source tree has not
changed from the currently running version.  See:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The ``buildkernel'' and ``installkernel'' targets build and install
the kernel and the modules (see below).  Please see the top of
the Makefile in this directory for more information on the
standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process, documentation
for which can be found at:
   http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
And in the config(8) man page.
Note: If you want to build and install the kernel with the
``buildkernel'' and ``installkernel'' targets, you might need to build
world before.  More information is available in the handbook.

The sample kernel configuration files reside in the sys/<arch>/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file NOTES contains entries and documentation for all possible
devices, not just those commonly used.  It is the successor of the ancient
LINT file, but in contrast to LINT, it is not buildable as a kernel but a
pure reference and documentation file.


Source Roadmap:
---------------
bin		System/user commands.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html