Find a file
John Birrell 3d068827c2 Add a cnputs() function to write a string to the console with
a lock to prevent interspersed strings written from different CPUs
at the same time.

To avoid putting a buffer on the stack or having to malloc one,
space is incorporated in the per-cpu structure. The buffer
size if 128 bytes; chosen because it's the next power of 2 size
up from 80 characters.

String writes to the console are buffered up the end of the line
or until the buffer fills. Then the buffer is flushed to all
console devices.

Existing low level console output via cnputc() is unaffected by
this change. ithread calls to log() are also unaffected to avoid
blocking those threads.

A minor change to the behaviour in a panic situation is that
console output will still be buffered, but won't be written to
a tty as before. This should prevent interspersed panic output
as a number of CPUs panic before we end up single threaded
running ddb.

Reviewed by:	scottl, jhb
MFC after:	2 weeks
2006-11-01 04:54:51 +00:00
bin Correct a security issue introduced in previous commit: 2006-10-31 02:22:36 +00:00
contrib This commit was generated by cvs2svn to compensate for changes in r163820, 2006-10-31 09:00:35 +00:00
crypto Don't define XAUTH_PATH here, we either pass it in on the compiler command 2006-10-06 14:27:26 +00:00
etc Hook up gjournal bits to the build. 2006-10-31 22:22:30 +00:00
games Squash a typo. 2006-10-30 12:01:57 +00:00
gnu Bump document date for the previous change. 2006-10-21 17:39:35 +00:00
include Hook up gjournal bits to the build. 2006-10-31 22:22:30 +00:00
kerberos5 Kerberos/Heimdal doesn't really depend on the INET6 macro. 2006-07-28 06:33:27 +00:00
lib Implement cgwrite1(3) function which stored a given cylinder group on disk. 2006-10-31 21:21:48 +00:00
libexec Fix TLS on sparc64 for statically and dynamically linked binaries 2006-10-08 02:50:34 +00:00
release The AUTO_KEYBOARD_DETECT is useful on amd64 as well. 2006-10-24 21:00:49 +00:00
rescue Remove alpha left-overs. 2006-08-22 08:03:01 +00:00
sbin Whitespace and style nits. 2006-10-31 22:36:49 +00:00
secure Fix static compilation. 2006-10-07 17:32:05 +00:00
share o Expand "Nov" to "November" in Dd macro, remove eol whitespace. 2006-11-01 04:46:06 +00:00
sys Add a cnputs() function to write a string to the console with 2006-11-01 04:54:51 +00:00
tools Reworking of how to add ports. 2006-11-01 01:25:51 +00:00
usr.bin Fix a bug converting a variable from the numeric type to a string. 2006-10-25 21:23:20 +00:00
usr.sbin Fix buildworld. 2006-10-31 21:44:46 +00:00
COPYRIGHT Happy new year, a little late 2006-01-15 22:06:10 +00:00
LOCKS Document commit constraints for RELENG_6_*. 2006-01-13 06:51:43 +00:00
MAINTAINERS Add myself as OpenSSL janitor/maintainer. 2006-09-11 19:39:46 +00:00
Makefile Add sun4v to the 'universe'. 2006-10-16 22:18:59 +00:00
Makefile.inc1 Add sun4v to the TARGET_ARCH when just TARGET is set (like pc98 is done). 2006-10-16 22:18:13 +00:00
ObsoleteFiles.inc remove gdbserver on ARCH i386 as we now install it again.. 2006-10-31 21:05:35 +00:00
README Simply running ``make world'' will bomb unless you dig up the 2006-06-07 03:33:48 +00:00
UPDATING Add 'options KSE' to the kernel config DEFAULTS on all arches/machines 2006-10-26 22:05:25 +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