FreeBSD src
Go to file
Peter Wemm babff34a27 Oops, forgot this file. Log message for completeness:
Clean up some low level bootstrap code:

- stop using the evil 'struct trapframe' argument for mi_startup()
  (formerly main()).  There are much better ways of doing it.
- do not use prepare_usermode() - setregs() in execve() will do it
  all for us as long as the p_md.md_regs pointer is set.  (which is
  now done in machdep.c rather than init_main.c.  The Alpha port did it
  this way all along and is much cleaner).
- collect all the magic %cr0 etc register settings into one place and
  have the AP's call that instead of using magic numbers (!!) that keep
  changing over and over again.
- Make it safe to call kthread_create() earlier, including during the
  device probe sequence.  It doesn't need the callback mechanism that
  NetBSD's version uses.
- kthreads created this way are root-less as they exist before the root
  filesystem is mounted.  init(1) is set up so that it aquires the root
  pointers prior to running.  If other kthreads want filesystem acccess
  we can make this code more generic.
- set all threads start times once we have decided what time it is.
- init uses a trampoline rather than the evil prepare_usermode() hack.
- kern_descrip.c has a couple of tweaks to deal with forking when there
  is no rootdir or cwd etc.
- adjust the early SYSINIT() sequence so that a few prereqisites are in
  place. eg: make sure the run queue is initialized before doing forks.

With this, the USB code can easily create a kthread to do the device
tree discovery.  (I have tested it, it works nicely).

There are still some open issues before this is truely useful.
- tsleep() does not like working before the clock is running.  It
  sort-of tries to spin wait, but it can do more useful things now.
- stopping a kthread in kld code at unload time is "interesting" but
  we have a solution for that.

The Alpha code needs no changes for this.  It already uses pretty much the
same strategies, but a little cleaner.
2000-08-11 18:54:47 +00:00
bin Optimize out no-op chmod() syscalls. 2000-07-29 22:16:55 +00:00
contrib Fix conflicts. 2000-08-09 18:38:26 +00:00
crypto Chalk up another phkmalloc victim. 2000-08-01 08:07:15 +00:00
etc Add the acdNt# devices to the acd entry, for individual track access. 2000-08-11 09:22:34 +00:00
games Add another Bill Paul quote. 2000-08-07 20:49:08 +00:00
gnu Don't build suidperl by default. Make users specifically enable its 2000-08-10 22:59:53 +00:00
include Add a prototype for rfork_thread(). 2000-07-29 11:53:35 +00:00
kerberos5 Unbreak heimdal build: we can no longer #include <netinet6/in6.h> 2000-07-06 10:09:59 +00:00
kerberosIV
lib Add support to send the string 'PXEClient' as the Vendor class 2000-08-11 08:36:17 +00:00
libexec sprintf() -> snprintf() paranoia. 2000-08-04 10:39:34 +00:00
release Mention the 3ware controllers. 2000-08-08 18:54:57 +00:00
sbin Explain why adding ``options NFSKERB'' breaks the kernel build. 2000-08-11 13:03:13 +00:00
secure Unbreak the OpenSSL headers for those of us who don't/can't use IDEA by 2000-08-04 04:25:59 +00:00
share Make the word "ldconfig" a bona fide cross-reference, and clarify 2000-08-11 17:15:37 +00:00
sys Oops, forgot this file. Log message for completeness: 2000-08-11 18:54:47 +00:00
tools Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
usr.bin While we're in here: 2000-08-11 08:40:10 +00:00
usr.sbin Explain why adding ``options NFSKERB'' breaks the kernel build. 2000-08-11 13:03:13 +00:00
COPYRIGHT
Makefile Mention the buildkernel/installkernel targets in the documentation. 2000-07-31 09:26:59 +00:00
Makefile.inc1 Make the update target consistent; both ports and doc are updated 2000-08-07 14:35:49 +00:00
Makefile.upgrade
README Point out, that build/installkernel need a built world and that more 2000-07-31 12:39:09 +00:00
UPDATING Add stuff: 2000-08-10 23:16:32 +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/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 have to build
world before.  More information is available in the handbook.

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 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.

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