FreeBSD src
Go to file
Bill Paul 450a94af7a Deal with a few bootstrap issues:
We can't call KeFlushQueuedDpcs() during bootstrap (cold == 1), since
the flush operation sleeps to wait for completion, and we can't sleep
here (clowns will eat us).

On an i386 SMP system, if we're loaded/probed/attached during bootstrap,
smp_rendezvous() won't run us anywhere except CPU 0 (since the other CPUs
aren't launched until later), which means we won't be able to set up
the GDTs anywhere except CPU 0. To deal with this case, ctxsw_utow()
now checks to see if the TID for the current processor has been properly
initialized and sets up the GTD for the current CPU if not.

Lastly, in if_ndis.c:ndis_shutdown(), do an ndis_stop() to insure we
really halt the NIC and stop interrupts from happening.

Note that loading a driver during bootstrap is, unfortunately, kind of
a hit or miss sort of proposition. In Windows, the expectation is that
by the time a given driver's MiniportInitialize() method is called,
the system is already in 'multiuser' state, i.e. it's up and running
enough to support all the stuff specified in the NDIS API, which includes
the underlying OS-supplied facilities it implicitly depends on, such as
having all CPUs running, having the DPC queues initialized, WorkItem
threads running, etc. But in UNIX, a lot of that stuff won't work during
bootstrap. This causes a problem since we need to call MiniportInitialize()
at least once during ndis_attach() in order to find out what kind of NIC
we have and learn its station address.

What this means is that some cards just plain won't work right if
you try to pre-load the driver along with the kernel: they'll only be
probed/attach correctly if the driver is kldloaded _after_ the system
has reached multiuser. I can't really think of a way around this that
would still preserve the ability to use an NDIS device for diskless
booting.
2005-05-20 04:00:50 +00:00
bin Correct a few places where we called warn() when warnx() should have 2005-05-19 21:33:48 +00:00
contrib The 'text' argument of u_header() is not used, so we don't need to 2005-05-19 13:34:19 +00:00
crypto File removed in update from OpenSSL 0.9.7d -> 0.9.7e. 2005-02-25 06:22:30 +00:00
etc Add libdata/pkgconfig. It is used under ${LOCALBASE} as much (if not more) 2005-05-13 04:06:04 +00:00
games Remove duplicate and attribute Weinbergs second law to the right weinberg. 2005-05-13 15:51:56 +00:00
gnu Add a note explaining what local modifications have been made to GNU grep, 2005-05-14 06:33:23 +00:00
include Make <runefile.h> internal to libc. 2005-05-16 09:32:41 +00:00
kerberos5 Cope with the (unwise?) incompatible changes with make by adding 2005-04-18 22:03:21 +00:00
lib Fix libstand on amd64. Rev 1.46 (obrien) removed the -I. that the 2005-05-20 03:18:19 +00:00
libexec Align the stack to a 16 byte boundary before calling _rtld so that we can 2005-05-19 07:32:42 +00:00
release Add nve(4). 2005-05-19 15:01:44 +00:00
rescue Patches from Ruslam Ermilov to remove NetBSD bits from Makefiles and cleanup 2005-04-28 16:26:35 +00:00
sbin guard against bogus address data 2005-05-20 03:58:53 +00:00
secure Update OpenSSL 0.9.7d -> 0.9.7e. 2005-02-25 06:04:12 +00:00
share Document support for the 5714. 2005-05-20 01:20:23 +00:00
sys Deal with a few bootstrap issues: 2005-05-20 04:00:50 +00:00
tools Make the path to make.conf a parameter which can be overridden. 2005-05-19 15:34:36 +00:00
usr.bin Get rid of global variables for argument vectors produced by brk_string() 2005-05-18 14:50:35 +00:00
usr.sbin Add cases for ENOBUFS and ENETDOWN. We need to make sure that we 2005-05-19 21:09:44 +00:00
COPYRIGHT
MAINTAINERS Add myself as a maintainer of geom_shsec. 2005-03-13 15:30:01 +00:00
Makefile Repo-copy tools/regression/usr.bin/make to tools/build/make_check 2005-03-02 12:33:23 +00:00
Makefile.inc1 Remove lame and ineffectual attempt to fix ipf breakage of tenderbox. 2005-05-01 17:36:09 +00:00
README
UPDATING cleanup a danging reference to cleaning up /etc/fstab. Since we don't 2005-05-16 05:37: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/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