FreeBSD src
Go to file
Peter Wemm 54823af256 First round implementation of a fine grain enhanced module to module
version dependency system.  This isn't quite finished, but it is at a
useful stage to do a functional checkpoint.

Highlights:
- version and dependency metadata is gathered via linker sets, so things
are handled the same for static kernels and code built to live in a kld.
- The dependencies are at module level (versus at file level).
- Dependencies determine kld symbol search order - this means that you
cannot link against symbols in another file unless you depend on it. This
is so that you cannot accidently unload the target out from underneath
the ones referencing it.
- It is flexible enough that we can put tags in #include files and macros
so that we can get decent hooks for enforcing recompiles on incompatable
ABI changes.  eg: if we change struct proc, we could force a recompile
for all kld's that reference the proc struct.
- Tangled dependency references at boot time are sorted.  Files are
relocated once all their dependencies are already relocated.

Caveats:
- Loader support is incomplete, but has been worked on seperately.
- Actual enforcement of the version number tags is not active yet - just
the module dependencies are live.  The actual structure of versioning
hasn't been agreed on yet. (eg: major.minor, or whatever)
- There is some backwards compatability for old modules without metadata
but I'm not sure how good it is.

This is based on work originally done by Boris Popov (bp@freebsd.org),
but I'm not sure he'd recognize much of it now. Don't blame him. :-)
Also, ideas have been borrowed from Mike Smith.
2000-04-29 13:19:31 +00:00
bin Describe drainwait 2000-04-27 22:08:29 +00:00
contrib Fix typo 2000-04-28 09:30:57 +00:00
crypto MFF: catch up with FreeFall 2000-04-19 21:20:54 +00:00
etc Add lib/X11/locale/zh_TW.Big5. 2000-04-29 11:43:18 +00:00
games Add a new fortune and remove an email address. 2000-04-05 18:44:02 +00:00
gnu Add support for debugging programs using libc_r's implementation of 2000-04-29 09:03:49 +00:00
include Revert previous commit, and remove the <event.h> symlink. As this is 2000-04-18 17:00:22 +00:00
kerberos5 Properly separate the K5-only buld from K4. 2000-03-23 14:56:47 +00:00
kerberosIV Remove the last vestiges of libRSAglue now that it's an empty stub. 2000-03-11 22:34:10 +00:00
lib Fix a bug handling the debug level when displaying control messages 2000-04-28 18:41:21 +00:00
libexec Remove dead debug code. 2000-04-29 12:02:00 +00:00
release Add Samsung 164BX to non-SRM mainboards 2000-04-28 19:18:52 +00:00
sbin Load Sharing using IP Network Address Translation (RFC 2391, LSNAT). 2000-04-27 17:55:17 +00:00
secure Use the C locale for running date(1). 2000-04-20 07:26:46 +00:00
share Reserve register t7 on alpha to point at per-cpu global variables. 2000-04-28 08:44:42 +00:00
sys First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
tools Use profiling on LINT. 2000-04-27 19:58:57 +00:00
usr.bin Default device not longer uses the "r" raw prefix. 2000-04-26 11:34:52 +00:00
usr.sbin Remove unused include. 2000-04-29 12:47:03 +00:00
COPYRIGHT Update to add the July 22, 1999 addendum. 1999-09-05 21:33:47 +00:00
Makefile We have a new world order in libraries. 2000-02-24 23:03:16 +00:00
Makefile.inc1 Make gperf be a bootstrap-tool, since we now depend on features of 2000-04-27 21:24:43 +00:00
Makefile.upgrade $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
README $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
UPDATING Add information about the dangarous apollo MPV3 chipset. Several 2000-04-04 17:14:18 +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 and the contents of /etc.  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 with config(8) is a somewhat more involved process,
documentation for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.

The sample kernel configuration files reside in the sys/i386/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 LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).


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

contrib		Packages contributed by 3rd parties.

crypto		Export controlled 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.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		DES and DES-related utilities - NOT FOR EXPORT!

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/handbook/synching.html