Go to file
msaitoh a0e0efb77d Serialize rdtsc using with lfence, mfence or cpuid to read TSC more precisely.
x86/x86/tsc.c rev. 1.67 reduced cache problem and got big improvement, but it
 still has room. I measured the effect of lfence, mfence, cpuid and rdtscp.
The impact to TSC skew and/or drift is:

	AMD:   mfence > rdtscp > cpuid > lfence-serialize > lfence = nomodify
	Intel: lfence > rdtscp > cpuid > nomodify

So, mfence is the best on AMD and lfence is the best on Intel. If it has no
SSE2, we can use cpuid.

NOTE:
  - An AMD's document says DE_CFG_LFENCE_SERIALIZE bit can be used for
    serializing, but it's not so good.
  - On Intel i386(not amd64), it seems the improvement is very little.
  - rdtscp instruct can be used as serializing instruction + rdtsc, but
    it's not good as [lm]fence. Both Intel and AMD's document say that
    the latency of rdtscp is bigger than rdtsc, so I suspect the difference
    of the result comes from it.
2020-06-15 09:09:23 +00:00
bin Fix typo 2020-06-11 13:08:07 +00:00
common remove error(1) comments 2020-06-15 00:46:00 +00:00
compat 1. All Makefiles that use ARM_APCS_FLAGS add -marm unconditionally and 2019-10-24 18:46:20 +00:00
crypto Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
dist/pf Externalize variables owned logically by pf_ruleset.c 2020-04-22 23:40:40 +00:00
distrib Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
doc Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
etc Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
external missed the capitalized ones. 2020-06-15 02:29:44 +00:00
extsrc
games Recommend using `pkg_admin {fetch-pkg-vulnerabilities,audit}' instead of 2020-06-07 15:41:03 +00:00
include Remove bogus tests for 64-bit i386 and SuperH 2020-06-04 11:21:16 +00:00
lib Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
libexec Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
regress We have USER_LDT tests in ATF, remove the ones from regress. 2020-04-22 16:24:15 +00:00
rescue smb is no more. 2020-04-04 17:57:16 +00:00
sbin Update for proplib(3) API changes. 2020-06-11 13:49:57 +00:00
share Rename blacklist -> blocklist 2020-06-15 01:57:29 +00:00
sys Serialize rdtsc using with lfence, mfence or cpuid to read TSC more precisely. 2020-06-15 09:09:23 +00:00
tests Remove in-kernel handling of Router Advertisements 2020-06-12 11:04:44 +00:00
tools nbmake bootstrap: be quieter if MAKEVERBOSE==0 2020-06-13 11:39:43 +00:00
usr.bin usr.bin/make: revert performance improvement 2020-06-14 23:13:21 +00:00
usr.sbin Explicitly print a fs image filename on "fs image is too big" errors. 2020-06-14 18:24:21 +00:00
build.sh Nix trailing whitespace. 2020-06-13 18:00:29 +00:00
BUILDING Fix a typo 2019-05-08 14:03:57 +00:00
Makefile automatically remove old debug files for modules. 2020-05-15 16:34:44 +00:00
Makefile.inc
README.md Use first-level heading for "NetBSD" title in README.md 2020-01-10 12:33:28 +00:00
UPDATING mention blacklist -> blocklist rename 2020-06-15 03:39:00 +00:00

NetBSD

NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system. It is available for a wide range of platforms, from large-scale servers and powerful desktop systems to handheld and embedded devices.

Building

You can cross-build NetBSD from most UNIX-like operating systems. To build for amd64 (x86_64), in the src directory:

./build.sh -U -u -j4 -m amd64 -O ~/obj release

Additional build information available in the BUILDING file.

Binaries

Testing

On a running NetBSD system:

cd /usr/tests; atf-run | atf-report

Troubleshooting

Latest sources

To fetch the main CVS repository:

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P src

To work in the Git mirror, which is updated every few hours from CVS:

git clone https://github.com/NetBSD/src.git