FreeBSD src
Go to file
Konstantin Belousov 2d19b736ed Rewrite subr_sleepqueue.c use of callouts to not depend on the
specifics of callout KPI.  Esp., do not depend on the exact interface
of callout_stop(9) return values.

The main change is that instead of requiring precise callouts, code
maintains absolute time to wake up.  Callouts now should ensure that a
wake occurs at the requested moment, but we can tolerate both run-away
callout, and callout_stop(9) lying about running callout either way.

As consequence, it removes the constant source of the bugs where
sleepq_check_timeout() causes uninterruptible thread state where the
thread is detached from CPU, see e.g. r234952 and r296320.

Patch also removes dual meaning of the TDF_TIMEOUT flag, making code
(IMO much) simpler to reason about.

Tested by:	pho
Reviewed by:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	1 month
Differential revision:	https://reviews.freebsd.org/D7137
2016-07-28 09:09:55 +00:00
bin When a debugger attaches to the process, SIGSTOP is sent to the 2016-07-28 08:41:13 +00:00
cddl MFV r303083: 7164 zdb should be able to open the root dataset 2016-07-20 11:15:32 +00:00
contrib libcxxrt: fix demangling of wchar_t 2016-07-27 17:18:08 +00:00
crypto Remove duplicate symbols from libroken version-script.map 2016-07-21 18:12:39 +00:00
etc Move chown tests to proper path 2016-07-23 05:49:18 +00:00
gnu rename ARM's libunwind.S to to avoid conflict with llvm libunwind 2016-07-27 16:34:19 +00:00
include Fix typing of srandom() and initstate(). 2016-07-26 20:11:29 +00:00
kerberos5 DIRDEPS_BUILD: Update dependencies 2016-06-14 16:55:05 +00:00
lib Remove empty initializer for the once facility. It was not needed 2016-07-27 15:14:11 +00:00
libexec Fix dlsym(RTLD_NEXT) handling to only return the next library in last library cases. 2016-07-15 19:07:00 +00:00
release Create a /usr/home -> /home symlink for the arm images to 2016-07-20 22:49:33 +00:00
rescue DIRDEPS_BUILD: Fix and hookup rescue/rescue to the build. 2016-05-26 23:20:40 +00:00
sbin Due to dropped mbuf in netisr queue route(8) can fall into infinity 2016-07-27 08:26:34 +00:00
secure Revert r301551, which added blacklistd(8) to sshd(8). 2016-06-24 23:22:42 +00:00
share Extract the calculation of the callout fire time into the new function 2016-07-28 08:57:01 +00:00
sys Rewrite subr_sleepqueue.c use of callouts to not depend on the 2016-07-28 09:09:55 +00:00
targets Add clang-format under WITH_CLANG_EXTRAS. 2016-06-17 16:46:58 +00:00
tests Add PTRACE_VFORK to trace vfork events. 2016-07-18 14:53:55 +00:00
tools Add a hack to add weekday to date format for ko_KR locale. 2016-07-27 18:12:36 +00:00
usr.bin Testcase 7.8 no longer needs to be marked TODO 2016-07-27 06:49:16 +00:00
usr.sbin Fix non-amd64 build from r292043 after reconnecting in r303410. 2016-07-27 21:45:11 +00:00
.arcconfig Remove project.name which is a product of a bygone era. 2016-04-21 04:33:07 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2015-12-31 11:21:45 +00:00
LOCKS Explicitly require Security Officer's approval for kernel PRNG bits. 2013-09-17 14:19:05 +00:00
MAINTAINERS Remove myself from kern_timeout.c yeah! 2016-07-27 20:37:32 +00:00
Makefile SYSTEM_COMPILER: Rework the logic to allow a 'make test-system-compiler'. 2016-07-24 18:05:05 +00:00
Makefile.inc1 Remove ${OBJDUMP} as it is not used by the base system 2016-07-27 14:58:15 +00:00
Makefile.libcompat Don't disable binutils/elftoolchain bootstrapping with external compiler. 2016-07-24 18:50:11 +00:00
ObsoleteFiles.inc Don't delete usr/share/local/kk_KZ.UTF-8 with "make delete-old" after r302329 2016-07-14 14:16:20 +00:00
README README: remove nonexistent 'games' directory. 2016-05-18 10:43:13 +00:00
UPDATING Minor wording improvements to the note about pipe(2) removal. 2016-07-20 18:00:22 +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.  See build(7)
and 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.  See build(7), config(8),
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
for more information.

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 kernel configuration files reside in the sys/<arch>/conf
sub-directory.  GENERIC is the default configuration used in release builds.
NOTES contains entries and documentation for all possible
devices, not just those commonly used.


Source Roadmap:
---------------

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

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.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

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