1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-26 11:47:31 +00:00
Mirror of the FreeBSD src repository https://git.FreeBSD.org/src.git .
Go to file
Bosko Milekic d56368d779 Plug a race and a leak in UMA.
1) The race has to do with zone destruction.  From the zone destructor we
   would lock the zone, set the working set size to 0, then unlock the zone,
   drain it, and then free the structure.  Within the window following the
   working-set-size set to 0 and unlocking of the zone and the point where
   in zone_drain we re-acquire the zone lock, the uma timer routine could
   have fired off and changed the working set size to something non-zero,
   thereby potentially preventing us from completely freeing slabs before
   destroying the zone (and thus leaking them).

2) The leak has to do with zone destruction as well.  When destroying a
   zone we would take care to free all the buckets cached in the zone, but
   although we would drain the pcpu cache buckets, we would not free them.
   This resulted in leaking a couple of bucket structures (512 bytes each)
   per cpu on SMP during zone destruction.

While I'm here, also silence GCC warnings by turning uma_slab_alloc()
from inline to real function.  It's too big to be an inline.

Reviewed by: JeffR
2003-07-30 18:55:15 +00:00
bin Don't check for the existance of src/crypto/ for building items that 2003-07-24 18:30:25 +00:00
contrib Update for the 2003/07/29 import. 2003-07-30 06:50:31 +00:00
crypto Very big makeover in the way telnet, telnetd and libtelnet are built. 2003-07-16 20:59:15 +00:00
etc tty whacking should occur early, but not so early that the 2003-07-30 18:53:59 +00:00
games Remove a duplicate entry. 2003-07-25 11:14:03 +00:00
gnu returned length can exceed the limits of type char 2003-07-29 00:31:07 +00:00
include Make C++ safe 2003-07-14 16:31:20 +00:00
kerberos5 Try a lot harder to get dependancies right. This involves some ugly 2003-07-27 16:49:10 +00:00
lib Don't forget to unlock the scheduler lock. Somehow this got removed 2003-07-30 13:28:05 +00:00
libexec Make sure that a "make release" (more accurately the bit that makes 2003-07-24 17:19:15 +00:00
release The -Os kernel build with GCC 3.3.1 also requires -fno-strict-aliasing 2003-07-30 14:46:46 +00:00
rescue Fix rescue build using -j. The problem appears to be make not being able 2003-07-24 07:42:42 +00:00
sbin Fix the code with respect to the assumption that sizeof(long) == 4. 2003-07-30 16:15:49 +00:00
secure Very big makeover in the way telnet, telnetd and libtelnet are built. 2003-07-16 20:59:15 +00:00
share Add and document the hw.acpi.ec.poll_timeout tunable. 2003-07-30 16:22:53 +00:00
sys Plug a race and a leak in UMA. 2003-07-30 18:55:15 +00:00
tools A simple tool to sanity check the contents of release/*/dokern.sh 2003-07-28 18:18:20 +00:00
usr.bin Allow GB18030 locale 2003-07-29 07:56:05 +00:00
usr.sbin fixed wrong parameter descriptions 2003-07-30 07:33:10 +00:00
COPYRIGHT
MAINTAINERS Release contrib/smbfs from the import-only mode. Now changes can be committed 2003-07-30 10:43:13 +00:00
Makefile The `mk' target is long dead. 2003-07-20 12:38:29 +00:00
Makefile.inc1 Don't lint(1) so early in the build. Its OK to keep this for the 2003-07-24 18:14:29 +00:00
README
UPDATING Note da(4) quirks being deprecated and the procedure for re-enabling them. 2003-07-29 04:40:33 +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
``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.

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