freebsd kernel with SKQ
Go to file
marius a030d21a6f - USIII-based machines can consist of CPUs running at different
frequencies (and having different cache sizes) so use the STICK
  (System TICK) timer, which was introduced due to this and is
  driven by the same frequency across all CPUs, instead of the
  TICK timer, whose frequency varies with the CPU clock, to drive
  hardclock. We try to use the STICK counter with all CPUs that are
  USIII or beyond, even when not necessary due to identical CPUs,
  as we can can also avoid the workaround for the BlackBird erratum
  #1 there. Unfortunately, using the STICK counter currently causes
  a hang with USIIIi MP machines for reasons unknown, so we still
  use the TICK timer there (which is okay as they can only consist
  of identical CPUs).
- Given that we only (try to) synchronize the (S)TICK timers of APs
  with the BSP during startup, we could end up spinning forever in
  DELAY(9) if that function is migrated to another CPU while we're
  spinning due to clock drift afterwards, so pin to the CPU in order
  to avoid migration. Unfortunately, pinning doesn't work at the
  point DELAY(9) is required by the low-level console drivers, yet,
  so switch to a function pointer, which is updated accordingly, for
  implementing DELAY(9). For USIII and beyond, this would also allow
  to easily use the STICK counter instead of the TICK one here,
  there's no benefit in doing so however.
  While at it, use cpu_spinwait(9) for spinning in the delay-
  functions. This currently is a NOP though.
- Don't set the TICK timer of the BSP to 0 during at startup as
  there's no need to do so.
- Implement cpu_est_clockrate().
- Unfortunately, USIIIi-based machines don't provide a timecounter
  device besides the STICK and TICK counters (well, in theory the
  Tomatillo bridges have a performance counter that can be (ab)used
  as timecounter by configuring it to count bus cycles, though unlike
  the performance counter of Schizo bridges, the Tomatillo one is
  broken and counts Sun knows what in this mode). This means that
  we've to use a (S)TICK counter for timecounting, which has the old
  problem of not being in sync across CPUs, so provide an additional
  timecounter function which binds itself to the BSP but has an
  adequate low priority.
2008-09-03 17:39:19 +00:00
bin pkill(1) first appeared in /usr/bin, but later it was moved to /bin 2008-08-31 14:27:59 +00:00
cddl Add a missing file change from the VOP_GETATTR() argument axing. 2008-08-28 18:00:20 +00:00
contrib Make strtof() respect the current rounding mode. 2008-09-03 07:32:06 +00:00
crypto Remove some unused files. 2008-09-01 16:34:02 +00:00
etc A no-op commit to simulate the effect of a forced commit so the file 2008-08-31 18:21:15 +00:00
games Suggections from bde@ 2008-08-11 23:24:42 +00:00
gnu Add FreeBSD/MIPS support to GCC. 2008-09-01 18:46:03 +00:00
include Implement cproj{,f,l}(). 2008-08-07 15:07:48 +00:00
kerberos5 Add an implementation of the RPCSEC_GSS authentication protocol for RPC. This 2008-08-06 14:02:05 +00:00
lib Update for version 9.4.2-P2 2008-09-01 22:55:23 +00:00
libexec Make sure internal rtld malloc routines are not called from unlocked 2008-09-03 01:05:32 +00:00
release Recent work on the gnu cpio seems to have introduced some bugs, it 2008-08-20 13:35:39 +00:00
rescue pkill(1) first appeared in /usr/bin, but later it was moved to /bin 2008-08-31 14:27:59 +00:00
sbin Use RUSAGE_SELF for the current process instead of hardcoded value 2008-09-02 02:59:13 +00:00
secure Upgrade to OpenSSH 5.1p1. 2008-08-01 02:48:36 +00:00
share Decontextualize vfs_busy(), vfs_unbusy() and vfs_mount_alloc() functions. 2008-08-31 14:26:08 +00:00
sys - USIII-based machines can consist of CPUs running at different 2008-09-03 17:39:19 +00:00
tools Regression tests for bugs in gdtoa. 2008-09-03 07:35:14 +00:00
usr.bin Add support for RLIMIT_NPTS to limits(1). 2008-09-02 19:13:24 +00:00
usr.sbin Introduce crunchide to the ELF e_machine MIPS values. 2008-09-03 16:21:28 +00:00
COPYRIGHT Happy new year 2008! 2007-12-31 22:09:19 +00:00
LOCKS Update LOCKS syntax. 2008-06-05 19:47:58 +00:00
MAINTAINERS Update description text 2008-06-06 21:32:01 +00:00
Makefile Back out rev. 1.352 (SVN rev 179842) as phk pointed out that 2008-06-17 11:08:49 +00:00
Makefile.inc1 If a CPUTYPE isn't specified, then don't use -march=k8 when compiling 2008-08-19 14:23:26 +00:00
ObsoleteFiles.inc Add more obsolete files. 2008-08-31 08:33:41 +00:00
README
UPDATING Mention ntpd upgrade to 4.2.4p5. 2008-09-03 08:30:17 +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