#
b7b78c1c |
|
28-Mar-2024 |
Randall Stewart <rrs@FreeBSD.org> |
Optimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold HPTS inserts a softclock for system call return that optimizes performance. However when no HPTS threads need the help (i.e. when they have less than 100 or so connections) then there should be little work done i.e. check the counter and return instead of running through all the threads getting locks etc.ptimize HPTS so that little work is done until we have a hpts thread that is over the connection threshold. Reported by: eduardo Reviewed by: gallatin, glebius, tuexen Tested by: gallatin Differential Revision: https://reviews.freebsd.org/D44420
|
#
b0aaf8be |
|
18-Mar-2024 |
Mateusz Guzik <mjg@FreeBSD.org> |
Rename VM_LAST to more appropriate VM_GUEST_LAST NFC Sponsored by: Rubicon Communications, LLC ("Netgate")
|
#
da48ddbf |
|
04-Mar-2024 |
Mitchell Horne <mhorne@FreeBSD.org> |
riscv: catch up with EARLY_PRINTF changes On this platform early console access is possible via SBI. Follow recent changes to EARLY_PRINTF option and give it a named constant. Update the commented option in GENERIC so that it compiles. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D44100
|
#
20289092 |
|
08-Jan-2024 |
Andrew Turner <andrew@FreeBSD.org> |
sys: Simplify enabling EARLY_PRINTF uarts Support selecting the early uart with "options EARLY_PRINTF=foo" in the kernel configuration file. This allows us to not have to change source files when enabling EARLY_PRINTF, simplifying enabling it. New uart drivers can be enabled by defining a new early_printf_foo value to be unique, then using "#if CHECK_EARLY_PRINTF(foo)" to decide when to enable the uart. While here add pl011 early printf support. Reviewed by: imp (earlier version) Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D43360
|
#
9ed713d9 |
|
03-Feb-2024 |
Mark Johnston <markj@FreeBSD.org> |
cdefs: Introduce __result_use_or_ignore_check Try to paper over inconsistent semantics for __warn_unused_result__ between clang and gcc. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425 for a spirited discussion of these semantics. Introduce __result_use_or_ignore_check, which allows callers to explicitly ignore the return value with a cast to void. Use that to restore some checking for copyout() and friends, previously removed in commit d07acc58d898 ("systm: Relax __result_use_check annotations"). Reviewed by: olce, rpokala, kib, emaste MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D43426
|
#
6b353101 |
|
18-Jan-2024 |
Olivier Certner <olce@FreeBSD.org> |
SCHEDULER_STOPPED(): Rely on a global variable A commit from 2012 (5d7380f8e34f0083, r228424) introduced 'td_stopsched', on the ground that a global variable would cause all CPUs to have a copy of it in their cache, and consequently of all other variables sharing the same cache line. This is really a problem only if that cache line sees relatively frequent modifications. This was unlikely to be the case back then because nearby variables are almost never modified as well. In any case, today we have a new tool at our disposal to ensure that this variable goes into a read-mostly section containing frequently-accessed variables ('__read_frequently'). Most of the cache lines covering this section are likely to always be in every CPU cache. This makes the second reason stated in the commit message (ensuring the field is in the same cache line as some lock-related fields, since these are accessed in close proximity) moot, as well as the second order effect of requiring an additional line to be present in the cache (the one containing the new 'scheduler_stopped' boolean, see below). From a pure logical point of view, whether the scheduler is stopped is a global state and is certainly not a per-thread quality. Consequently, remove 'td_stopsched', which immediately frees a byte in 'struct thread'. Currently, the latter's size (and layout) stays unchanged, but some of the later re-orderings will probably benefit from this removal. Available bytes at the original position for 'td_stopsched' have been made explicit with the addition of the '_td_pad0' member. Store the global state in the new 'scheduler_stopped' boolean, which is annotated with '__read_frequently'. Replace uses of SCHEDULER_STOPPED_TD() with SCHEDULER_STOPPER() and remove the former as it is now unnecessary. Reviewed by: markj, kib Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43572
|
#
cd0c52e5 |
|
18-Jan-2024 |
Olivier Certner <olce@FreeBSD.org> |
SCHEDULER_STOPPED(): Move it (back) to 'systm.h' It's not an assertion, so doesn't logically belong to 'kassert.h'. Moreover, a subsequent commit will make it rely on a variable whose declaration also belongs to 'systm.h'. Approved by: markj (mentor) MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D43571
|
#
d8decc9a |
|
19-Jan-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
Add kcmp(2) kernel bits This is based purely on reading the Linux kcmp(2) man page. In addition to the Linux set of comparators, I also added KCMP_FILEOBJ to compare underlying file' objects. Tested by: manu Reviewed by: brooks, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D43518
|
#
d07acc58 |
|
12-Jan-2024 |
Mark Johnston <markj@FreeBSD.org> |
systm: Relax __result_use_check annotations When compiling with gcc, functions annotated this way can not have their return values cast away, e.g., with `(void)copyout(...)`. clang permits it but gcc does not. Since we have a number of such casts for calls which copy data out of the kernel, and since failing to check for errors when copying *in* is a much more severe bug, remove some of the annotations in order to make the gcc build happy. Reviewed by: kib Reported by: Jenkins Fixes: 8e36732e6eb5 ("systm: Annotate copyin() and related functions with __result_use_check") Differential Revision: https://reviews.freebsd.org/D43418
|
#
8e36732e |
|
03-Jan-2024 |
Mark Johnston <markj@FreeBSD.org> |
systm: Annotate copyin() and related functions with __result_use_check Now that all in-tree callers check for errors (or cast them away), we can ask the compiler to check that new code does the same. This was prompted by SA-23:18.nfsclient, which was caused by missing error handling. This change is a weak mitigation since code can easily fail to propagate error handling to the right place, but it's better than nothing. Reviewed by: kib, jhb MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D43223
|
#
e3cbc572 |
|
04-Dec-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
kern/subr_trap.c: repair the HPTS performance hack in userret() It wasn't functional as subr_trap.c doesn't include opt_inet.h. Put a better comment provided by gallatin@ in place of the old one. The idea is to use userret() as a cheap place to call a soft clock. This approach saves CPU on busy machines and saves power on idle machines. An alternative would be to constantly schedule callouts. Running with neither callouts nor the soft clock ruins HPTS precision. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42860
|
#
29363fb4 |
|
23-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove ancient SCCS tags. Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script. Sponsored by: Netflix
|
#
2ff63af9 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .h pattern Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/
|
#
a014e0a3 |
|
12-May-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
unr(9): add iterator interface Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D40089
|
#
eee4264c |
|
08-Mar-2023 |
John Baldwin <jhb@FreeBSD.org> |
Make <sys/systm.h> more self-contained. Replace <sys/cdefs.h> with <sys/types.h>. Other includes need types defined in <sys/types.h> and <sys/types.h> includes <sys/cdefs.h> already. While here, move the <machine/*.h> headers below the <sys/*.h> headers. Reviewed by: imp, kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D38841
|
#
143942f9 |
|
08-Oct-2022 |
Mateusz Guzik <mjg@FreeBSD.org> |
unr: remove UNR64_LOCKED All platforms support 64-bit atomics now.
|
#
7ea1cac2 |
|
07-Sep-2022 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
systm.h: change pause from #define to inline function There are drivers are using (*pause)(x, y) function pointers and depending on how "pause" is used it gets replaced by pause_sbt causing compile time failures. Given "pause" is a generic enough name change it from a #define to an inline function to avoid replacements where it should not. MFC after: 2 weeks Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D36489
|
#
cc1ec772 |
|
22-Jul-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
Adjust g_waitidle() visibility and definition Explicitly pass the struct thread argument. Move the function prototype from sys/systm.h to geom/geom.h, we do not need almost each kernel source to see the prototype, it is now used only by kern/vfs_mountroot.c outside geom/geom_event.c, where the function is defined. Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D35888
|
#
ef221ff6 |
|
13-Jul-2022 |
Mark Johnston <markj@FreeBSD.org> |
time: Make realitexpire() local to kern_time.c MFC after: 1 week Sponsored by: The FreeBSD Foundation
|
#
8701571d |
|
21-Jun-2022 |
Mitchell Horne <mhorne@FreeBSD.org> |
set_cputicker: use a bool The third argument to this function indicates whether the supplied ticker is fixed or variable, i.e. requiring calibration. Give this argument a type and name that better conveys this purpose. Reviewed by: kib, markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D35459
|
#
e59b940d |
|
20-Apr-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
unr(9): allow to avoid internal locking Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D35014
|
#
14312394 |
|
27-Apr-2022 |
John Baldwin <jhb@FreeBSD.org> |
Add a __witness_used for variables only used under #ifdef WITNESS. __diagused is now solely used for variables only used under INVARIANTS. Reviewed by: mjg Differential Revision: https://reviews.freebsd.org/D35085
|
#
b40c0db6 |
|
27-Apr-2022 |
Mateusz Guzik <mjg@FreeBSD.org> |
Patch up __diagused for when only one of INVARIANTS or WITNESS is defined Reported by: John F Carr<jfc@mit.edu>
|
#
d283601b |
|
03-Mar-2022 |
Mateusz Guzik <mjg@FreeBSD.org> |
Revert "Expand __diagused to include the KTR kernel diagnostic option." This reverts commit 55339af296ca2a360a82e46d6699fd1b57ecf815. Induces warnings for kernels built with KTR but without debug. Discussed with: scottl
|
#
55339af2 |
|
26-Feb-2022 |
Scott Long <scottl@FreeBSD.org> |
Expand __diagused to include the KTR kernel diagnostic option.
|
#
54d34bfb |
|
28-Jan-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
Introduce sys/kassert.h It contains assert-related definitions previously provided by sys/systm.h. The new header is leaner than whole systm.h. Include kassert.h from systm.h for compatibility. The copyright assignment to Eivind Eklund was suggested by Kirk McKusick and is based in the commit 5526d2d920eb17b1507499f35b275b486f7fe8d0. Suggested by: jhb Reviewed by: alc, imp, jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D34089
|
#
74cf7cae |
|
30-Dec-2021 |
John Baldwin <jhb@FreeBSD.org> |
softclock: Use dedicated ithreads for running callouts. Rather than using the swi infrastructure, rewrite softclock() as a thread loop (softclock_thread()) and use it as the main routine of the softclock threads. The threads use the CC_LOCK as the thread lock when idle. Reviewed by: mav, imp, kib Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D33683
|
#
072d5b98 |
|
03-Nov-2021 |
Warner Losh <imp@FreeBSD.org> |
sysbeep: Adjust interface to take a duration as a sbt Change the 'period' argument to 'duration' and change its type to sbintime_t so we can more easily express different durations. Reviewed by: tsoome, glebius Differential Revision: https://reviews.freebsd.org/D32619
|
#
ea14af2d |
|
25-Oct-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Inline critical enter/exit for "tied" kernel modules Sponsored by: Rubicon Communications, LLC ("Netgate")
|
#
36fc3830 |
|
24-Aug-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Remove bcopy declaration The kernel was migrated to memmove in ba96f37758412151 ("Use __builtin for various mem* and b* (e.g. bzero) routines."). Sponsored by: Rubicon Communications, LLC ("Netgate")
|
#
e72e16c5 |
|
23-Aug-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Remove bzero declaration The kernel was migrated to memset in ba96f37758412151 ("Use __builtin for various mem* and b* (e.g. bzero) routines.") and there are no remaining architectures using the file. malloc is augmented to prevent KMSAN from breaking. Sponsored by: Rubicon Communications, LLC ("Netgate")
|
#
362c5920 |
|
23-Aug-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Remove libkern/bcmp.c The kernel was migrated to memcmp in ba96f37758412151 ("Use __builtin for various mem* and b* (e.g. bzero) routines.") and there are no remaining architectures using the file. Sponsored by: Rubicon Communications, LLC ("Netgate")
|
#
6f179693 |
|
29-Jul-2021 |
Mark Johnston <markj@FreeBSD.org> |
Add interceptors for atomic operations on userspace memory Implement them for KASAN. KCSAN interceptors are left unimplemented for now. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
|
#
a90d053b |
|
19-Jul-2021 |
Mark Johnston <markj@FreeBSD.org> |
Simplify kernel sanitizer interceptors KASAN and KCSAN implement interceptors for various primitive operations that are not instrumented by the compiler. KMSAN requires them as well. Rather than adding new cases for each sanitizer which requires interceptors, implement the following protocol: - When interceptor definitions are required, define SAN_NEEDS_INTERCEPTORS and SANITIZER_INTERCEPTOR_PREFIX. - In headers that declare functions which need to be intercepted by a sanitizer runtime, use SANITIZER_INTERCEPTOR_PREFIX to provide declarations. - When SAN_RUNTIME is defined, do not redefine the names of intercepted functions. This is typically the case in files which implement sanitizer runtimes but is also needed in, for example, files which define ifunc selectors for intercepted operations. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
|
#
b9296725 |
|
15-Jul-2021 |
Mateusz Guzik <mjg@FreeBSD.org> |
Add __diagused This can be used for variables which are only used with either INVARIANTS or WITNESS. Without any annotation they run into dead store warnings from cc --analyze and always annotating with __unused may hide bad vars when it should not. Reviewed by: kib, markj Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D31185
|
#
dfff3776 |
|
12-Apr-2021 |
Mark Johnston <markj@FreeBSD.org> |
Rename struct device to struct _device types.h defines device_t as a typedef of struct device *. struct device is defined in subr_bus.c and almost all of the kernel uses device_t. The LinuxKPI also defines a struct device, so type confusion can occur. This causes bugs and ambiguity for debugging tools. Rename the FreeBSD struct device to struct _device. Reviewed by: gbe (man pages) Reviewed by: rpokala, imp, jhb MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D29676
|
#
ec8f1ea8 |
|
24-Mar-2021 |
Mark Johnston <markj@FreeBSD.org> |
Generalize sanitizer interceptors for memory and string routines Similar to commit 3ead60236f ("Generalize bus_space(9) and atomic(9) sanitizer interceptors"), use a more generic scheme for interposing sanitizer implementations of routines like memcpy(). No functional change intended. MFC after: 1 month Sponsored by: The FreeBSD Foundation
|
#
b2c8cbf9 |
|
04-Mar-2021 |
Alex Richardson <arichardson@FreeBSD.org> |
Remove unnecessary semicolon from CRITICAL_ASSERT() This fixes off-by-default "empty statement" compiler warnings.
|
#
b5449c92 |
|
26-Feb-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
Use atomic_interrupt_fence() instead of bare __compiler_membar() for the which which definitely use membar to sync with interrupt handlers. libc and rtld uses of __compiler_membar() seems to want compiler barriers proper. The barrier in sched_unpin_lite() after td_pinned decrement seems to be not needed and removed, instead of convertion. Reviewed by: markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28956
|
#
cd853791 |
|
27-Nov-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
Make MAXPHYS tunable. Bump MAXPHYS to 1M. Replace MAXPHYS by runtime variable maxphys. It is initialized from MAXPHYS by default, but can be also adjusted with the tunable kern.maxphys. Make b_pages[] array in struct buf flexible. Size b_pages[] for buffer cache buffers exactly to atop(maxbcachebuf) (currently it is sized to atop(MAXPHYS)), and b_pages[] for pbufs is sized to atop(maxphys) + 1. The +1 for pbufs allow several pbuf consumers, among them vmapbuf(), to use unaligned buffers still sized to maxphys, esp. when such buffers come from userspace (*). Overall, we save significant amount of otherwise wasted memory in b_pages[] for buffer cache buffers, while bumping MAXPHYS to desired high value. Eliminate all direct uses of the MAXPHYS constant in kernel and driver sources, except a place which initialize maxphys. Some random (and arguably weird) uses of MAXPHYS, e.g. in linuxolator, are converted straight. Some drivers, which use MAXPHYS to size embeded structures, get private MAXPHYS-like constant; their convertion is out of scope for this work. Changes to cam/, dev/ahci, dev/ata, dev/mpr, dev/mpt, dev/mvs, dev/siis, where either submitted by, or based on changes by mav. Suggested by: mav (*) Reviewed by: imp, mav, imp, mckusick, scottl (intermediate versions) Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D27225
|
#
0c56925b |
|
27-Nov-2020 |
Mark Johnston <markj@FreeBSD.org> |
callout(9): Remove some leftover APM BIOS support This code is obsolete since r366546. Reviewed by: imp Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D27267
|
#
af928ad5 |
|
11-Oct-2020 |
Warner Losh <imp@FreeBSD.org> |
systm.h: forward declare ucred for _STANDALONE too There's a number of types we forward declare for the kernel. We need struct ucred for the ZSTD ZFS integration, so go ahead and forward declare it here too.
|
#
bc683a89 |
|
07-Oct-2020 |
Warner Losh <imp@FreeBSD.org> |
Move kernel env global variables, etc to sys/kenv.h The kernel globals for kenv are confined to 2 files that need them and a few that likely shouldn't (but as written the code does). Move them from sys/systm.h to sys/kenv.h. This removed a XXX from systm.h and cleans it up a little bit...
|
#
6debfd4b |
|
06-Oct-2020 |
Mitchell Horne <mhorne@FreeBSD.org> |
Remove unused function cpu_boot() The prototype was added with the creation of kern_shutdown.c in r17658, but it appears to have never been implemented. Remove it now. Reviewed by: cem, kib Differential Revision: https://reviews.freebsd.org/D26702
|
#
728757f2 |
|
25-Sep-2020 |
Warner Losh <imp@FreeBSD.org> |
Adjustments to includes for openzfs in _STANDALONE Allow the necessary parts of systm.h to be visible in the _STANDALONE environnment. Limit the reset to only being visible for _KERNEL builds. Map KASSERT, etc to printf on failure in the bootloader until we have more confidence things won't break and leave systems unbootable. Eventually, this should map to a full panic in the bootloader, but that also needs some enhancement to be more useful. Reviewed by: tsoome, jhb Differential Revision: https://reviews.freebsd.org/D26543
|
#
cba446e2 |
|
21-Sep-2020 |
Mitchell Horne <mhorne@FreeBSD.org> |
Add getenv(9) boolean parsing functions This adds the getenv_bool() function, to parse a boolean value from a kernel environment variable or tunable. This works for traditional boolean values like "0" and "1", and also "true" and "false" (case-insensitive). These semantics do not yet apply to sysctls declared using SYSCTL_BOOL with CTLFLAG_TUN (they still only parse 1 and 0). Also added are two wrapper functions, getenv_is_true() and getenv_is_false(). These are slightly simpler for callers wishing to perform a single check of a configuration variable. Reviewed by: jhb (slightly earlier version) Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D26270
|
#
f6e54eb3 |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
sys: clean up empty lines in .c and .h files
|
#
1f770560 |
|
28-Aug-2020 |
Warner Losh <imp@FreeBSD.org> |
Remove splclock(). It's not useful to keep. splclock is used in one driver (spkr) to control access to timer_spkr_* routines. However, nothing else does. So it shows no useful locking info to someone that would want to lock spkr. NOTE: I think there's races with timer_spkr_{acquire,release} since there's no interlock in those routines, despite there being a spin lock to protect the clock. Current other users appear to use no extra locking protocol, though they themselves appear to be at least attempting to make sure that only a single thread calls these routines. I suspect the right answer is to update these routines to take/release the clock spin lock since they are short and to the point, but that's beyond the scope of this commit.
|
#
27b293b0 |
|
28-Aug-2020 |
Warner Losh <imp@FreeBSD.org> |
remove splbio and splcam splbio and splcan have been completely removed from the tree. We can now remove their definitions here. They've been nops for a long time and were only preserved to give hints on how to lock drivers. All drivers have been deleted or converted, so they can be deleted now.
|
#
953171ba |
|
08-Jun-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Move MPASS() macros to systm.h. They are widely used all over the kernel and aren't contained only to the locking code. Reviewed by: kib, mjg Differential Revision: https://reviews.freebsd.org/D23656
|
#
852c303b |
|
25-May-2020 |
Conrad Meyer <cem@FreeBSD.org> |
copystr(9): Move to deprecate (attempt #2) This reapplies logical r360944 and r360946 (reverting r360955), with fixed copystr() stand-in replacement macro. Eventually the goal is to convert consumers and kill the macro, but for a first step it helps if the macro is correct. Prior commit message: Unlike the other copy*() functions, it does not serve to copy from one address space to another or protect against potential faults. It's just an older incarnation of the now-more-common strlcpy(). Add a coccinelle script to tools/ which can be used to mechanically convert existing instances where replacement with strlcpy is trivial. In the two cases which matched, fuse_vfsops.c and union_vfsops.c, the code was further refactored manually to simplify. Replace the declaration of copystr() in systm.h with a small macro wrapper around strlcpy (with correction from brooks@ -- thanks). Remove N redundant MI implementations of copystr. For MIPS, this entailed inlining the assembler copystr into the only consumer, copyinstr, and making the latter a leaf function. Reviewed by: jhb (earlier version) Discussed with: brooks (thanks!) Differential Revision: https://reviews.freebsd.org/D24672
|
#
c79cee71 |
|
13-May-2020 |
Kyle Evans <kevans@FreeBSD.org> |
kernel: provide panicky version of __unreachable __builtin_unreachable doesn't raise any compile-time warnings/errors on its own, so problems with its usage can't be easily detected. While it would be nice for this situation to change and compilers to at least add a warning for trivial cases where local state means the instruction can't be reached, this isn't the case at the moment and likely will not happen. This commit adds an __assert_unreachable, whose intent is incredibly clear: it asserts that this instruction is unreachable. On INVARIANTS builds, it's a panic(), and on non-INVARIANTS it expands to __unreachable(). Existing users of __unreachable() are converted to __assert_unreachable, to improve debuggability if this assumption is violated. Reviewed by: mjg Differential Revision: https://reviews.freebsd.org/D23793
|
#
051fc58c |
|
11-May-2020 |
Conrad Meyer <cem@FreeBSD.org> |
Revert r360944 and r360946 until reported issues can be resolved Reported by: cy
|
#
58074462 |
|
11-May-2020 |
Conrad Meyer <cem@FreeBSD.org> |
copystr(9): Move to deprecate [2/2] Unlike the other copy*() functions, it does not serve to copy from one address space to another or protect against potential faults. It's just an older incarnation of the now-more-common strlcpy(). Add a coccinelle script to tools/ which can be used to mechanically convert existing instances where replacement with strlcpy is trivial. In the two cases which matched, fuse_vfsops.c and union_vfsops.c, the code was further refactored manually to simplify. Replace the declaration of copystr() in systm.h with a small macro wrapper around strlcpy. Remove N redundant MI implementations of copystr. For MIPS, this entailed inlining the assembler copystr into the only consumer, copyinstr, and making the latter a leaf function. Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D24672
|
#
f0a747d1 |
|
28-Jan-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
vfs: add VNPASS macro and augment VNASSERT to print more about the assert Sample out put now instead of mere VNASSERT failed: VNASSERT failed: vp->v_holdcnt == 1234 not true at /usr/src/sys/kern/vfs_subr.c:3148 (vputx) Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D23396
|
#
d199ad3b |
|
11-Jan-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
Add "panicked" boolean which can be tested instead of panicstr The test is performed all the time and reading entire panicstr to do it wastes space.
|
#
879e0604 |
|
11-Jan-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
Add KERNEL_PANICKED macro for use in place of direct panicstr tests
|
#
af00898b |
|
26-Dec-2019 |
Conrad Meyer <cem@FreeBSD.org> |
gone_in(9): Trivial string grammar and style cleanups
|
#
fea73412 |
|
24-Dec-2019 |
Conrad Meyer <cem@FreeBSD.org> |
sleep(9), sleepqueue(9): const'ify wchan pointers _sleep(9), wakeup(9), sleepqueue(9), et al do not dereference or modify the channel pointers provided in any way; they are merely used as intptrs into a dictionary structure to match waiters with wakers. Correctly annotate this such that _sleep() and wakeup() may be used on const pointers without invoking ugly patterns like __DECONST(). Plumb const through all of the underlying sleepqueue bits. No functional change. Reviewed by: rlibby Discussed with: kib, markj Differential Revision: https://reviews.freebsd.org/D22914
|
#
4b28d96e |
|
13-Dec-2019 |
John Baldwin <jhb@FreeBSD.org> |
Remove the deprecated timeout(9) interface. All in-tree consumers have been converted to callout(9). Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D22602
|
#
130fffa2 |
|
21-Nov-2019 |
Alexander Motin <mav@FreeBSD.org> |
Add variant of root_mount_hold() without allocation. It allows to use this KPI in non-sleepable contexts. MFC after: 2 weeks Sponsored by: iXsystems, Inc.
|
#
849aef49 |
|
21-Nov-2019 |
Andrew Turner <andrew@FreeBSD.org> |
Port the NetBSD KCSAN runtime to FreeBSD. Update the NetBSD Kernel Concurrency Sanitizer (KCSAN) runtime to work in the FreeBSD kernel. It is a useful tool for finding data races between threads executing on different CPUs. This can be enabled by enabling KCSAN in the kernel config, or by using the GENERIC-KCSAN amd64 kernel. It works on amd64 and arm64, however the later needs a compiler change to allow -fsanitize=thread that KCSAN uses. Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D22315
|
#
f91aa773 |
|
19-Jun-2019 |
Alexander Motin <mav@FreeBSD.org> |
Add wakeup_any(), cheaper wakeup_one() for taskqueue(9). wakeup_one() and underlying sleepq_signal() spend additional time trying to be fair, waking thread with highest priority, sleeping longest time. But in case of taskqueue there are many absolutely identical threads, and any fairness between them is quite pointless. It makes even worse, since round-robin wakeups not only make previous CPU affinity in scheduler quite useless, but also hide from user chance to see CPU bottlenecks, when sequential workload with one request at a time looks evenly distributed between multiple threads. This change adds new SLEEPQ_UNFAIR flag to sleepq_signal(), making it wakeup thread that went to sleep last, but no longer in context switch (to avoid immediate spinning on the thread lock). On top of that new wakeup_any() function is added, equivalent to wakeup_one(), but setting the flag. On top of that taskqueue(9) is switchied to wakeup_any() to wakeup its threads. As result, on 72-core Xeon v4 machine sequential ZFS write to 12 ZVOLs with 16KB block size spend 34% less time in wakeup_any() and descendants then it was spending in wakeup_one(), and total write throughput increased by ~10% with the same as before CPU usage. Reviewed by: markj, mmacy MFC after: 2 weeks Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D20669
|
#
1177d38c |
|
21-May-2019 |
Stephen J. Kiernan <stevek@FreeBSD.org> |
The older detection methods (smbios.bios.vendor and smbios.system.product) are able to determine some virtual machines, but the vm_guest variable was still only being set to VM_GUEST_VM. Since we do know what some of them specifically are, we can set vm_guest appropriately. Also, if we see the CPUID has the HV flag, but we were unable to find a definitive vendor in the Hypervisor CPUID Information Leaf, fall back to the older detection methods, as they may be able to determine a specific HV type. Add VM_GUEST_PARALLELS value to VM_GUEST for Parallels. Approved by: cem Differential Revision: https://reviews.freebsd.org/D20305
|
#
949f834a |
|
17-May-2019 |
Stephen J. Kiernan <stevek@FreeBSD.org> |
Instead of individual conditional statements to look for each hypervisor type, use a table to make it easier to add more in the future, if needed. Add VirtualBox detection to the table ("VBoxVBoxVBox" is the hypervisor vendor string to look for.) Also add VM_GUEST_VBOX to the VM_GUEST enumeration to indicate VirtualBox. Save the CPUID base for the hypervisor entry that we detected. Driver code may need to know about it in order to obtain additional CPUID features. Approved by: bryanv, jhb Differential Revision: https://reviews.freebsd.org/D16305
|
#
376f78be |
|
17-May-2019 |
Brooks Davis <brooks@FreeBSD.org> |
FCP-101: Bump __FreeBSD_version for driver removal. Remove gone_by_fcp101_dev macro. Remove orphaned comment.
|
#
983ed4f9 |
|
22-Feb-2019 |
Matt Macy <mmacy@FreeBSD.org> |
lkpi: allow late binding of linux_alloc_current Some consumers may be loosely coupled with the lkpi. This allows them to call linux_alloc_current without having a static dependency. Reviewed by: hps@ MFC after: 1 week Sponsored by: iX Systems Differential Revision: https://reviews.freebsd.org/D19257
|
#
afacf95d |
|
06-Dec-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
unr64: use locked variant if not __LP64__ The current ifdefs are not sufficient to distinguish 32- and 64- bit variants, which results e.g. in powerpc64 not using atomics. While some 32-bit archs provide 64-bit atomics, there is no huge advantage of using them on these platforms. Reported by: many Suggested by: jhb Sponsored by: The FreeBSD Foundation
|
#
435bef7a |
|
20-Nov-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
Implement unr64 Important users of unr like tmpfs or pipes can get away with just ever-increasing counters, making the overhead of managing the state for 32 bit counters a pessimization. Change it to an atomic variable. This can be further sped up by making the counts variable "allocate" ranges and store them per-cpu. Reviewed by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D18054
|
#
9083b605 |
|
24-Oct-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Deprecate a number of less used 10 and 10/100 Ethernet devices. The current deprecated list is: ae, bm, cs, de, dme, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb, xe The list as refined as part of FCP-0101. Per the FCP, devices may be removed from the deprecation list if enough users are found or they are converted to iflib. FCP: https://github.com/freebsd/fcp/blob/master/fcp-0101.md
|
#
6858c2cc |
|
20-Oct-2018 |
Conrad Meyer <cem@FreeBSD.org> |
Replace ttyprintf with sbuf_printf and tty drain routine Add string variants of cnputc and tty_putchar, and use them from the tty sbuf drain routine. Suggested by: ed@ Sponsored by: Dell EMC Isilon
|
#
3f102f58 |
|
11-Oct-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
Provide string functions for use before ifuncs get resolved. The change is a no-op for architectures which don't ifunc memset, memcpy nor memmove. Convert places which need them. Xen bits by royger. Reviewed by: kib Approved by: re (gjb) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17487
|
#
cc4f3d0a |
|
05-Sep-2018 |
Mark Johnston <markj@FreeBSD.org> |
Rename hardclock_cnt() to hardclock() and remove the old implementation. Also remove some related and unused subroutines. They have long been replaced by variants that handle multiple coalesced events with a single call. No functional change intended. Reviewed by: cem, kib Approved by: re (gjb) Differential Revision: https://reviews.freebsd.org/D17029
|
#
4ca8c1ef |
|
22-Aug-2018 |
Conrad Meyer <cem@FreeBSD.org> |
KASSERT: Make runtime optionality optional Add an option, KASSERT_PANIC_OPTIONAL, that allows runtime KASSERT() behavior changes. When this option is not enabled, code that allows KASSERTs to become optional is not enabled, and all violated assertions cause termination. The runtime KASSERT behavior was added in r243980. One important distinction here is that panic has __dead2 ("attribute((noreturn))"), while kassert_panic does not. Static analyzers like Coverity understand __dead2. Without it, KASSERTs go misunderstood, resulting in many false positives that result from violation of program invariants. Reviewed by: jhb, jtl, np, vangyzen Relnotes: yes Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D16835
|
#
c7a82b9c |
|
09-Jul-2018 |
Kyle Evans <kevans@FreeBSD.org> |
kern_environment: bool'itize dynamic_kenv; fix small style(9) nit
|
#
3843df3f |
|
08-Jul-2018 |
Matt Macy <mmacy@FreeBSD.org> |
critical_{enter, exit}: add missing compiler barrier Reported by: markj
|
#
39d44f7f |
|
05-Jul-2018 |
Kyle Evans <kevans@FreeBSD.org> |
kern_environment: use any provided environments, evict hintmode/envmode At the moment, hintmode and envmode are used to indicate whether static hints or static env have been provided in the kernel config(5) and the static versions are mutually exclusive with loader(8)-provided environment. hintmode *can* be reconfigured later to pull from the dynamic environment, thus taking advantage of the loader(8) or post-kmem environment setting. This changeset fixes both problems at once to move us from a semi-confusing state to a consistent state: if an environment file, hints file, or loader(8) environment are provided, we use them in a well-known order of precedence: - loader(8) environment - static environment - static hints file Once the dynamic environment is setup this becomes a moot point. The loader(8) and static environments are merged (respecting the above order of precedence), and the static hints are merged in on an as-needed basis after the dynamic environment has been setup. Hints lookup are changed to respect all of the above. Before the dynamic environment is setup, lookups use the above-mentioned order and fallback to the next environment if a matching hint is not found. Once the dynamic environment is setup, that is used on its own since it captures all of the above information plus any dynamic kenv settings that came up later in boot. The following tangentially related changes were made to res_find: - A hintp cookie is now passed in so that related searches continue using the chain of environments (or dynamic environment) without relying on global state - All three environments will be searched if they actually have valid hints to use, rather than just choosing the first environment that actually had a hint and rolling with that only The hintmode sysctl has been ripped out. static_{env,hints}.disabled are still honored and will disable their respective environments from being used for hint lookups and from being merged into the dynamic environment, as expected. MFC after: 1 month (maybe) Differential Revision: https://reviews.freebsd.org/D15953
|
#
e2868734 |
|
05-Jul-2018 |
Kyle Evans <kevans@FreeBSD.org> |
Revert r335995 due to accidental changes snuck in
|
#
8ef58863 |
|
05-Jul-2018 |
Kyle Evans <kevans@FreeBSD.org> |
kern_environment: use any provided environments, evict hintmode/envmode At the moment, hintmode and envmode are used to indicate whether static hints or static env have been provided in the kernel config(5) and the static versions are mutually exclusive with loader(8)-provided environment. hintmode *can* be reconfigured later to pull from the dynamic environment, thus taking advantage of the loader(8) or post-kmem environment setting. This changeset fixes both problems at once to move us from a semi-confusing state to a consistent state: if an environment file, hints file, or loader(8) environment are provided, we use them in a well-known order of precedence: - loader(8) environment - static environment - static hints file Once the dynamic environment is setup this becomes a moot point. The loader(8) and static environments are merged (respecting the above order of precedence), and the static hints are merged in on an as-needed basis after the dynamic environment has been setup. Hints lookup are changed to respect all of the above. Before the dynamic environment is setup, lookups use the above-mentioned order and fallback to the next environment if a matching hint is not found. Once the dynamic environment is setup, that is used on its own since it captures all of the above information plus any dynamic kenv settings that came up later in boot. The following tangentially related changes were made to res_find: - A hintp cookie is now passed in so that related searches continue using the chain of environments (or dynamic environment) without relying on global state - All three environments will be searched if they actually have valid hints to use, rather than just choosing the first environment that actually had a hint and rolling with that only The hintmode sysctl has been ripped out. static_{env,hints}.disabled are still honored and will disable their respective environments from being used for hint lookups and from being merged into the dynamic environment, as expected. MFC after: 1 month (maybe) Differential Revision: https://reviews.freebsd.org/D15953
|
#
6443773d |
|
02-Jul-2018 |
Matt Macy <mmacy@FreeBSD.org> |
make critical_{enter, exit} inline Avoid pulling in all of the <sys/proc.h> dependencies by automatically generating a stripped down thread_lite exporting only the fields of interest. The field declarations are type checked against the original and the offsets of the generated result is automatically checked. kib has expressed disagreement and would have preferred to simply use genassym style offsets (which loses type check enforcement). jhb has expressed dislike of it due to header pollution and a duplicate structure. He would have preferred to just have defined thread in _thread.h. Nonetheless, he admits that this is the only viable solution at the moment. The impetus for this came from mjg's D15331: "Inline critical_enter/exit for amd64" Reviewed by: jeff Differential Revision: https://reviews.freebsd.org/D16078
|
#
ce70c572 |
|
20-Jun-2018 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
Permit the kernel environment to set an array of numeric values for a single sysctl(9) node. Reviewed by: kib@, imp@, jhb@ Differential Revision: https://reviews.freebsd.org/D15802 MFC after: 1 week Sponsored by: Mellanox Technologies
|
#
ba96f377 |
|
02-Jun-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
Use __builtin for various mem* and b* (e.g. bzero) routines. Some of the routines were using artificially limited builtin already, drop the explicit limit. The use of builtins allows quite often allows the compiler to elide the call or most zeroing to begin with. For instance, if the target object is 32 bytes in size and gets zeroed + has 16 bytes initialized, the compiler can just add code to zero out the rest. Note not all the primites have asm variants and some of the existing ones are not optimized. Maintaines are strongly encourage to take a look (regardless of this change).
|
#
97e89848 |
|
02-Jun-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
libkern: tidy up memset 1. Remove special-casing of 0 as it just results in an extra function call. This is clearly pessimal. 2. Drop the inline stuff. For the most part it is much better served with __builtin_memset (coming later). 3. Move the declaration to systm.h to match other funcs. Archs are encouraged to implement the variant for their own platform so that this implementation can be dropped.
|
#
27dca831 |
|
21-May-2018 |
Andriy Gapon <avg@FreeBSD.org> |
stop and restart kernel event timers in the suspend / resume cycle I have a system that is very unstable after resuming from suspend-to-RAM but only if HPET is used as the event timer. The theory is that SMM code / firmware could be enabling HPET for its own uses and unexpected interrupts cause a trouble for it. Originally I wanted to solve the problem in hpet_suspend() method, but that was insufficient as the event timer could get reprogrammed again. So, it's better, for my case and in general, to stop the event timer(s) before entering the hardware suspend. MFC after: 4 weeks Differential Revision: https://reviews.freebsd.org/D15413
|
#
af2ffa3d |
|
18-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
back out DBGSET macro
|
#
f1b2eaf1 |
|
18-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
add DBGSET macro to conditionally assign to a variable depending on INVARIANTS
|
#
0bb31152 |
|
04-May-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
Allow the compiler to use __builtin_memcpy In particular this allows the compiler to avoid heavy-handed machinery if the to be copied buffer is small. Reviewed by: jhb
|
#
a571c385 |
|
03-May-2018 |
Mateusz Guzik <mjg@FreeBSD.org> |
Allow __builtin_memmove instead of bcopy for small buffers of known size See r323329 for an explanation why this is a good idea.
|
#
2077229b |
|
03-Mar-2018 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
Allow pause_sbt() to catch signals during sleep by passing C_CATCH flag. Define pause_sig() function macro helper similarly to other kernel functions which catch signals. Update outdated function description. Discussed with: kib@ MFC after: 1 week Sponsored by: Mellanox Technologies
|
#
7e79c3c1 |
|
02-Mar-2018 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove _Nonnull attributes from user addresses arguments for copyout(9) family. The addresses are user-controllable, and if the process ABI allows mapping at zero, then the zero address is meaningful, contradicting the definition of _Nonnull. In any case, it does not require any special code to handle NULL udaddr. It is not clear if __restrict makes sense as well, since kaddr and udaddr point to different address spaces, so equal numeric values of the pointers do not imply aliasing and a legitimate. But leave it for later. copyinstr(9) does not have its user address argument annotated. Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
7faed6e3 |
|
28-Jan-2018 |
Warner Losh <imp@FreeBSD.org> |
Create deprecation management functions. gone_in(majar, msg); If we're running in FreeBSD major, tell the user this code may be deleted soon. If we're running in FreeBSD major - 1, the the user is deprecated and will be gone in major. Otherwise say nothing. gone_in_dev(dev, major, msg) Just like gone_in, except use device_printf. New tunable / sysctl debug.oboslete_panic: 0 - don't panic, 1 - panic in major or newer , 2 - panic in major - 1 or newer default: 0 if NO_OBSOLETE_CODE is defined, then both of these turn into compile time errors when building for major. Add options NO_OBSOLETE_CODE to kernel build system. This lets us tag code that's going away so users know it will be gone, as well as automatically manage things. Differential Review: https://reviews.freebsd.org/D13818
|
#
51369649 |
|
20-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 3-Clause license. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point.
|
#
40a77011 |
|
09-Nov-2017 |
Conrad Meyer <cem@FreeBSD.org> |
systm.h: Include cdefs.h first Ever since r143063, machine/atomic.h requires cdefs.h. So, include it first. Weak support: style(9) tells us to include cdefs.h first. Argument against: since code that includes systm.h still compiles, compilation units that include systm.h must already include cdefs.h. So, an argument could be made that the cdefs.h include could just be removed entirely. That is maybe a bigger change and not one I am interested in bikeshedding. Universe compiles. Sponsored by: Dell EMC Isilon
|
#
333dcaa4 |
|
11-Oct-2017 |
Matt Joras <mjoras@FreeBSD.org> |
Add clearing function for unr(9). Previously before you could call unrhdr_delete you needed to individually free every allocated unit. It is useful to be able to tear down the unr without having to go through this process, as it is significantly faster than freeing the individual units. Reviewed by: cem, lidl Approved by: rstone (mentor) Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D12591
|
#
2e2baf2e |
|
08-Sep-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
Allow __builtin_memset instead of bzero for small buffers of known size In particular this eliminates function calls and related register save/restore when only few writes would suffice. Example speed up can be seen in a fstat microbenchmark on AMD Ryzen cpus, where the throughput went up by ~4.5%. Thanks to cem@ for benchmarking and reviewing the patch. MFC after: 1 week
|
#
cf558f10 |
|
06-Sep-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
Introduce __read_frequently While __read_mostly groups variables together, their placement is not specified. In particular 2 frequently used variables can end up in different lines. This annotation is only expected to be used for variables read all the time, e.g. on each syscall entry. MFC after: 1 week
|
#
e0a6a23c |
|
07-Jun-2017 |
Marcelo Araujo <araujo@FreeBSD.org> |
Allow sysctl kern.vm_guest to return bhyve when running under bhyve. Submitted by: Sean Fagan <sef@ixsystems.com> Reviewed by: grehan MFH: 4 weeks. Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D11090
|
#
fbbd9655 |
|
28-Feb-2017 |
Warner Losh <imp@FreeBSD.org> |
Renumber copyright clause 4 Renumber cluase 4 to 3, per what everybody else did when BSD granted them permission to remove clause 3. My insistance on keeping the same numbering for legal reasons is too pedantic, so give up on that point. Submitted by: Jan Schaumann <jschauma@stevens.edu> Pull Request: https://github.com/freebsd/freebsd/pull/96
|
#
aca4bb91 |
|
25-Feb-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Do not leak mount references for dying threads. Thread might create a condition for delayed SU cleanup, which creates a reference to the mount point in td_su, but exit without returning through userret(), e.g. when terminating due to single-threading or process exit. In this case, td_su reference is not dropped and mount point cannot be freed. Handle the situation by clearing td_su also in the thread destructor and in exit1(). softdep_ast_cleanup() has to receive the thread as argument, since e.g. thread destructor is executed in different context. Reported and tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
|
#
8cd59625 |
|
24-Feb-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove cpu_deepest_sleep variable. On Core2 and older Intel CPUs, where TSC stops in C2, system does not allow C2 entrance if timecounter hardware is TSC. This is done by tc_windup() which tests for TC_FLAGS_C2STOP flag of the new timecounter and increases cpu_disable_c2_sleep if flag is set. Right now init_TSC_tc() only sets the flag if cpu_deepest_sleep >= 2, but TSC is initialized too early for this variable to be set by acpi_cpu.c. There is no reason to require that ACPI reported C2 and deeper states to set TC_FLAGS_C2STOP, so remove cpu_deepest_sleep test from init_TSC_tc() condition. And since this is the only use of the variable, remove it at all. Reported and submitted by: Jia-Shiun Li <jiashiun@gmail.com> Suggested by: jhb MFC after: 2 weeks
|
#
91fa4707 |
|
16-Feb-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
Introduce SCHEDULER_STOPPED_TD for use when the thread pointer was already read Sprinkle in few places.
|
#
649702c5 |
|
28-Jan-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
Make use of clang nullability attributes. Replace uses of the GCC __nonnull__ attribute with the clang nullability qualifiers. The replacement should be transparent for clang developers as the new qualifiers will produce the same warnings and will be useful for static checkers but will not cause aggressive optimizations. GCC will not produce such warnings and developers will have to use upgraded GCC ports built with the system headers from r312538. Hinted by: Apple's Libc-1158.20.4, Bionic libc MFC after: 11.1 Release Differential Revision: https://reviews.freebsd.org/D9004
|
#
21b73749 |
|
27-Jan-2017 |
Mateusz Guzik <mjg@FreeBSD.org> |
Introduce __read_mostly and __exclusive_cache_line macros. The intended use is to annotate frequently used globals which either rarely change (and thus can be grouped in the same cacheline) or are an atomic counter (which means it may benefit from being the only variable in the cacheline). Linker script support is provided only for amd64. Architectures without it risk having other variables put in, i.e. as if they were not annotated. This is harmless from correctness point of view. Reviewed by: bde (previous version) MFC after: 1 month
|
#
2cae1607 |
|
16-Dec-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Add __scanflike attributes to the kernel's sscanf() and vsscanf() declarations. This should help to catch future mismatches between format strings and arguments. MFC after: 1 week
|
#
f11ec798 |
|
28-Jul-2016 |
Stephen J. Kiernan <stevek@FreeBSD.org> |
Remove BSD and USL copyright and update license block in in_prot.c, as the code in this file was written by Robert N. M. Waston. Move cr_can* prototypes from sys/systm.h to sys/proc.h Reported by: rwatson Reviewed by: rwatson Approved by: sjg (mentor) Differential Revision: https://reviews.freebsd.org/D7345
|
#
4ac21b4f |
|
27-Jul-2016 |
Stephen J. Kiernan <stevek@FreeBSD.org> |
Prepare for network stack as a module - Move cr_canseeinpcb to sys/netinet/in_prot.c in order to separate the INET and INET6-specific code from the rest of the prot code (It is only used by the network stack, so it makes sense for it to live with the other network stack code.) - Move cr_canseeinpcb prototype from sys/systm.h to netinet/in_systm.h - Rename cr_seeotheruids to cr_canseeotheruids and cr_seeothergids to cr_canseeothergids, make them non-static, and add prototypes (so they can be seen/called by in_prot.c functions.) - Remove sw_csum variable from ip6_forward in ip6_forward.c, as it is an unused variable. Reviewed by: gnn, jtl Approved by: sjg (mentor) Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D2901
|
#
9837947b |
|
21-Jul-2016 |
Konstantin Belousov <kib@FreeBSD.org> |
Provide counter_warning(9) KPI which allows to issue limited number of warnings for some kernel events, mostly intended for the use of obsoleted or otherwise undersired interfaces. This is an abstracted and race-expelled code from compat pty driver. Requested and reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D7270
|
#
fdb6320d |
|
13-Jul-2016 |
Eric Badger <badger@FreeBSD.org> |
Add explicit detection of KVM hypervisor Set vm_guest to a new enum value (VM_GUEST_KVM) when kvm is detected and use vm_guest in conditionals testing for KVM. Also, fix a conditional checking if we're running in a VM which caught only the generic VM case, but not more specific VMs (KVM, VMWare, etc.). (Spotted by: vangyzen). Differential revision: https://reviews.freebsd.org/D7172 Sponsored by: Dell Inc. Approved by: kib (mentor), vangyzen (mentor) Reviewed by: alc MFC after: 4 weeks
|
#
a0d20ecb |
|
05-Jul-2016 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Compile in the kassert_panic() function with INVARIANT_SUPPORT option, not INVARIANTS. The function is required if we want to load in a module that is compiled with INVARIANTS. Reviewed by: jhb Approved by: re (gjb)
|
#
f8ce3dfa |
|
03-May-2016 |
Sepherosa Ziehau <sephe@FreeBSD.org> |
kern: Add phashinit_flags(), which allows malloc(M_NOWAIT) It will be used for the upcoming LRO hash table initialization. And probably will be useful in other cases, when M_WAITOK can't be used. Reviewed by: jhb, kib Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D6138
|
#
15be49f5 |
|
14-Apr-2016 |
Warner Losh <imp@FreeBSD.org> |
Create wrappers for uint64_t and int64_t for the tunables. While not strictly necessary, it is more convenient.
|
#
611fcff9 |
|
01-Apr-2016 |
John Baldwin <jhb@FreeBSD.org> |
Cap IOSIZE_MAX to INT_MAX for 32-bit processes. Previously, freebsd32 binaries could submit read/write requests with lengths greater than INT_MAX that a native kernel would have rejected. Reviewed by: kib Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D5788
|
#
07713dde |
|
18-Nov-2015 |
Mark Johnston <markj@FreeBSD.org> |
Add vlog(9). Reviewed by: cem, jhb MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D4183
|
#
8d90e660 |
|
08-Oct-2015 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Remove root_mount_wait(). It's not used anywhere. Reviewed by: bapt@ MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3787
|
#
2eb0015a |
|
01-Oct-2015 |
Colin Percival <cperciva@FreeBSD.org> |
Disable suspend when we're shutting down. This solves the "tell FreeBSD to shut down; close laptop lid" scenario which otherwise tended to end with a laptop overheating or the battery dying. The implementation uses a new sysctl, kern.suspend_blocked; init(8) sets this while rc.suspend runs, and the ACPI sleep code ignores requests while the sysctl is set. Discussed on: freebsd-acpi (35 emails) MFC after: 1 week
|
#
37bde769 |
|
17-Sep-2015 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Remove extra tabs.
|
#
1bc93bb7 |
|
27-May-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Currently, softupdate code detects overstepping on the workitems limits in the code which is deep in the call stack, and owns several critical system resources, like vnode locks. Attempt to wait while the per-mount softupdate thread cleans up the backlog may deadlock, because the thread might need to lock the same vnode which is owned by the waiting thread. Instead of synchronously waiting for the worker, perform the worker' tickle and pause until the backlog is cleaned, at the safe point during return from kernel to usermode. A new ast request to call softdep_ast_cleanup() is created, the SU code now only checks the size of queue and schedules ast. There is no ast delivery for the kernel threads, so they are exempted from the mechanism, except NFS daemon threads. NFS server loop explicitely checks for the request, and informs the schedule_cleanup() that it is capable of handling the requests by the process P2_AST_SU flag. This is needed because nfsd may be the sole cause of the SU workqueue overflow. But, to not cause nsfd to spawn additional threads just because we slow down existing workers, only tickle su threads, without waiting for the backlog cleanup. Reviewed by: jhb, mckusick Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
|
#
b6fb3fe0 |
|
21-May-2015 |
John-Mark Gurney <jmg@FreeBSD.org> |
remove stray ; that came in r272673...
|
#
da10a603 |
|
23-Apr-2015 |
Mark Johnston <markj@FreeBSD.org> |
Make vpanic() externally visible so that it can be called as part of the DTrace panic() action. Differential Revision: https://reviews.freebsd.org/D2349 Reviewed by: avg MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division
|
#
589b2c1c |
|
20-Mar-2015 |
John Baldwin <jhb@FreeBSD.org> |
Expand the bitcount* API to support 64-bit integers, plain ints and longs and create a "hidden" API that can be used in other system headers without adding namespace pollution. - If the POPCNT instruction is enabled at compile time, use __builtin_popcount*() to implement __bitcount*(), otherwise fall back to software implementations. - Use the existing bitcount16() and bitcount32() from <sys/systm.h> to implement the non-POPCNT __bitcount16() and __bitcount32() in <sys/types.h>. - For the non-POPCNT __bitcount64(), use a similar SWAR method on 64-bit systems. For 32-bit systems, use two __bitcount32() operations on the two halves. - Use __bitcount32() to provide a __bitcount() that operates on plain ints. - Use either __bitcount32() or __bitcount64() to provide a __bitcountl() that operates on longs. - Add public bitcount*() wrappers for __bitcount*() for use in the kernel in <sys/libkern.h>. - Use __builtinl() instead of __builtin_popcountl() in BIT_COUNT(). Discussed with: bde
|
#
3cd45331 |
|
28-Feb-2015 |
Ryan Stone <rstone@FreeBSD.org> |
Implement asprintf in libkern Differential Revision: https://reviews.freebsd.org/D1877 Reviewed by: pjd, jfv MFC After: 1 month Sponsored by: Sandvine Inc.
|
#
e7e04fe2 |
|
05-Feb-2015 |
Jung-uk Kim <jkim@FreeBSD.org> |
Remove splvm(). It is no longer in the tree.
|
#
92597e06 |
|
05-Jan-2015 |
John Baldwin <jhb@FreeBSD.org> |
On some Intel CPUs with a P-state but not C-state invariant TSC the TSC may also halt in C2 and not just C3 (it seems that in some cases the BIOS advertises its C3 state as a C2 state in _CST). Just play it safe and disable both C2 and C3 states if a user forces the use of the TSC as the timecounter on such CPUs. PR: 192316 Differential Revision: https://reviews.freebsd.org/D1441 No objection from: jkim MFC after: 1 week
|
#
2361c6d1 |
|
31-Oct-2014 |
Konstantin Belousov <kib@FreeBSD.org> |
Add type qualifier volatile to the base (userspace) address argument of fuword(9) and suword(9). This makes the functions type-compatible with volatile objects and does not require devolatile force, e.g. in kern_umtx.c. Requested by: bde Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 3 weeks
|
#
01e1933d |
|
28-Oct-2014 |
John Baldwin <jhb@FreeBSD.org> |
Rework virtual machine hypervisor detection. - Move the existing code to x86/x86/identcpu.c since it is x86-specific. - If the CPUID2_HV flag is set, assume a hypervisor is present and query the 0x40000000 leaf to determine the hypervisor vendor ID. Export the vendor ID and the highest supported hypervisor CPUID leaf via hv_vendor[] and hv_high variables, respectively. The hv_vendor[] array is also exported via the hw.hv_vendor sysctl. - Merge the VMWare detection code from tsc.c into the new probe in identcpu.c. Add a VM_GUEST_VMWARE to identify vmware and use that in the TSC code to identify VMWare. Differential Revision: https://reviews.freebsd.org/D1010 Reviewed by: delphij, jkim, neel
|
#
4f3dc900 |
|
28-Oct-2014 |
Konstantin Belousov <kib@FreeBSD.org> |
Add fueword(9) and casueword(9) functions. They are like fuword(9) and casuword(9), but do not mix value read and indication of fault. I know (or remember) enough assembly to handle x86 and powerpc. For arm, mips and sparc64, implement fueword() and casueword() as wrappers around fuword() and casuword(), which means that the functions cannot distinguish between -1 and fault. On architectures where fueword() and casueword() are native, implement fuword() and casuword() using fueword() and casuword(), to reduce assembly code duplication. Sponsored by: The FreeBSD Foundation Tested by: pho MFC after: 2 weeks (ia64 needs treating)
|
#
2be111bf |
|
16-Oct-2014 |
Davide Italiano <davide@FreeBSD.org> |
Follow up to r225617. In order to maximize the re-usability of kernel code in userland rename in-kernel getenv()/setenv() to kern_setenv()/kern_getenv(). This fixes a namespace collision with libc symbols. Submitted by: kmacy Tested by: make universe
|
#
78b59024 |
|
06-Oct-2014 |
Xin LI <delphij@FreeBSD.org> |
Add explicit_bzero(3) and its kernel counterpart. Obtained from: OpenBSD MFC after: 2 weeks
|
#
b7627840 |
|
04-Oct-2014 |
Konstantin Belousov <kib@FreeBSD.org> |
Add kernel option KSTACK_USAGE_PROF to sample the stack depth on interrupts and report the largest value seen as sysctl debug.max_kstack_used. Useful to estimate how close the kernel stack size is to overflow. In collaboration with: Larry Baird <lab@gta.com> Sponsored by: The FreeBSD Foundation (kib) MFC after: 1 week
|
#
cfc4b56b |
|
02-Apr-2014 |
Ian Lepore <ian@FreeBSD.org> |
Add support for event timers whose clock frequency can change while running.
|
#
42c8459b |
|
11-Feb-2014 |
Ian Lepore <ian@FreeBSD.org> |
Rework the EARLY_PRINTF mechanism. Instead of defining a special eprintf() routine, now a platform can provide a pointer to an early_putc() routine which is used instead of cn_putc(). Control can be handed off from early printf support to standard console support by NULLing out the pointer during standard console init. This leverages all the existing error reporting that uses printf calls, such as panic() which can now be usefully employed even in early platform init code (useful at least to those who maintain that code and build kernels with EARLY_PRINTF defined). Reviewed by: imp, eadler
|
#
26fbe13c |
|
22-Jan-2014 |
Warner Losh <imp@FreeBSD.org> |
Implement generic support for early printf. Thought I can't find the paper trail now, this patch is similar to one posted for one of the preliminary versions of a new armv6 port. I took them and made them more generic. Option not enabled by default since each board/port has to provide its own eputc, and possibly do other things as well...
|
#
903093ec |
|
12-Nov-2013 |
Sergey Kandaurov <pluknet@FreeBSD.org> |
Add VM_LAST, a special last element in enum VM_GUEST and use it in CTASSERT to ensure that vm_guest range is covered by vm_guest_sysctl_names. Suggested by: mjg
|
#
6878c9db |
|
11-Nov-2013 |
Sergey Kandaurov <pluknet@FreeBSD.org> |
Add a brief comment about VM_GUEST and vm_guest_sysctl_names relationship. Suggested by: Roger Pau Monne Reviewed by: Roger Pau Monne
|
#
bf3e483b |
|
15-Oct-2013 |
Konstantin Belousov <kib@FreeBSD.org> |
Similar to debug.iosize_max_clamp sysctl, introduce devfs_iosize_max_clamp sysctl, which allows/disables SSIZE_MAX-sized i/o requests on the devfs files. Sponsored by: The FreeBSD Foundation Reminded by: Dmitry Sivachenko <trtrmitya@gmail.com> MFC after: 1 week
|
#
352830e2 |
|
12-Oct-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Centralize the detection logic for the Hyper-V hypervisor. Submitted by: Roger Pau Monné Sponsored by: Citrix Systems R&D Reviewed by: gibbs, grehan Approved by: re (gjb) sys/sys/systm.h: * Add a new VM_GUEST type, VM_GUEST_HV (HyperV guest). sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c: sys/dev/hyperv/vmbus/hv_hv.c: sys/dev/hyperv/stordisengage/hv_ata_pci_disengage.c: * Set vm_guest to VM_GUEST_HV and use that on other HyperV related devices instead of cloning the cpuid hypervisor check. * Cleanup the vmbus_identify function.
|
#
34c916c6 |
|
07-Sep-2013 |
Navdeep Parhar <np@FreeBSD.org> |
Add a vtprintf. It is to tprintf what vprintf is to printf. Reviewed by: kib
|
#
dc872d46 |
|
30-Aug-2013 |
Konstantin Belousov <kib@FreeBSD.org> |
Move the definition of the struct unrhdr into a separate header file, to allow embedding the struct. Add init_unrhdr(9) initializer, which sets up preallocated unrhdr. Reviewed by: alc Tested by: pho, bf
|
#
d7b5c50b |
|
07-Jul-2013 |
Alfred Perlstein <alfred@FreeBSD.org> |
Make kassert_printf use __printflike. Fix associated errors/warnings while I'm here. Requested by: avg
|
#
f7d97ffd |
|
06-Apr-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Move CRITICAL_ASSERT() macro to systm.h, where the critical(9) functions are declared.
|
#
ee75e7de |
|
19-Mar-2013 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement the concept of the unmapped VMIO buffers, i.e. buffers which do not map the b_pages pages into buffer_map KVA. The use of the unmapped buffers eliminate the need to perform TLB shootdown for mapping on the buffer creation and reuse, greatly reducing the amount of IPIs for shootdown on big-SMP machines and eliminating up to 25-30% of the system time on i/o intensive workloads. The unmapped buffer should be explicitely requested by the GB_UNMAPPED flag by the consumer. For unmapped buffer, no KVA reservation is performed at all. The consumer might request unmapped buffer which does have a KVA reserve, to manually map it without recursing into buffer cache and blocking, with the GB_KVAALLOC flag. When the mapped buffer is requested and unmapped buffer already exists, the cache performs an upgrade, possibly reusing the KVA reservation. Unmapped buffer is translated into unmapped bio in g_vfs_strategy(). Unmapped bio carry a pointer to the vm_page_t array, offset and length instead of the data pointer. The provider which processes the bio should explicitely specify a readiness to accept unmapped bio, otherwise g_down geom thread performs the transient upgrade of the bio request by mapping the pages into the new bio_transient_map KVA submap. The bio_transient_map submap claims up to 10% of the buffer map, and the total buffer_map + bio_transient_map KVA usage stays the same. Still, it could be manually tuned by kern.bio_transient_maxcnt tunable, in the units of the transient mappings. Eventually, the bio_transient_map could be removed after all geom classes and drivers can accept unmapped i/o requests. Unmapped support can be turned off by the vfs.unmapped_buf_allowed tunable, disabling which makes the buffer (or cluster) creation requests to ignore GB_UNMAPPED and GB_KVAALLOC flags. Unmapped buffers are only enabled by default on the architectures where pmap_copy_page() was implemented and tested. In the rework, filesystem metadata is not the subject to maxbufspace limit anymore. Since the metadata buffers are always mapped, the buffers still have to fit into the buffer map, which provides a reasonable (but practically unreachable) upper bound on it. The non-metadata buffer allocations, both mapped and unmapped, is accounted against maxbufspace, as before. Effectively, this means that the maxbufspace is forced on mapped and unmapped buffers separately. The pre-patch bufspace limiting code did not worked, because buffer_map fragmentation does not allow the limit to be reached. By Jeff Roberson request, the getnewbuf() function was split into smaller single-purpose functions. Sponsored by: The FreeBSD Foundation Discussed with: jeff (previous version) Tested by: pho, scottl (previous version), jhb, bf MFC after: 2 weeks
|
#
15ae0c9a |
|
08-Mar-2013 |
Andre Oppermann <andre@FreeBSD.org> |
Move the callout subsystem initialization to its own SYSINIT() from being indirectly called via cpu_startup()+vm_ksubmap_init(). The boot order position remains the same at SI_SUB_CPU. Allocation of the callout array is changed to stardard kernel malloc from a slightly obscure direct kernel_map allocation. kern_timeout_callwheel_alloc() is renamed to callout_callwheel_init() to better describe its purpose. kern_timeout_callwheel_init() is removed simplifying the per-cpu initialization. Reviewed by: davide
|
#
24e48c6d |
|
03-Mar-2013 |
Davide Italiano <davide@FreeBSD.org> |
MFcalloutng: Introduce sbt variants of msleep(), msleep_spin(), pause(), tsleep() in the KPI, allowing to specify timeout in 'sbintime_t' rather than ticks. Sponsored by: Google Summer of Code 2012, iXsystems inc. Tested by: flo, marius, ian, markj, Fabian Keil
|
#
5b999a6b |
|
04-Mar-2013 |
Davide Italiano <davide@FreeBSD.org> |
- Make callout(9) tickless, relying on eventtimers(4) as backend for precise time event generation. This greatly improves granularity of callouts which are not anymore constrained to wait next tick to be scheduled. - Extend the callout KPI introducing a set of callout_reset_sbt* functions, which take a sbintime_t as timeout argument. The new KPI also offers a way for consumers to specify precision tolerance they allow, so that callout can coalesce events and reduce number of interrupts as well as potentially avoid scheduling a SWI thread. - Introduce support for dispatching callouts directly from hardware interrupt context, specifying an additional flag. This feature should be used carefully, as long as interrupt context has some limitations (e.g. no sleeping locks can be held). - Enhance mechanisms to gather informations about callwheel, introducing a new sysctl to obtain stats. This change breaks the KBI. struct callout fields has been changed, in particular 'int ticks' (4 bytes) has been replaced with 'sbintime_t' (8 bytes) and another 'sbintime_t' field was added for precision. Together with: mav Reviewed by: attilio, bde, luigi, phk Sponsored by: Google Summer of Code 2012, iXsystems inc. Tested by: flo (amd64, sparc64), marius (sparc64), ian (arm), markj (amd64), mav, Fabian Keil
|
#
0fb285b7 |
|
03-Mar-2013 |
Davide Italiano <davide@FreeBSD.org> |
Remove a couple of unused include.
|
#
acccf7d8 |
|
28-Feb-2013 |
Davide Italiano <davide@FreeBSD.org> |
MFcalloutng: When CPU becomes idle, cpu_idleclock() calculates time to the next timer event in order to reprogram hw timer. Return that time in sbintime_t to the caller and pass it to acpi_cpu_idle(), where it can be used as one more factor (quite precise) to extimate furter sleep time and choose optimal sleep state. This is a preparatory change for further callout improvements will be committed in the next days. The commmit is not targeted for MFC.
|
#
ae40be8c |
|
21-Feb-2013 |
Warner Losh <imp@FreeBSD.org> |
splsoftvm() is no longer in the tree. gc.
|
#
664b97ef |
|
21-Feb-2013 |
Warner Losh <imp@FreeBSD.org> |
Remove splsoftclock() since it is now gone.
|
#
c2e38b52 |
|
20-Feb-2013 |
Warner Losh <imp@FreeBSD.org> |
Remove the unused spl functions: spl0, splsoftcam, splsofttty, splsofttq and splstatclock. Other used spl functions to follow.
|
#
8eede5c4 |
|
02-Feb-2013 |
Andriy Gapon <avg@FreeBSD.org> |
fix some fat-fingering in r246246 Submitted by: mjg Pointyhat to: avg MFC after: 5 days X-MFC with: r246246
|
#
bfdcb3bc |
|
02-Feb-2013 |
Andriy Gapon <avg@FreeBSD.org> |
print compiler version in the kernel banner And provide kernel compiler version as a sysctl as well. This is useful while we have gcc and clang cohabitation. This could be even more useful when we have support for external toolchains. In cooperation with: mjg MFC after: 13 days
|
#
6b6bd3b7 |
|
10-Dec-2012 |
Alfred Perlstein <alfred@FreeBSD.org> |
Switch the hardwired WITNESS panics to kassert_panic. This is an ongoing effort to provide runtime debug information useful in the field that does not panic existing installations. This gives us the flexibility needed when shipping images to a potentially large audience with WITNESS enabled without worrying about formerly non-fatal LORs hurting a release. Sponsored by: iXsystems
|
#
3945a964 |
|
07-Dec-2012 |
Alfred Perlstein <alfred@FreeBSD.org> |
Allow KASSERT to log instead of panic. This is to allow debug images to be used without taking down the system when non-fatal asserts are hit. The following sysctls are added: debug.kassert.warn_only: 1 = log, 0 = panic debug.kassert.do_ktr: set to a ktr mask for logging via KTR debug.kassert.do_log: 1 = log, 0 = quiet debug.kassert.warnings: stats, number of kasserts hit debug.kassert.log_panic_at: number of kasserts before we actually panic, 0 = never debug.kassert.log_pps_limit: pps limit for log messages debug.kassert.log_mute_at: stop warning after N kasserts, 0 = never stop debug.kassert.kassert: set this sysctl to trigger a kassert Discussed with: scottl, gnn, marcel Sponsored by: iXsystems
|
#
460378bf |
|
29-Apr-2012 |
Dimitry Andric <dim@FreeBSD.org> |
Add a convenience macro for the returns_twice attribute, and apply it to the prototypes of the appropriate functions (getcontext, savectx, setjmp, sigsetjmp and vfork). MFC after: 2 weeks
|
#
bcfd016c |
|
10-Mar-2012 |
Alexander Motin <mav@FreeBSD.org> |
Idle ticks optimization: - Pass number of events to the statclock() and profclock() functions same as to hardclock() before to not call them many times in a loop. - Rename them into statclock_cnt() and profclock_cnt(). - Turn statclock() and profclock() into compatibility wrappers, still needed for arm. - Rename hardclock_anycpu() into hardclock_cnt() for unification. MFC after: 1 week
|
#
526d0bd5 |
|
20-Feb-2012 |
Konstantin Belousov <kib@FreeBSD.org> |
Fix found places where uio_resid is truncated to int. Add the sysctl debug.iosize_max_clamp, enabled by default. Setting the sysctl to zero allows to perform the SSIZE_MAX-sized i/o requests from the usermode. Discussed with: bde, das (previous versions) MFC after: 1 month
|
#
5d7380f8 |
|
28-Jan-2012 |
Attilio Rao <attilio@FreeBSD.org> |
Avoid to check the same cache line/variable from all the locking primitives by breaking stop_scheduler into a per-thread variable. Also, store the new td_stopsched very close to td_*locks members as they will be accessed mostly in the same codepaths as td_stopsched and this results in avoiding a further cache-line pollution, possibly. STOP_SCHEDULER() was pondered to use a new 'thread' argument, in order to take advantage of already cached curthread, but in the end there should not really be a performance benefit, while introducing a KPI breakage. In collabouration with: flo Reviewed by: avg MFC after: 3 months (or never) X-MFC: r228424
|
#
867cb545 |
|
13-Dec-2011 |
Ed Schouten <ed@FreeBSD.org> |
Reimplement CTASSERT() using _Static_assert().
|
#
35370593 |
|
11-Dec-2011 |
Andriy Gapon <avg@FreeBSD.org> |
panic: add a switch and infrastructure for stopping other CPUs in SMP case Historical behavior of letting other CPUs merily go on is a default for time being. The new behavior can be switched on via kern.stop_scheduler_on_panic tunable and sysctl. Stopping of the CPUs has (at least) the following benefits: - more of the system state at panic time is preserved intact - threads and interrupts do not interfere with dumping of the system state Only one thread runs uninterrupted after panic if stop_scheduler_on_panic is set. That thread might call code that is also used in normal context and that code might use locks to prevent concurrent execution of certain parts. Those locks might be held by the stopped threads and would never be released. To work around this issue, it was decided that instead of explicit checks for panic context, we would rather put those checks inside the locking primitives. This change has substantial portions written and re-written by attilio and kib at various times. Other changes are heavily based on the ideas and patches submitted by jhb and mdf. bde has provided many insights into the details and history of the current code. The new behavior may cause problems for systems that use a USB keyboard for interfacing with system console. This is because of some unusual locking patterns in the ukbd code which have to be used because on one hand ukbd is below syscons, but on the other hand it has to interface with other usb code that uses regular mutexes/Giant for its concurrency protection. Dumping to USB-connected disks may also be affected. PR: amd64/139614 (at least) In cooperation with: attilio, jhb, kib, mdf Discussed with: arch@, bde Tested by: Eugene Grosbein <eugen@grosbein.net>, gnn, Steven Hartland <killing@multiplay.co.uk>, glebius, Andrew Boyer <aboyer@averesystems.com> (various versions of the patch) MFC after: 3 months (or never)
|
#
7a0b13ed |
|
25-Jul-2011 |
Andriy Gapon <avg@FreeBSD.org> |
remove RESTARTABLE_PANICS option This is done per request/suggestion from John Baldwin who introduced the option. Trying to resume normal system operation after a panic is very unpredictable and dangerous. It will become even more dangerous when we allow a thread in panic(9) to penetrate all lock contexts. I understand that the only purpose of this option was for testing scenarios potentially resulting in panic. Suggested by: jhb Reviewed by: attilio, jhb X-MFC-After: never Approved by: re (kib)
|
#
2801687d |
|
09-Jul-2011 |
Konstantin Belousov <kib@FreeBSD.org> |
Add a facility to disable processing page faults. When activated, uiomove generates EFAULT if any accessed address is not mapped, as opposed to handling the fault. Sponsored by: The FreeBSD Foundation Reviewed by: alc (previous version)
|
#
b03c6795 |
|
09-Jul-2011 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement bitcount16. Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
a49399a9 |
|
22-Jun-2011 |
Jung-uk Kim <jkim@FreeBSD.org> |
Set negative quality to TSC timecounter when C3 state is enabled for Intel processors unless the invariant TSC bit of CPUID is set. Intel processors may stop incrementing TSC when DPSLP# pin is asserted, according to Intel processor manuals, i. e., TSC timecounter is useless if the processor can enter deep sleep state (C3/C4). This problem was accidentally uncovered by r222869, which increased timecounter quality of P-state invariant TSC, e.g., for Core2 Duo T5870 (Family 6, Model f) and Atom N270 (Family 6, Model 1c). Reported by: Fabian Keil (freebsd-listen at fabiankeil dot de) Ian FREISLICH (ianf at clue dot co dot za) Tested by: Fabian Keil (freebsd-listen at fabiankeil dot de) - Core2 Duo T5870 (C3 state available/enabled) jkim - Xeon X5150 (C3 state unavailable)
|
#
cfb00e5a |
|
13-May-2011 |
Matthew D Fleming <mdf@FreeBSD.org> |
Move the ZERO_REGION_SIZE to a machine-dependent file, as on many architectures (i386, for example) the virtual memory space may be constrained enough that 2MB is a large chunk. Use 64K for arches other than amd64 and ia64, with special handling for sparc64 due to differing hardware. Also commit the comment changes to kmem_init_zero_region() that I missed due to not saving the file. (Darn the unfamiliar development environment). Arch maintainers, please feel free to adjust ZERO_REGION_SIZE as you see fit. Requested by: alc MFC after: 1 week MFC with: r221853
|
#
89cb2a19 |
|
13-May-2011 |
Matthew D Fleming <mdf@FreeBSD.org> |
Usa a globally visible region of zeros for both /dev/zero and the md device. There are likely other kernel uses of "blob of zeros" than can be converted. Reviewed by: alc MFC after: 1 week
|
#
e33d2007 |
|
10-May-2011 |
Andriy Gapon <avg@FreeBSD.org> |
bitcount32: replace lengthy comment with a reference to SWAR MFC after: 5 days
|
#
a4cb21be |
|
24-Apr-2011 |
Konstantin Belousov <kib@FreeBSD.org> |
Fix typo. MFC after: 3 days
|
#
e9a3f785 |
|
23-Mar-2011 |
Alan Cox <alc@FreeBSD.org> |
Modestly increase the maximum allowed size of the kmem map on i386. Also, express this new maximum as a fraction of the kernel's address space size rather than a constant so that increasing KVA_PAGES will automatically increase this maximum. As a side-effect of this change, kern.maxvnodes will automatically increase by a proportional amount. While I'm here ensure that this change doesn't result in an unintended increase in maxpipekva on i386. Calculate maxpipekva based upon the size of the kernel address space and the amount of physical memory instead of the size of the kmem map. The memory backing pipes is not allocated from the kmem map. It is allocated from its own submap of the kernel map. In short, it has no real connection to the kmem map. (In fact, the commit messages for the maxpipekva auto-sizing talk about using the kernel map size, cf. r117325 and r117391, even though the implementation actually used the kmem map size.) Although the calculation is now done differently, the resulting value for maxpipekva should remain almost the same on i386. However, on amd64, the value will be reduced by 2/3. This is intentional. The recent change to VM_KMEM_SIZE_SCALE on amd64 for the benefit of ZFS also had the unnecessary side-effect of increasing maxpipekva. This change is effectively restoring maxpipekva on amd64 to its prior value. Eliminate init_param3() since it is no longer used.
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
76e18b25 |
|
17-Oct-2010 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Rename boot() to kern_reboot() and make it visible outside of kern_shutdown.c. This makes it easier for emulators and other parts of the kernel to initiate a reboot.
|
#
a157e425 |
|
13-Sep-2010 |
Alexander Motin <mav@FreeBSD.org> |
Refactor timer management code with priority to one-shot operation mode. The main goal of this is to generate timer interrupts only when there is some work to do. When CPU is busy interrupts are generating at full rate of hz + stathz to fullfill scheduler and timekeeping requirements. But when CPU is idle, only minimum set of interrupts (down to 8 interrupts per second per CPU now), needed to handle scheduled callouts is executed. This allows significantly increase idle CPU sleep time, increasing effect of static power-saving technologies. Also it should reduce host CPU load on virtualized systems, when guest system is idle. There is set of tunables, also available as writable sysctls, allowing to control wanted event timer subsystem behavior: kern.eventtimer.timer - allows to choose event timer hardware to use. On x86 there is up to 4 different kinds of timers. Depending on whether chosen timer is per-CPU, behavior of other options slightly differs. kern.eventtimer.periodic - allows to choose periodic and one-shot operation mode. In periodic mode, current timer hardware taken as the only source of time for time events. This mode is quite alike to previous kernel behavior. One-shot mode instead uses currently selected time counter hardware to schedule all needed events one by one and program timer to generate interrupt exactly in specified time. Default value depends of chosen timer capabilities, but one-shot mode is preferred, until other is forced by user or hardware. kern.eventtimer.singlemul - in periodic mode specifies how much times higher timer frequency should be, to not strictly alias hardclock() and statclock() events. Default values are 2 and 4, but could be reduced to 1 if extra interrupts are unwanted. kern.eventtimer.idletick - makes each CPU to receive every timer interrupt independently of whether they busy or not. By default this options is disabled. If chosen timer is per-CPU and runs in periodic mode, this option has no effect - all interrupts are generating. As soon as this patch modifies cpu_idle() on some platforms, I have also refactored one on x86. Now it makes use of MONITOR/MWAIT instrunctions (if supported) under high sleep/wakeup rate, as fast alternative to other methods. It allows SMP scheduler to wake up sleeping CPUs much faster without using IPI, significantly increasing performance on some highly task-switching loads. Tested by: many (on i386, amd64, sparc64 and powerc) H/W donated by: Gheorghe Ardelean Sponsored by: iXsystems, Inc.
|
#
fcc06be1 |
|
15-Jul-2010 |
Alexander Motin <mav@FreeBSD.org> |
Move functions declaration to MI code, following implementation.
|
#
13c02cbb |
|
05-Jul-2010 |
Jaakko Heinonen <jh@FreeBSD.org> |
Extend the kernel unit number allocator for allocating specific unit numbers. This change adds a new function alloc_unr_specific() which returns the requested unit number if it is free. If the number is already allocated or out of the range, -1 is returned. Update alloc_unr(9) manual page accordingly and add a MLINK for alloc_unr_specific(9). Discussed on: freebsd-hackers
|
#
875b8844 |
|
20-Jun-2010 |
Alexander Motin <mav@FreeBSD.org> |
Implement new event timers infrastructure. It provides unified APIs for writing event timer drivers, for choosing best possible drivers by machine independent code and for operating them to supply kernel with hardclock(), statclock() and profclock() events in unified fashion on various hardware. Infrastructure provides support for both per-CPU (independent for every CPU core) and global timers in periodic and one-shot modes. MI management code at this moment uses only periodic mode, but one-shot mode use planned for later, as part of tickless kernel project. For this moment infrastructure used on i386 and amd64 architectures. Other archs are welcome to follow, while their current operation should not be affected. This patch updates existing drivers (i8254, RTC and LAPIC) for the new order, and adds event timers support into the HPET driver. These drivers have different capabilities: LAPIC - per-CPU timer, supports periodic and one-shot operation, may freeze in C3 state, calibrated on first use, so may be not exactly precise. HPET - depending on hardware can work as per-CPU or global, supports periodic and one-shot operation, usually provides several event timers. i8254 - global, limited to periodic mode, because same hardware used also as time counter. RTC - global, supports only periodic mode, set of frequencies in Hz limited by powers of 2. Depending on hardware capabilities, drivers preferred in following orders, either LAPIC, HPETs, i8254, RTC or HPETs, LAPIC, i8254, RTC. User may explicitly specify wanted timers via loader tunables or sysctls: kern.eventtimer.timer1 and kern.eventtimer.timer2. If requested driver is unavailable or unoperational, system will try to replace it. If no more timers available or "NONE" specified for second, system will operate using only one timer, multiplying it's frequency by few times and uing respective dividers to honor hz, stathz and profhz values, set during initial setup.
|
#
dbd55f3f |
|
24-May-2010 |
Alexander Motin <mav@FreeBSD.org> |
- Implement MI helper functions, dividing one or two timer interrupts with arbitrary frequencies into hardclock(), statclock() and profclock() calls. Same code with minor variations duplicated several times over the tree for different timer drivers and architectures. - Switch all x86 archs to new functions, simplifying the code and removing extra logic from timer drivers. Other archs are also welcome.
|
#
90cb9e50 |
|
06-Mar-2010 |
Ivan Voras <ivoras@FreeBSD.org> |
MFC r204611, r204633: Comment and better sysctl documentation string for VM guest detection variable and sysctl.
|
#
90c1a580 |
|
03-Mar-2010 |
Ivan Voras <ivoras@FreeBSD.org> |
Make the comment follow style(9) format. Spotted by: jhb
|
#
07ce8d9b |
|
02-Mar-2010 |
Ivan Voras <ivoras@FreeBSD.org> |
Document the VM detection type and sysctl a bit better.
|
#
c288186f |
|
02-Mar-2010 |
Alan Cox <alc@FreeBSD.org> |
MFC r204420 When running as a guest operating system, the FreeBSD kernel must assume that the virtual machine monitor has enabled machine check exceptions. Unfortunately, on AMD Family 10h processors the machine check hardware has a bug (Erratum 383) that can result in a false machine check exception when a superpage promotion occurs. Thus, I am disabling superpage promotion when the FreeBSD kernel is running as a guest operating system on an AMD Family 10h processor.
|
#
0b993ee5 |
|
27-Feb-2010 |
Alan Cox <alc@FreeBSD.org> |
When running as a guest operating system, the FreeBSD kernel must assume that the virtual machine monitor has enabled machine check exceptions. Unfortunately, on AMD Family 10h processors the machine check hardware has a bug (Erratum 383) that can result in a false machine check exception when a superpage promotion occurs. Thus, I am disabling superpage promotion when the FreeBSD kernel is running as a guest operating system on an AMD Family 10h processor. Reviewed by: jhb, kib MFC after: 3 days
|
#
3c48c089 |
|
24-Feb-2010 |
Brooks Davis <brooks@FreeBSD.org> |
MFC r202143,202163,202341,202342,204278 Replace the static NGROUPS=NGROUPS_MAX+1=1024 with a dynamic kern.ngroups+1. kern.ngroups can range from NGROUPS_MAX=1023 to somewhere in the neighborhood of INT_MAX/4 one a system with sufficent RAM and memory bandwidth. Given that the Windows group limit is 1024, this range should be sufficient for most applications r202342: Only allocate the space we need before calling kern_getgroups instead of allocating what ever the user asks for up to "ngroups_max + 1". On systems with large values of kern.ngroups this will be more efficient. The now redundant check that the array is large enough in kern_getgroups() is deliberate to allow this change to be merged to stable/8 without breaking potential third party consumers of the API.
|
#
507377a6 |
|
20-Feb-2010 |
Alan Cox <alc@FreeBSD.org> |
Eliminate an unused declaration.
|
#
412f9500 |
|
12-Jan-2010 |
Brooks Davis <brooks@FreeBSD.org> |
Replace the static NGROUPS=NGROUPS_MAX+1=1024 with a dynamic kern.ngroups+1. kern.ngroups can range from NGROUPS_MAX=1023 to INT_MAX-1. Given that the Windows group limit is 1024, this range should be sufficient for most applications. MFC after: 1 month
|
#
eae8e367 |
|
10-Jan-2010 |
Warner Losh <imp@FreeBSD.org> |
Merge change r198561 from projects/mips to head: r198561 | thompsa | 2009-10-28 15:25:22 -0600 (Wed, 28 Oct 2009) | 4 lines Allow a scratch buffer to be set in order to be able to use setenv() while booting, before dynamic kenv is running. A few platforms implement their own scratch+sprintf handling to save data from the boot environment.
|
#
ebc91405 |
|
31-Oct-2009 |
Alan Cox <alc@FreeBSD.org> |
MFC r197316 Add a new sysctl for reporting all of the supported page sizes.
|
#
ed7d70c2 |
|
28-Oct-2009 |
Andrew Thompson <thompsa@FreeBSD.org> |
Allow a scratch buffer to be set in order to be able to use setenv() while booting, before dynamic kenv is running. A few platforms implement their own scratch+sprintf handling to save data from the boot environment.
|
#
fe105d45 |
|
18-Sep-2009 |
Alan Cox <alc@FreeBSD.org> |
Add a new sysctl for reporting all of the supported page sizes. Reviewed by: jhb MFC after: 3 weeks
|
#
7e2d0af9 |
|
17-Aug-2009 |
Attilio Rao <attilio@FreeBSD.org> |
MFC r196334: * Change the scope of the ASSERT_ATOMIC_LOAD() from a generic check to a pointer-fetching specific operation check. Consequently, rename the operation ASSERT_ATOMIC_LOAD_PTR(). * Fix the implementation of ASSERT_ATOMIC_LOAD_PTR() by checking directly alignment on the word boundry, for all the given specific architectures. That's a bit too strict for some common case, but it assures safety. * Add a comment explaining the scope of the macro * Add a new stub in the lockmgr specific implementation Tested by: marcel (initial version), marius Reviewed by: rwatson, jhb (comment specific review) Approved by: re (kib)
|
#
353998ac |
|
17-Aug-2009 |
Attilio Rao <attilio@FreeBSD.org> |
* Change the scope of the ASSERT_ATOMIC_LOAD() from a generic check to a pointer-fetching specific operation check. Consequently, rename the operation ASSERT_ATOMIC_LOAD_PTR(). * Fix the implementation of ASSERT_ATOMIC_LOAD_PTR() by checking directly alignment on the word boundry, for all the given specific architectures. That's a bit too strict for some common case, but it assures safety. * Add a comment explaining the scope of the macro * Add a new stub in the lockmgr specific implementation Tested by: marcel (initial version), marius Reviewed by: rwatson, jhb (comment specific review) Approved by: re (kib)
|
#
21845eba |
|
14-Aug-2009 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
MFC r196226: Add a new macro to test that a variable could be loaded atomically. Check that the given variable is at most uintptr_t in size and that it is aligned. Note: ASSERT_ATOMIC_LOAD() uses ALIGN() to check for adequate alignment -- however, the function of ALIGN() is to guarantee alignment, and therefore may lead to stronger alignment enforcement than necessary for types that are smaller than sizeof(uintptr_t). Add checks to mtx, rw and sx locks init functions to detect possible breakage. This was used during debugging of the problem fixed with r196118 where a pointer was on an un-aligned address in the dpcpu area. In collaboration with: rwatson Reviewed by: rwatson Approved by: re (kib)
|
#
8d518523 |
|
14-Aug-2009 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Add a new macro to test that a variable could be loaded atomically. Check that the given variable is at most uintptr_t in size and that it is aligned. Note: ASSERT_ATOMIC_LOAD() uses ALIGN() to check for adequate alignment -- however, the function of ALIGN() is to guarantee alignment, and therefore may lead to stronger alignment enforcement than necessary for types that are smaller than sizeof(uintptr_t). Add checks to mtx, rw and sx locks init functions to detect possible breakage. This was used during debugging of the problem fixed with r196118 where a pointer was on an un-aligned address in the dpcpu area. In collaboration with: rwatson Reviewed by: rwatson Approved by: re (kib)
|
#
0304c731 |
|
27-May-2009 |
Jamie Gritton <jamie@FreeBSD.org> |
Add hierarchical jails. A jail may further virtualize its environment by creating a child jail, which is visible to that jail and to any parent jails. Child jails may be restricted more than their parents, but never less. Jail names reflect this hierarchy, being MIB-style dot-separated strings. Every thread now points to a jail, the default being prison0, which contains information about the physical system. Prison0's root directory is the same as rootvnode; its hostname is the same as the global hostname, and its securelevel replaces the global securelevel. Note that the variable "securelevel" has actually gone away, which should not cause any problems for code that properly uses securelevel_gt() and securelevel_ge(). Some jail-related permissions that were kept in global variables and set via sysctls are now per-jail settings. The sysctls still exist for backward compatibility, used only by the now-deprecated jail(2) system call. Approved by: bz (mentor)
|
#
dbb95048 |
|
18-May-2009 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Add cpu_flush_dcache() for use after non-DMA based I/O so that a possible future I-cache coherency operation can succeed. On ARM for example the L1 cache can be (is) virtually mapped, which means that any I/O that uses temporary mappings will not see the I-cache made coherent. On ia64 a similar behaviour has been observed. By flushing the D-cache, execution of binaries backed by md(4) and/or NFS work reliably. For Book-E (powerpc), execution over NFS exhibits SIGILL once in a while as well, though cpu_flush_dcache() hasn't been implemented yet. Doing an explicit D-cache flush as part of the non-DMA based I/O read operation eliminates the need to do it as part of the I-cache coherency operation itself and as such avoids pessimizing the DMA-based I/O read operations for which D-cache are already flushed/invalidated. It also allows future optimizations whereby the bcopy() followed by the D-cache flush can be integrated in a single operation, which could be implemented using on-chips DMA engines, by-passing the D-cache altogether.
|
#
853a10a5 |
|
09-Apr-2009 |
Andrew Thompson <thompsa@FreeBSD.org> |
Revert r190676,190677 The geom and CAM changes for root_hold are the wrong solution for USB design quirks. Requested by: scottl
|
#
626fc9fe |
|
03-Apr-2009 |
Andrew Thompson <thompsa@FreeBSD.org> |
Add a how argument to root_mount_hold() so it can be passed NOWAIT and be called in situations where sleeping isnt allowed.
|
#
125dcf8c |
|
06-Mar-2009 |
Konstantin Belousov <kib@FreeBSD.org> |
Extract the no_poll() and vop_nopoll() code into the common routine poll_no_poll(). Return a poll_no_poll() result from devfs_poll_f() when filedescriptor does not reference the live cdev, instead of ENXIO. Noted and tested by: hps MFC after: 1 week
|
#
802cb57e |
|
28-Feb-2009 |
Ed Schouten <ed@FreeBSD.org> |
Add memmove() to the kernel, making the kernel compile with Clang. When copying big structures, LLVM generates calls to memmove(), because it may not be able to figure out whether structures overlap. This caused linker errors to occur. memmove() is now implemented using bcopy(). Ideally it would be the other way around, but that can be solved in the future. On ARM we don't do add anything, because it already has memmove(). Discussed on: arch@ Reviewed by: rdivacky
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
f08ef6c5 |
|
17-Oct-2008 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Add cr_canseeinpcb() doing checks using the cached socket credentials from inp_cred which is also available after the socket is gone. Switch cr_canseesocket consumers to cr_canseeinpcb. This removes an extra acquisition of the socket lock. Reviewed by: rwatson MFC after: 3 months (set timer; decide then)
|
#
c6ec8c53 |
|
27-Sep-2008 |
Ed Schouten <ed@FreeBSD.org> |
Move uminor() and umajor() to the same place as userspace minor() and major(). The uminor() and umajor() functions have the same use in kernel space as the minor() and major() functions in userspace. If we ever get rid of the minor() function in kernel space, we could decide to just expose minor() and major() to kernel space, making uminor() and umajor() redundant. There are two reasons why we want to have uminor() and umajor() in <sys/types.h>: - Having them close together prevents them from diverting. Even though it's unlikely the definitions will change, it's a good habit to have them at the same place. - They don't really belong in kern_conf.c. kern_conf.c has been liberated from dealing with device major and minor number handling. The device_ids(9) manpage now lists the wrong #include's, because it should only list <sys/types.h> now. I'm leaving it as it is now, because I wonder if we should document them anyway. We're probably better off documenting minor(3) and major(3).
|
#
bf9c6c31 |
|
10-Sep-2008 |
John Baldwin <jhb@FreeBSD.org> |
Various whitespace fixes.
|
#
0f03ce1b |
|
12-Jun-2008 |
Ed Schouten <ed@FreeBSD.org> |
Turn dev2unit(), minor(), unit2minor() and minor2unit() into macro's. Now that we got rid of the minor-to-unit conversion and the constraints on device minor numbers, we can convert the functions that operate on minor and unit numbers to simple macro's. The unit2minor() and minor2unit() macro's are now no-ops. The ZFS code als defined a macro named `minor'. Change the ZFS code to use umajor() and uminor() here, as it is the correct approach to do this. Also add $FreeBSD$ to keep SVN happy. Approved by: philip (mentor), pjd
|
#
8a2dd5b9 |
|
18-May-2008 |
John Birrell <jb@FreeBSD.org> |
Remove some DTrace hook definitions that are now in dtrace_bsd.h which contains all the hook definitions rather than splattering them all over the header files. The definitions are only valid when the KDTRACE_HOOKS kernel option is defined, so other kernel sources have no need to see them.
|
#
e4659858 |
|
26-Mar-2008 |
Poul-Henning Kamp <phk@FreeBSD.org> |
The "free-lance" timer in the i8254 is only used for the speaker these days, so de-generalize the acquire_timer/release_timer api to just deal with speakers. The new (optional) MD functions are: timer_spkr_acquire() timer_spkr_release() and timer_spkr_setfreq() the last of which configures the timer to generate a tone of a given frequency, in Hz instead of 1/1193182th of seconds. Drop entirely timer2 on pc98, it is not used anywhere at all. Move sysbeep() to kern/tty_cons.c and use the timer_spkr*() if they exist, and do nothing otherwise. Remove prototypes and empty acquire-/release-timer() and sysbeep() functions from the non-beeping archs. This eliminate the need for the speaker driver to know about i8254frequency at all. In theory this makes the speaker driver MI, contingent on the timer_spkr_*() functions existing but the driver does not know this yet and still attaches to the ISA bus. Syscons is more tricky, in one function, sc_tone(), it knows the hz and things are just fine. In the other function, sc_bell() it seems to get the period from the KDMKTONE ioctl in terms if 1/1193182th second, so we hardcode the 1193182 and leave it at that. It's probably not important. Change a few other sysbeep() uses which obviously knew that the argument was in terms of i8254 frequency, and leave alone those that look like people thought sysbeep() took frequency in hertz. This eliminates the knowledge of i8254_freq from all but the actual clock.c code and the prof_machdep.c on amd64 and i386, where I think it would be smart to ask for help from the timecounters anyway [TBD].
|
#
6617724c |
|
12-Mar-2008 |
Jeff Roberson <jeff@FreeBSD.org> |
Remove kernel support for M:N threading. While the KSE project was quite successful in bringing threading to FreeBSD, the M:N approach taken by the kse library was never developed to its full potential. Backwards compatibility will be provided via libmap.conf for dynamically linked binaries and static binaries will be broken.
|
#
ace8398d |
|
15-Dec-2007 |
Jeff Roberson <jeff@FreeBSD.org> |
Refactor select to reduce contention and hide internal implementation details from consumers. - Track individual selecters on a per-descriptor basis such that there are no longer collisions and after sleeping for events only those descriptors which triggered events must be rescaned. - Protect the selinfo (per descriptor) structure with a mtx pool mutex. mtx pool mutexes were chosen to preserve api compatibility with existing code which does nothing but bzero() to setup selinfo structures. - Use a per-thread wait channel rather than a global wait channel. - Hide select implementation details in a seltd structure which is opaque to the rest of the kernel. - Provide a 'selsocket' interface for those kernel consumers who wish to select on a socket when they have no fd so they no longer have to be aware of select implementation details. Tested by: kris Reviewed on: arch
|
#
f231de47 |
|
03-Dec-2007 |
Konstantin Belousov <kib@FreeBSD.org> |
Implement fetching of the __FreeBSD_version from the ELF ABI-tag note. The value is read into the p_osrel member of the struct proc. p_osrel is set to 0 for the binaries without the note. MFC after: 3 days
|
#
d302c56d |
|
13-Oct-2007 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
I don't know what I was smoking when I wrote these three years ago; the return value is an error code, hence always an int. While I'm here, add getenv_uint() for completeness.
|
#
09828ba9 |
|
04-Jul-2007 |
Konstantin Belousov <kib@FreeBSD.org> |
Since cdev mutex is after system map mutex in global lock order, free() shall not be called while holding cdev mutex. devfs_inos unrhdr has cdev as mutex, thus creating this LOR situation. Postpone calling free() in kern/subr_unit.c:alloc_unr() and nested functions until the unrhdr mutex is dropped. Save the freed items on the ppfree list instead, and provide the clean_unrhdrl() and clean_unrhdr() functions to clean the list. Call clean_unrhdrl() after devfs_create() calls immediately before dropping cdev mutex. devfs_create() is the only user of the alloc_unrl() in the tree. Reviewed by: phk Tested by: Peter Holm LOR: 80 Approved by: re (kensmith)
|
#
bc6eca24 |
|
02-Jul-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Continue kernel privilege cleanup for 7.0: unstaticize suser_enabled and stop declaring it in systm.h -- it's used only in kern_priv.c and is not required elsewhere. Approved by: re (kensmith)
|
#
32f9753c |
|
11-Jun-2007 |
Robert Watson <rwatson@FreeBSD.org> |
Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in some cases, move to priv_check() if it was an operation on a thread and no other flags were present. Eliminate caller-side jail exception checking (also now-unused); jail privilege exception code now goes solely in kern_jail.c. We can't yet eliminate suser() due to some cases in the KAME code where a privilege check is performed and then used in many different deferred paths. Do, however, move those prototypes to priv.h. Reviewed by: csjp Obtained from: TrustedBSD Project
|
#
86a49dea |
|
09-Jun-2007 |
Attilio Rao <attilio@FreeBSD.org> |
Since locking in kern/subr_prof.c is changed a bit, we need nomore of time_lock spinlock exported. Approved by: jeff (mentor)
|
#
8b98fec9 |
|
20-May-2007 |
Jeff Roberson <jeff@FreeBSD.org> |
- Move clock synchronization into a seperate clock lock so the global scheduler lock is not involved. sched_lock still protects the sched_clock call. Another patch will remedy this. Contributed by: Attilio Rao <attilio@FreeBSD.org> Tested by: kris, jeff
|
#
2eb68d49 |
|
08-Apr-2007 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Add root_mounted() function that returns true if the root file system is already mounted.
|
#
afd894bb |
|
03-Apr-2007 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Add root_mount_wait() function which can be used to wait until the root file system is mounted. This is useful for kernel modules loaded from /boot/loader.conf, that have to access file system.
|
#
aa89d8cd |
|
21-Mar-2007 |
John Baldwin <jhb@FreeBSD.org> |
Rename the 'mtx_object', 'rw_object', and 'sx_object' members of mutexes, rwlocks, and sx locks to 'lock_object'.
|
#
e7573e7a |
|
09-Mar-2007 |
John Baldwin <jhb@FreeBSD.org> |
Allow threads to atomically release rw and sx locks while waiting for an event. Locking primitives that support this (mtx, rw, and sx) now each include their own foo_sleep() routine. - Rename msleep() to _sleep() and change it's 'struct mtx' object to a 'struct lock_object' pointer. _sleep() uses the recently added lc_unlock() and lc_lock() function pointers for the lock class of the specified lock to release the lock while the thread is suspended. - Add wrappers around _sleep() for mutexes (mtx_sleep()), rw locks (rw_sleep()), and sx locks (sx_sleep()). msleep() still exists and is now identical to mtx_sleep(), but it is deprecated. - Rename SLEEPQ_MSLEEP to SLEEPQ_SLEEP. - Rewrite much of sleep.9 to not be msleep(9) centric. - Flesh out the 'RETURN VALUES' section in sleep.9 and add an 'ERRORS' section. - Add __nonnull(1) to _sleep() and msleep_spin() so that the compiler will warn if you try to pass a NULL wait channel. The functions already have a KASSERT to that effect.
|
#
f59aa467 |
|
28-Feb-2007 |
Thomas Quinot <thomas@FreeBSD.org> |
Minor reformatting.
|
#
37e80fca |
|
23-Feb-2007 |
John Baldwin <jhb@FreeBSD.org> |
Add a new kernel sleep function pause(9). pause(9) is for places that want an equivalent of DELAY(9) that sleeps instead of spins. It accepts a wmesg and a timeout and is not interrupted by signals. It uses a private wait channel that should never be woken up by wakeup(9) or wakeup_one(9). Glanced at by: phk
|
#
9c518c23 |
|
13-Feb-2007 |
Colin Percival <cperciva@FreeBSD.org> |
Optimize bitcount32 by replacing 6 logical operations with 2. The key observation here is that it doesn't matter what garbage accumulates in bits which we're going to end up masking away anyway, as long as the garbage doesn't overflow into bits which we care about. This improved version may not be the fastest possible on all systems, but it's certainly going to be better than what was here before.
|
#
b939bb36 |
|
15-Jan-2007 |
Randall Stewart <rrs@FreeBSD.org> |
Reviewed by: rwatson Approved by: gnn Add a new function hashinit_flags() which allows NOT-waiting for memory (or waiting). The old hashinit() function now calls hashinit_flags(..., HASH_WAITOK);
|
#
a8248daa |
|
25-Dec-2006 |
Kip Macy <kmacy@FreeBSD.org> |
turn non-INVARIANT KASSERT into an empty but real C statement so that syntax errors will still be caught even if INVARIANTS aren't enabled in the config file
|
#
800c9408 |
|
06-Nov-2006 |
Robert Watson <rwatson@FreeBSD.org> |
Add a new priv(9) kernel interface for checking the availability of privilege for threads and credentials. Unlike the existing suser(9) interface, priv(9) exposes a named privilege identifier to the privilege checking code, allowing more complex policies regarding the granting of privilege to be expressed. Two interfaces are provided, replacing the existing suser(9) interface: suser(td) -> priv_check(td, priv) suser_cred(cred, flags) -> priv_check_cred(cred, priv, flags) A comprehensive list of currently available kernel privileges may be found in priv.h. New privileges are easily added as required, but the comments on adding privileges found in priv.h and priv(9) should be read before doing so. The new privilege interface exposed sufficient information to the privilege checking routine that it will now be possible for jail to determine whether a particular privilege is granted in the check routine, rather than relying on hints from the calling context via the SUSER_ALLOWJAIL flag. For now, the flag is maintained, but a new jail check function, prison_priv_check(), is exposed from kern_jail.c and used by the privilege check routine to determine if the privilege is permitted in jail. As a result, a centralized list of privileges permitted in jail is now present in kern_jail.c. The MAC Framework is now also able to instrument privilege checks, both to deny privileges otherwise granted (mac_priv_check()), and to grant privileges otherwise denied (mac_priv_grant()), permitting MAC Policy modules to implement privilege models, as well as control a much broader range of system behavior in order to constrain processes running with root privilege. The suser() and suser_cred() functions remain implemented, now in terms of priv_check() and the PRIV_ROOT privilege, for use during the transition and possibly continuing use by third party kernel modules that have not been updated. The PRIV_DRIVER privilege exists to allow device drivers to check privilege without adopting a more specific privilege identifier. This change does not modify the actual security policy, rather, it modifies the interface for privilege checks so changes to the security policy become more feasible. Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
|
#
5f641fc0 |
|
16-Oct-2006 |
David Xu <davidxu@FreeBSD.org> |
o Add keyword volatile for user mutex owner field. o Fix type consistent problem by using type long for old umtx and wait channel. o Rename casuptr to casuword.
|
#
f645b0b5 |
|
01-Oct-2006 |
Poul-Henning Kamp <phk@FreeBSD.org> |
First part of a little cleanup in the calendar/timezone/RTC handling. Move relevant variables to <sys/clock.h> and fix #includes as necessary. Use libkern's much more time- & spamce-efficient BCD routines.
|
#
66e1c26d |
|
27-Aug-2006 |
David Xu <davidxu@FreeBSD.org> |
Implement casuword32, compare and set user integer, thank Marcel Moolenarr who wrote the IA64 version of casuword32.
|
#
30436fb4 |
|
04-Aug-2006 |
John Birrell <jb@FreeBSD.org> |
Add a type definition for the cyclic timer callback function. The cyclic timer is a high-resolution timer allows timeouts at nanosecond intervals where hardware support is available. Typically on i386 there is no HPET (high performance event timer) like the one Intel started specifying some time in 2004, so the best that tye cyclic timer subsystem can do is run at Hz. The cyclic timer code itself is ported from OpenSolaris and is covered by the CDDL, so it is only loaded as a module. This function type definition is used in machine-dependent code to provide a hook for the module to register it's callback function.
|
#
e3546a75 |
|
09-Jul-2006 |
Scott Long <scottl@FreeBSD.org> |
Use a sleep mutex instead of an sx lock for the kernel environment. This allows greater flexibility for drivers that want to query the environment. Reviewed by: jhb, mux
|
#
e8444a7e |
|
11-Feb-2006 |
Poul-Henning Kamp <phk@FreeBSD.org> |
CPU time accounting speedup (step 2) Keep accounting time (in per-cpu) cputicks and the statistics counts in the thread and summarize into struct proc when at context switch. Don't reach across CPUs in calcru(). Add code to calibrate the top speed of cpu_tickrate() for variable cpu_tick hardware (like TSC on power managed machines). Don't enforce monotonicity (at least for now) in calcru. While the calibrated cpu_tickrate ramps up it may not be true. Use 27MHz counter on i386/Geode. Use TSC on amd64 & i386 if present. Use tick counter on sparc64
|
#
5b1a8eb3 |
|
07-Feb-2006 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Modify the way we account for CPU time spent (step 1) Keep track of time spent by the cpu in various contexts in units of "cputicks" and scale to real-world microsec^H^H^H^H^H^H^H^Hclock_t only when somebody wants to inspect the numbers. For now "cputicks" are still derived from the current timecounter and therefore things should by definition remain sensible also on SMP machines. (The main reason for this first milestone commit is to verify that hypothesis.) On slower machines, the avoided multiplications to normalize timestams at every context switch, comes out as a 5-7% better score on the unixbench/context1 microbenchmark. On more modern hardware no change in performance is seen.
|
#
36a52c3c |
|
06-Feb-2006 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add the global 'rebooting' variable that is used to detect when boot() has been called. Sponsored by: Isilon Systems, Inc. MFC After: 1 week
|
#
0cb7e6ae |
|
29-Dec-2005 |
John Baldwin <jhb@FreeBSD.org> |
Add a new function msleep_spin() which is a slightly stripped down version of msleep(). msleep_spin() doesn't support changing the priority of the thread while it is asleep nor does it support interruptible sleeps (PCATCH) or the PDROP flag. It does support timeouts however. It differs from msleep() in that the passed in mutex is a spin mutex. This means one can use msleep_spin() and wakeup() with a spin mutex similar to msleep() and wakeup() with a regular mutex. Note that the spin mutex in question needs to come before sched_lock and the sleepq locks in lock order.
|
#
b439e431 |
|
22-Dec-2005 |
John Baldwin <jhb@FreeBSD.org> |
Tweak how the MD code calls the fooclock() methods some. Instead of passing a pointer to an opaque clockframe structure and requiring the MD code to supply CLKF_FOO() macros to extract needed values out of the opaque structure, just pass the needed values directly. In practice this means passing the pair (usermode, pc) to hardclock() and profclock() and passing the boolean (usermode) to hardclock_cpu() and hardclock_process(). Other details: - Axe clockframe and CLKF_FOO() macros on all architectures. Basically, all the archs were taking a trapframe and converting it into a clockframe one way or another. Now they can just extract the PC and usermode values directly out of the trapframe and pass it to fooclock(). - Renamed hardclock_process() to hardclock_cpu() as the latter is more accurate. - On Alpha, we now run profclock() at hz (profhz == hz) rather than at the slower stathz. - On Alpha, for the TurboLaser machines that don't have an 8254 timecounter, call hardclock() directly. This removes an extra conditional check from every clock interrupt on Alpha on the BSP. There is probably room for even further pruning here by changing Alpha to use the simplified timecounter we use on x86 with the lapic timer since we don't get interrupts from the 8254 on Alpha anyway. - On x86, clkintr() shouldn't ever be called now unless using_lapic_timer is false, so add a KASSERT() to that affect and remove a condition to slightly optimize the non-lapic case. - Change prototypeof arm_handler_execute() so that it's first arg is a trapframe pointer rather than a void pointer for clarity. - Use KCOUNT macro in profclock() to lookup the kernel profiling bucket. Tested on: alpha, amd64, arm, i386, ia64, sparc64 Reviewed by: bde (mostly)
|
#
a95452ee |
|
19-Aug-2005 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Avoid code duplication and implement bitcount32() function in systm.h only. Reviewed by: cperciva MFC after: 3 days
|
#
db302d16 |
|
27-Apr-2005 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Inline functions belong in <sys/libkern.h>, not in <sys/systm.h>. Move crc32() and crc32_raw() from the latter to the former. Move the declaration of crc32_tab[] to <sys/libkern.h> as well. Pointed out by: bde@ Tested on: ia64, sparc64
|
#
ee6bcf12 |
|
27-Apr-2005 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Refactor the CRC-32 code to enhance its usability. Move the actual CRC logic to a new function: crc32_raw() that obtains the initial CRC value as well as leaves any post-processing to the caller. As such, it can be used when the initial CRC value is not ~0U or when the final CRC value does need to be inverted (bitwise). It also means that crc32_raw() can be called repeatedly when the data is not available as a single block, such as for scatter/gather lists and the likes. Avoid the additional call overhead incured by the refactoring by moving the implementation off crc32() to sys/systm.h and making it inlinable. Since crc32_raw() is itself trivial and since it may be used in loops that iterate over fragments, having it available for inlining can be beneficial. Hence, move its implementation to sys/systm.h as well. Keep the original implementation of crc32() in libkern/crc32.c for documentation purposes (as a comment of course). Triggered by: Jose M Rodriguez (josemi at freebsd dot jazztel dot es) Discussed on: current@ Tested on: amd64, ia64 (BVO having GPT partitions) Jargon file candidate: BVO = By Virtue Of :-)
|
#
73fbaa74 |
|
18-Apr-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a named reference-count KPI to hold off mounting of the root filesystem. While we wait for holds to be released, print a list of who holds us back once per second. Use the new KPI from GEOM instead of vfs_mount.c calling g_waitidle(). Use the new KPI also from ata. With ATAmkIII's newbusification, ata could narrowly miss the window and ad0 would not exist when we tried to mount root.
|
#
30a1695b |
|
06-Apr-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Constify hexdump() harder.
|
#
fd5f6f4c |
|
29-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Privatize major().
|
#
4ba679d6 |
|
14-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove findcdev().
|
#
0f64ffc0 |
|
15-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move devtoname() prototype to systm.h to reduce #include pollution, it is (or should be) used in many printf() calls.
|
#
d9a54d5c |
|
08-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Reengineer subr_unit Add support for passing in a mutex. If NULL is passed a global subr_unit mutex is used. Add alloc_unrl() which expects the mutex to be held. Allocating a unit will never sleep as it does not need to allocate memory. Cut possible range in half so we can use -1 to mean "out of number". Collapse first and last runs into the head by means of counters. This saves memory in the common case(s).
|
#
3b3f38ed |
|
07-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add placeholder mutex argument to new_unrhdr().
|
#
a0915044 |
|
28-Feb-2005 |
Wes Peters <wes@FreeBSD.org> |
Add a sysctl that records the amount of physical memory in the machine. Submitted by: Nicko Dehaine <nicko@stbernard.com> MFC after: 1 day
|
#
9ca72ab2 |
|
06-Feb-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add VNASSERT() which is just like KASSERT() but takes a vnode argument which it will vn_printf() if it triggers.
|
#
23af91dc |
|
25-Jan-2005 |
Maxim Sobolev <sobomax@FreeBSD.org> |
More kern_{get,set}itiver() where they belong. Submitted by: dwmalone MFC after: 2 weeks
|
#
cfa0efe7 |
|
25-Jan-2005 |
Maxim Sobolev <sobomax@FreeBSD.org> |
Split out kernel side of {get,set}itimer(2) into two parts: the first that pops data from the userland and pushes results back and the second which does actual processing. Use the latter to eliminate stackgap in the linux wrappers of those syscalls. MFC after: 2 weeks
|
#
20a92a18 |
|
07-Dec-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
The remaining part of nmount/omount/rootfs mount changes. I cannot sensibly split the conversion of the remaining three filesystems out from the root mounting changes, so in one go: cd9660: Convert to nmount. Add omount compat shims. Remove dedicated rootfs mounting code. Use vfs_mountedfrom() Rely on vfs_mount.c calling VFS_STATFS() nfs(client): Convert to nmount (the simple way, mount_nfs(8) is still necessary). Add omount compat shims. Drop COMPAT_PRELITE2 mount arg compatibility. ffs: Convert to nmount. Add omount compat shims. Remove dedicated rootfs mounting code. Use vfs_mountedfrom() Rely on vfs_mount.c calling VFS_STATFS() Remove vfs_omount() method, all filesystems are now converted. Remove MNTK_WANTRDWR, handling RO/RW conversions is a filesystem task, and they all do it now. Change rootmounting to use DEVFS trampoline: vfs_mount.c: Mount devfs on /. Devfs needs no 'from' so this is clean. symlink /dev to /. This makes it possible to lookup /dev/foo. Mount "real" root filesystem on /. Surgically move the devfs mountpoint from under the real root filesystem onto /dev in the real root filesystem. Remove now unnecessary getdiskbyname(). kern_init.c: Don't do devfs mounting and rootvnode assignment here, it was already handled by vfs_mount.c. Remove now unused bdevvp(), addaliasu() and addalias(). Put the few necessary lines in devfs where they belong. This eliminates the second-last source of bogo vnodes, leaving only the lemming-syncer. Remove rootdev variable, it doesn't give meaning in a global context and was not trustworth anyway. Correct information is provided by statfs(/).
|
#
d567bd70 |
|
19-Nov-2004 |
David Schultz <das@FreeBSD.org> |
Remove the declaration of uarea_pages. Reviewed by: arch@
|
#
b0e1e474 |
|
31-Oct-2004 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Add TUNABLE_LONG and TUNABLE_ULONG, and use the latter for the hw.pci.host_mem_start tunable. Add comments to TUNABLE_INT and TUNABLE_QUAD recommending against their use. MFC after: 3 weeks
|
#
38228f72 |
|
31-Oct-2004 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Whitespace cleanup
|
#
e4fea39e |
|
24-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add delete_unrhdr() function. It will fail fatally if all allocated numbers have not been returned first.
|
#
a11021f3 |
|
23-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move the prototype for g_waitidle() to a more visible place.
|
#
f6bde1fd |
|
30-Sep-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a new API for allocating unit number (-like) resources. Allocation is always lowest free unit number. A mixed range/bitmap strategy for maximum memory efficiency. In the typical case where no unit numbers are freed total memory usage is 56 bytes on i386. malloc is called M_WAITOK but no locking is provided (yet). A bit of experience will be necessary to determine the best strategy. Hopefully a "caller provides locking" strategy can be maintained, but that may require use of M_NOWAIT allocation and failure handling. A userland test driver is included.
|
#
bed2969d |
|
29-Aug-2004 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Remove the last remnants of HW_WDOG (no, really!)
|
#
08e062ff |
|
05-Aug-2004 |
Colin Percival <cperciva@FreeBSD.org> |
Finish the PRISON_ROOT -> SUSER_ALLOWJAIL renaming by removing the definition of the old name.
|
#
d634f693 |
|
28-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove global variable rootdevs and rootvp, they are unused as such. Add local rootvp variables as needed. Remove checks for miniroot's in the swappartition. We never did that and most of the filesystems could never be used for that, but it had still been copy&pasted all over the place.
|
#
56f21b9d |
|
26-Jul-2004 |
Colin Percival <cperciva@FreeBSD.org> |
Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is somewhat clearer, but more importantly allows for a consistent naming scheme for suser_cred flags. The old name is still defined, but will be removed in a few days (unless I hear any complaints...) Discussed with: rwatson, scottl Requested by: jhb
|
#
24283cc0 |
|
16-Jul-2004 |
Colin Percival <cperciva@FreeBSD.org> |
Add a SUSER_RUID flag to suser_cred. This flag indicates that we want to check if the *real* user is the superuser (vs. the normal behaviour, which checks the effective user). Reviewed by: rwatson
|
#
2b61b0df |
|
10-Jul-2004 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Update for the KDB framework: o Remove prototype of Debugger(). o Remove prototype of backtrace().
|
#
f3732fd1 |
|
17-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Second half of the dev_t cleanup. The big lines are: NODEV -> NULL NOUDEV -> NODEV udev_t -> dev_t udev2dev() -> findcdev() Various minor adjustments including handling of userland access to kernel space struct cdev etc.
|
#
89c9c53d |
|
16-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Do the dreaded s/dev_t/struct cdev */ Bump __FreeBSD_version accordingly.
|
#
9a6dc4b6 |
|
06-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove filename+line number from panic messages.
|
#
82c6e879 |
|
06-Apr-2004 |
Warner Losh <imp@FreeBSD.org> |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999. Approved by: core
|
#
44f3b092 |
|
27-Feb-2004 |
John Baldwin <jhb@FreeBSD.org> |
Switch the sleep/wakeup and condition variable implementations to use the sleep queue interface: - Sleep queues attempt to merge some of the benefits of both sleep queues and condition variables. Having sleep qeueus in a hash table avoids having to allocate a queue head for each wait channel. Thus, struct cv has shrunk down to just a single char * pointer now. However, the hash table does not hold threads directly, but queue heads. This means that once you have located a queue in the hash bucket, you no longer have to walk the rest of the hash chain looking for threads. Instead, you have a list of all the threads sleeping on that wait channel. - Outside of the sleepq code and the sleep/cv code the kernel no longer differentiates between cv's and sleep/wakeup. For example, calls to abortsleep() and cv_abort() are replaced with a call to sleepq_abort(). Thus, the TDF_CVWAITQ flag is removed. Also, calls to unsleep() and cv_waitq_remove() have been replaced with calls to sleepq_remove(). - The sched_sleep() function no longer accepts a priority argument as sleep's no longer inherently bump the priority. Instead, this is soley a propery of msleep() which explicitly calls sched_prio() before blocking. - The TDF_ONSLEEPQ flag has been dropped as it was never used. The associated TDF_SET_ONSLEEPQ and TDF_CLR_ON_SLEEPQ macros have also been dropped and replaced with a single explicit clearing of td_wchan. TD_SET_ONSLEEPQ() would really have only made sense if it had taken the wait channel and message as arguments anyway. Now that that only happens in one place, a macro would be overkill.
|
#
816d62bb |
|
21-Feb-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Device megapatch 5/6: Remove the unused second argument from udev2dev(). Convert all remaining users of makedev() to use udev2dev(). The semantic difference is that udev2dev() will only locate a pre-existing dev_t, it will not line makedev() create a new one. Apart from the tiny well controlled windown in D_PSEUDO drivers, there should no longer be any "anonymous" dev_t's in the system now, only dev_t's created with make_dev() and make_dev_alias()
|
#
50d23be1 |
|
19-Jan-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add linenumber and source filename to panic(9) output. Ideally a traceback should be printed too, any takers ?
|
#
4abb4ff3 |
|
25-Dec-2003 |
Alfred Perlstein <alfred@FreeBSD.org> |
Add __restrict qualifiers to copyinfrom, copyinstrfrom, copystr, copyinstr, copyin and copyout.
|
#
77411499 |
|
06-Dec-2003 |
Scott Long <scottl@FreeBSD.org> |
Re-arrange and consolidate some random debugging stuff
|
#
d68d22ba |
|
30-Sep-2003 |
Maxime Henrion <mux@FreeBSD.org> |
Use __predict_false() in the KASSERT() macro. We expect this test to fail most of the time.
|
#
b2941431 |
|
26-Sep-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Introduce no_poll() default method for device drivers. Have it do exactly the same as vop_nopoll() for consistency and put a comment in the two pointing at each other. Retire seltrue() in favour of no_poll(). Create private default functions in kern_conf.c instead of public ones. Change default strategy to return the bio with ENODEV instead of doing nothing which would lead the bio stranded. Retire public nullopen() and nullclose() as well as the entire band of public no{read,write,ioctl,mmap,kqfilter,strategy,poll,dump} funtions, they are the default actions now. Move the final two trivial functions from subr_xxx.c to kern_conf.c and retire the now empty subr_xxx.c
|
#
4f0f6d80 |
|
22-Jul-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove __nonnull() on the second argument of strto[u]l() which I used to test that the warning actually was emitted. Spotted by: scottl
|
#
1af80193 |
|
21-Jul-2003 |
Mike Silbersack <silby@FreeBSD.org> |
Fix apparent typo in previous commit.
|
#
622905a8 |
|
21-Jul-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a new macro __nonnull(x) to use the new GCC33 attribute which checks that an argument is not a NULL pointer. Apply various obvious places. I belive __printf*() implies __nonnull() so it is not needed on functions already tagged that way.
|
#
347194c1 |
|
10-Jul-2003 |
Mike Silbersack <silby@FreeBSD.org> |
Add init_param3() to subr_param. This function is called immediately after the kernel map has been sized, and is the optimal place for the autosizing of memory allocations which occur within the kernel map to occur. Suggested by: bde
|
#
9f45b2da |
|
04-Apr-2003 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Define ovbcopy() as a macro which expands to the equivalent bcopy() call, to take care of the KAME IPv6 code which needs ovbcopy() because NetBSD's bcopy() doesn't handle overlap like ours. Remove all implementations of ovbcopy(). Previously, bzero was a function pointer on i386, to save a jmp to bzero_vector. Get rid of this microoptimization as it only confuses things, adds machine-dependent code to an MD header, and doesn't really save all that much. This commit does not add my pagezero() / pagecopy() code.
|
#
b8db34d2 |
|
31-Mar-2003 |
Jeff Roberson <jeff@FreeBSD.org> |
- Define a new md function 'casuptr'. This atomically compares and sets a pointer that is in user space. It will be used as the basic primitive for a kernel supported user space lock implementation. - Implement this function in x86's support.s - Provide stubs that return -1 in all other architectures. Implementations will follow along shortly. Reviewed by: jake
|
#
75b8b3b2 |
|
24-Mar-2003 |
John Baldwin <jhb@FreeBSD.org> |
Replace the at_fork, at_exec, and at_exit functions with the slightly more flexible process_fork, process_exec, and process_exit eventhandlers. This reduces code duplication and also means that I don't have to go duplicate the eventhandler locking three more times for each of at_fork, at_exec, and at_exit. Reviewed by: phk, jake, almost complete silence on arch@
|
#
b4b138c2 |
|
18-Mar-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Including <sys/stdint.h> is (almost?) universally only to be able to use %j in printfs, so put a newsted include in <sys/systm.h> where the printf prototype lives and save everybody else the trouble.
|
#
8751a8c7 |
|
04-Feb-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add vsnrprintf() which is just like vsnprintf() but takes a "radix" argument for the kernel-special %r format.
|
#
238dd320 |
|
03-Feb-2003 |
Jake Burkholder <jake@FreeBSD.org> |
Split statclock into statclock and profclock, and made the method for driving statclock based on profhz when profiling is enabled MD, since most platforms don't use this anyway. This removes the need for statclock_process, whose only purpose was to subdivide profhz, and gets the profiling clock running outside of sched_lock on platforms that implement suswintr. Also changed the interface for starting and stopping the profiling clock to do just that, instead of changing the rate of statclock, since they can now be separate. Reviewed by: jhb, tmm Tested on: i386, sparc64
|
#
6f8132a8 |
|
31-Jan-2003 |
Julian Elischer <julian@FreeBSD.org> |
Reversion of commit by Davidxu plus fixes since applied. I'm not convinced there is anything major wrong with the patch but them's the rules.. I am using my "David's mentor" hat to revert this as he's offline for a while.
|
#
0dbb100b |
|
26-Jan-2003 |
David Xu <davidxu@FreeBSD.org> |
Move UPCALL related data structure out of kse, introduce a new data structure called kse_upcall to manage UPCALL. All KSE binding and loaning code are gone. A thread owns an upcall can collect all completed syscall contexts in its ksegrp, turn itself into UPCALL mode, and takes those contexts back to userland. Any thread without upcall structure has to export their contexts and exit at user boundary. Any thread running in user mode owns an upcall structure, when it enters kernel, if the kse mailbox's current thread pointer is not NULL, then when the thread is blocked in kernel, a new UPCALL thread is created and the upcall structure is transfered to the new UPCALL thread. if the kse mailbox's current thread pointer is NULL, then when a thread is blocked in kernel, no UPCALL thread will be created. Each upcall always has an owner thread. Userland can remove an upcall by calling kse_exit, when all upcalls in ksegrp are removed, the group is atomatically shutdown. An upcall owner thread also exits when process is in exiting state. when an owner thread exits, the upcall it owns is also removed. KSE is a pure scheduler entity. it represents a virtual cpu. when a thread is running, it always has a KSE associated with it. scheduler is free to assign a KSE to thread according thread priority, if thread priority is changed, KSE can be moved from one thread to another. When a ksegrp is created, there is always N KSEs created in the group. the N is the number of physical cpu in the current system. This makes it is possible that even an userland UTS is single CPU safe, threads in kernel still can execute on different cpu in parallel. Userland calls kse_create to add more upcall structures into ksegrp to increase concurrent in userland itself, kernel is not restricted by number of upcalls userland provides. The code hasn't been tested under SMP by author due to lack of hardware. Reviewed by: julian
|
#
9b8104b2 |
|
15-Jan-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Allow linters to override the CTASSERT macro, since they are unlikely to like the results.
|
#
3c3871e5 |
|
04-Jan-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Introduce the void backtrace(void); function which will print a backtrace if DDB is in the kernel and an explanation if not. This is useful for recording backtraces in non-fatal circumstances and does not require pollution with DDB #includes in the files where it is used. It would of course be nice to have a non-DDB dependent version too, but since the meat of a backtrace is MD it is probably not worth it.
|
#
b9f009b0 |
|
07-Sep-2002 |
Peter Wemm <peter@FreeBSD.org> |
Make UAREA_PAGES and KSTACK_PAGES visible to userland via sysctl, like PS_STRINGS and USRSTACK is. This is necessary in order to decode a.out core dumps. kern_proc.c was already referring to both of these values but was missing the #include "opt_kstack_pages.h". Make the sysctl variables visible so that certain kld modules can see how their parent kernel was configured.
|
#
447b3772 |
|
29-Aug-2002 |
Peter Wemm <peter@FreeBSD.org> |
Change hw.physmem and hw.usermem to unsigned long like they used to be in the original hardwired sysctl implementation. The buf size calculator still overflows an integer on machines with large KVA (eg: ia64) where the number of pages does not fit into an int. Use 'long' there. Change Maxmem and physmem and related variables to 'long', mostly for completeness. Machines are not likely to overflow 'int' pages in the near term, but then again, 640K ought to be enough for anybody. This comes for free on 32 bit machines, so why not?
|
#
abbd8902 |
|
21-Aug-2002 |
Mike Barcroft <mike@FreeBSD.org> |
o Merge <machine/ansi.h> and <machine/types.h> into a new header called <machine/_types.h>. o <machine/ansi.h> will continue to live so it can define MD clock macros, which are only MD because of gratuitous differences between architectures. o Change all headers to make use of this. This mainly involves changing: #ifdef _BSD_FOO_T_ typedef _BSD_FOO_T_ foo_t; #undef _BSD_FOO_T_ #endif to: #ifndef _FOO_T_DECLARED typedef __foo_t foo_t; #define _FOO_T_DECLARED #endif Concept by: bde Reviewed by: jake, obrien
|
#
8803fc01 |
|
15-Jul-2002 |
Mark Murray <markm@FreeBSD.org> |
Fix warning by marking unused function parameter.
|
#
37777f4d |
|
29-Jun-2002 |
Ian Dowse <iedowse@FreeBSD.org> |
Add a hashdestroy() function to undo the actions of hashinit().
|
#
e602ba25 |
|
29-Jun-2002 |
Julian Elischer <julian@FreeBSD.org> |
Part 1 of KSE-III The ability to schedule multiple threads per process (one one cpu) by making ALL system calls optionally asynchronous. to come: ia64 and power-pc patches, patches for gdb, test program (in tools) Reviewed by: Almost everyone who counts (at various times, peter, jhb, matt, alfred, mini, bernd, and a cast of thousands) NOTE: this is still Beta code, and contains lots of debugging stuff. expect slight instability in signals..
|
#
e8aef1d3 |
|
20-Jun-2002 |
Peter Wemm <peter@FreeBSD.org> |
Use suword16/fuword16 instead of susword/fusword - this has two different definitions so far.. 16 bit on x86 and appears to be 32 bit on sparc64. Be explicit to avoid suprises.
|
#
b23619e0 |
|
20-Jun-2002 |
Peter Wemm <peter@FreeBSD.org> |
Deorbit suibyte(). It was only used for split address space systems for supporting UIO_USERISPACE (ie: it wasn't used).
|
#
9ae6d334 |
|
11-Jun-2002 |
Kelly Yancey <kbyanc@FreeBSD.org> |
Make nselcol, the number of select collisions since boot, unsigned as negative collisions simply doesn't make sense. PR: (one small part of) 19720 Approved by: alfred
|
#
f4258597 |
|
29-May-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add one copy of crc32() and crc32_tab[] in libkern, and remove it two other places. Comment out crc32 related definitions in zlib.h, we don't seem to have the corresponding code in our kernel.
|
#
396a429c |
|
26-May-2002 |
Doug Rabson <dfr@FreeBSD.org> |
Add declarations of suword32 and suword64. Add implementations of one or the other (or both) to all the platforms. Similar for fuword32 and fuword64.
|
#
b48a4280 |
|
17-Apr-2002 |
Maxime Henrion <mux@FreeBSD.org> |
Avoid calling malloc() or free() while holding the kenv lock. Reviewed by: jake
|
#
d786139c |
|
17-Apr-2002 |
Maxime Henrion <mux@FreeBSD.org> |
Rework the kernel environment subsystem. We now convert the static environment needed at boot time to a dynamic subsystem when VM is up. The dynamic kernel environment is protected by an sx lock. This adds some new functions to manipulate the kernel environment : freeenv(), setenv(), unsetenv() and testenv(). freeenv() has to be called after every getenv() when you have finished using the string. testenv() only tests if an environment variable is present, and doesn't require a freeenv() call. setenv() and unsetenv() are self explanatory. The kenv(2) syscall exports these new functionalities to userland, mainly for kenv(1). Reviewed by: peter
|
#
d86b2422 |
|
01-Apr-2002 |
Jake Burkholder <jake@FreeBSD.org> |
Move the CTASSERT macro from MD code to systm.h alongside KASSERT so other code can use it. This takes a single constant argument and fails to compile if it is 0 (false). The main application of this is to make assertions about structure sizes at compile time, in order to validate assumptions made in other code. Examples: CTASSERT(sizeof(struct foo) == FOO_SIZEOF); CTASSERT(sizeof(struct foo) == (1 << FOO_SHIFT)); Requested by: jhb, phk
|
#
44731cab |
|
01-Apr-2002 |
John Baldwin <jhb@FreeBSD.org> |
Change the suser() API to take advantage of td_ucred as well as do a general cleanup of the API. The entire API now consists of two functions similar to the pre-KSE API. The suser() function takes a thread pointer as its only argument. The td_ucred member of this thread must be valid so the only valid thread pointers are curthread and a few kernel threads such as thread0. The suser_cred() function takes a pointer to a struct ucred as its first argument and an integer flag as its second argument. The flag is currently only used for the PRISON_ROOT flag. Discussed on: smp@
|
#
81661c94 |
|
31-Mar-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Here follows the new kernel dumping infrastructure. Caveats: The new savecore program is not complete in the sense that it emulates enough of the old savecores features to do the job, but implements none of the options yet. I would appreciate if a userland hacker could help me out getting savecore to do what we want it to do from a users point of view, compression, email-notification, space reservation etc etc. (send me email if you are interested). Currently, savecore will scan all devices marked as "swap" or "dump" in /etc/fstab _or_ any devices specified on the command-line. All architectures but i386 lack an implementation of dumpsys(), but looking at the i386 version it should be trivial for anybody familiar with the platform(s) to provide this function. Documentation is quite sparse at this time, more to come. Details: ATA and SCSI drivers should work as the dump formatting code has been removed. The IDA, TWE and AAC have not yet been converted. Dumpon now opens the device and uses ioctl(DIOCGKERNELDUMP) to set the device as dumpdev. To implement the "off" argument, /dev/null is used as the device. Savecore will fail if handed any options since they are not (yet) implemented. All devices marked "dump" or "swap" in /etc/fstab will be scanned and dumps found will be saved to diskfiles named from the MD5 hash of the header record. The header record is dumped in readable format in the .info file. The kernel is not saved. Only complete dumps will be saved. All maintainer rights for this code are disclaimed: feel free to improve and extend. Sponsored by: DARPA, NAI Labs
|
#
eaf1c66c |
|
30-Mar-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move the "dumping" variable from systm.h to conf.h.
|
#
c58eb46e |
|
23-Mar-2002 |
Bruce Evans <bde@FreeBSD.org> |
Fixed some style bugs in the removal of __P(()). The main ones were not removing tabs before "__P((", and not outdenting continuation lines to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting and/or rewrap the whole prototype in some cases.
|
#
29dc1288 |
|
22-Mar-2002 |
Robert Watson <rwatson@FreeBSD.org> |
Merge from TrustedBSD MAC branch: Move the network code from using cr_cansee() to check whether a socket is visible to a requesting credential to using a new function, cr_canseesocket(), which accepts a subject credential and object socket. Implement cr_canseesocket() so that it does a prison check, a uid check, and add a comment where shortly a MAC hook will go. This will allow MAC policies to seperately instrument the visibility of sockets from the visibility of processes. Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
|
#
789f12fe |
|
19-Mar-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Remove __P
|
#
85f190e4 |
|
13-Mar-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Fixes to make select/poll mpsafe. Problem: selwakeup required calling pfind which would cause lock order reversals with the allproc_lock and the per-process filedesc lock. Solution: Instead of recording the pid of the select()'ing process into the selinfo structure, actually record a pointer to the thread. To avoid dereferencing a bad address all the selinfo structures that are in use by a thread are kept in a list hung off the thread (protected by sellock). When a selwakeup occurs the selinfo is removed from that threads list, it is also removed on the way out of select or poll where the thread will traverse its list removing all the selinfos from its own list. Problem: Previously the PROC_LOCK was used to provide the mutual exclusion needed to ensure proper locking, this couldn't work because there was a single condvar used for select and poll and condvars can only be used with a single mutex. Solution: Introduce a global mutex 'sellock' which is used to provide mutual exclusion when recording events to wait on as well as performing notification when an event occurs. Interesting note: schedlock is required to manipulate the per-thread TDF_SELECT flag, however if given its own field it would not need schedlock, also because TDF_SELECT is only manipulated under sellock one doesn't actually use schedlock for syncronization, only to protect against corruption. Proc locks are no longer used in select/poll. Portions contributed by: davidc
|
#
62da23f1 |
|
27-Feb-2002 |
John Baldwin <jhb@FreeBSD.org> |
Back out part of KSE/M2 that snuck in under the radar: changing the prototype of bzero() on the i386 to have a volatile first argument. Requested by: bde, jake
|
#
196c1aa4 |
|
10-Feb-2002 |
Bruce Evans <bde@FreeBSD.org> |
Move the declaration of panic() from sys/param.h back to sys/systm.h. Almost all .c files have to include <sys/systm.h> for more than its declaration of panic(), so little is gained from declaring panic() in a wrong place. This probably depends on missing garbage collection of the includes of <sys/systm.h> that were added to get snprintf() declared for old versions of the ktr macros.
|
#
d9888e41 |
|
10-Feb-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
GC the unused einval() Obtained from: ~bde/sys.dif.gz
|
#
21d56e9c |
|
29-Dec-2001 |
Alfred Perlstein <alfred@FreeBSD.org> |
Make AIO a loadable module. Remove the explicit call to aio_proc_rundown() from exit1(), instead AIO will use at_exit(9). Add functions at_exec(9), rm_at_exec(9) which function nearly the same as at_exec(9) and rm_at_exec(9), these functions are called on behalf of modules at the time of execve(2) after the image activator has run. Use a modified version of tegge's suggestion via at_exec(9) to close an exploitable race in AIO. Fix SYSCALL_MODULE_HELPER such that it's archetecuterally neutral, the problem was that one had to pass it a paramater indicating the number of arguments which were actually the number of "int". Fix it by using an inline version of the AS macro against the syscall arguments. (AS should be available globally but we'll get to that later.) Add a primative system for dynamically adding kqueue ops, it's really not as sophisticated as it should be, but I'll discuss with jlemon when he's around.
|
#
7e1f6dfe |
|
17-Dec-2001 |
John Baldwin <jhb@FreeBSD.org> |
Modify the critical section API as follows: - The MD functions critical_enter/exit are renamed to start with a cpu_ prefix. - MI wrapper functions critical_enter/exit maintain a per-thread nesting count and a per-thread critical section saved state set when entering a critical section while at nesting level 0 and restored when exiting to nesting level 0. This moves the saved state out of spin mutexes so that interlocking spin mutexes works properly. - Most low-level MD code that used critical_enter/exit now use cpu_critical_enter/exit. MI code such as device drivers and spin mutexes use the MI wrappers. Note that since the MI wrappers store the state in the current thread, they do not have any return values or arguments. - mtx_intr_enable() is replaced with a constant CRITICAL_FORK which is assigned to curthread->td_savecrit during fork_exit(). Tested on: i386, alpha
|
#
66a11b9f |
|
08-Dec-2001 |
Matthew Dillon <dillon@FreeBSD.org> |
Allow maxusers to be specified as 0 in the kernel config, which will cause the system to auto-size to between 32 and 512 depending on the amount of memory. MFC after: 1 week
|
#
817805d9 |
|
12-Nov-2001 |
Paul Saab <ps@FreeBSD.org> |
Fix a signed bug in the crashdump code for systems with > 2GB of ram. Reviewed by: peter
|
#
21cbf0cc |
|
23-Oct-2001 |
John Baldwin <jhb@FreeBSD.org> |
- Change getenv_quad() to return an int instead of a quad_t since it returns an success/failure code rather than the actual value. - Add getenv_string() which copies a string from the environment to another string and returns true on success.
|
#
94088977 |
|
20-Sep-2001 |
Robert Watson <rwatson@FreeBSD.org> |
o Rename u_cansee() to cr_cansee(), making the name more comprehensible in the face of a rename of ucred to cred, and possibly generally. Obtained from: TrustedBSD Project
|
#
d2718e47 |
|
17-Sep-2001 |
Peter Wemm <peter@FreeBSD.org> |
Fix a fatal type mismatch (char *static_env; vs char static_env[]). Submitted by: bde
|
#
b40ce416 |
|
12-Sep-2001 |
Julian Elischer <julian@FreeBSD.org> |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
|
#
93f4fd1c |
|
31-Aug-2001 |
Robert Watson <rwatson@FreeBSD.org> |
o Screw over users of the kern.{security.,}suser_permitted sysctl again, by renaming it to kern.security.suser_enabled. This makes the name consistent with other use: "permitted" now refers to a specific right or privilege, whereas "enabled" refers to a feature. As this hasn't been MFC'd, and using this destroys a running system currently, I believe the user base of the sysctl will not be too unhappy. o While I'm at it, un-staticize and export the supporting variable, as it will be used by kern_cap.c shortly. Obtained from: TrustedBSD Project
|
#
76cb0cad |
|
26-Aug-2001 |
Peter Wemm <peter@FreeBSD.org> |
Enable hardwiring of things like tunables from embedded enironments that do not start from loader(8).
|
#
219d632c |
|
21-Aug-2001 |
Matthew Dillon <dillon@FreeBSD.org> |
Move most of the kernel submap initialization code, including the timeout callwheel and buffer cache, out of the platform specific areas and into the machine independant area. i386 and alpha adjusted here. Other cpus can be fixed piecemeal. Reviewed by: freebsd-smp, jake
|
#
8ec48c6d |
|
10-Aug-2001 |
John Baldwin <jhb@FreeBSD.org> |
- Remove asleep(), await(), and M_ASLEEP. - Callers of asleep() and await() have been converted to calling tsleep(). The only caller outside of M_ASLEEP was the ata driver, which called both asleep() and await() with spl-raised, so there was no need for the asleep() and await() pair. M_ASLEEP was unused. Reviewed by: jasone, peter
|
#
36c2e9fe |
|
31-Jul-2001 |
John Baldwin <jhb@FreeBSD.org> |
Apply the cluebat to myself and undo the await() -> mawait() rename. The asleep() and await() functions split the functionality of msleep() up into two halves. Only the asleep() half (which is what puts the process on the sleep queue) actually needs the lock usually passed to msleep() held to prevent lost wakeups. await() does not need the lock held, so the lock can be released prior to calling await() and does not need to be passed in to the await() function. Typical usage of these functions would be as follows: mtx_lock(&foo_mtx); ... do stuff ... asleep(&foo_cond, PRIxx, "foowt", hz); ... mtx_unlock&foo_mtx); ... await(-1, -1); Inspired by: dillon on the couch at Usenix
|
#
ee342e1b |
|
26-Jul-2001 |
Peter Wemm <peter@FreeBSD.org> |
Move param.c out of the conf directory and make it fully dynamic. Tunables are now derived at boot time from maxusers. ie: change maxusers via a tunable and all the derivative settings change. You can change the other tunables individually as well. Even hz etc is tunable.
|
#
50bc553e |
|
07-Jul-2001 |
Julian Elischer <julian@FreeBSD.org> |
Small whitespace fix. BDE'd by: BDE
|
#
0b1ae809 |
|
07-Jul-2001 |
Julian Elischer <julian@FreeBSD.org> |
A set of changes to reduce the number of include files the kernel takes from /usr/include. I cannot check them on alpha.. (will try beast) Briefly looked at by: Warner Losh <imp@harmony.village.org>
|
#
d652b3d9 |
|
05-Jul-2001 |
Jake Burkholder <jake@FreeBSD.org> |
Backout mwakeup, etc.
|
#
9316aed2 |
|
03-Jul-2001 |
Jake Burkholder <jake@FreeBSD.org> |
Implement mwakeup, mwakeup_one, cv_signal_drop and cv_broadcast_drop. These take an additional mutex argument, which is dropped before any processes are made runnable. This can avoid contention on the mutex if the processes would immediately acquire it, and is done in such a way that wakeups will not be lost. Reviewed by: jhb
|
#
b93c3c5e |
|
15-Jun-2001 |
Peter Wemm <peter@FreeBSD.org> |
Fix some warnings in kern_environment.c. Make the getenv*() family take a const 'name', since they dont modify anything. 159: warning: passing arg 1 of `getenv_int' discards qualifiers... 167: warning: passing arg 1 of `getenv' discards qualifiers from pointer..
|
#
265fc98f |
|
13-May-2001 |
Seigo Tanimura <tanimura@FreeBSD.org> |
- Convert msleep(9) in select(2) and poll(2) to cv_*wait*(9). - Since polling should not involve sleeping, keep holding a process lock upon scanning file descriptors. - Hold a reference to every file descriptor prior to entering polling loop in order to avoid lock order reversal between lockmgr and p_mtx upon calling fdrop() in fo_poll(). (NOTE: this work has not been done for netncp and netsmb yet because a socket itself has no reference counts.) Reviewed by: jhb
|
#
6caa8a15 |
|
27-Apr-2001 |
John Baldwin <jhb@FreeBSD.org> |
Overhaul of the SMP code. Several portions of the SMP kernel support have been made machine independent and various other adjustments have been made to support Alpha SMP. - It splits the per-process portions of hardclock() and statclock() off into hardclock_process() and statclock_process() respectively. hardclock() and statclock() call the *_process() functions for the current process so that UP systems will run as before. For SMP systems, it is simply necessary to ensure that all other processors execute the *_process() functions when the main clock functions are triggered on one CPU by an interrupt. For the alpha 4100, clock interrupts are delievered in a staggered broadcast fashion, so we simply call hardclock/statclock on the boot CPU and call the *_process() functions on the secondaries. For x86, we call statclock and hardclock as usual and then call forward_hardclock/statclock in the MD code to send an IPI to cause the AP's to execute forwared_hardclock/statclock which then call the *_process() functions. - forward_signal() and forward_roundrobin() have been reworked to be MI and to involve less hackery. Now the cpu doing the forward sets any flags, etc. and sends a very simple IPI_AST to the other cpu(s). AST IPIs now just basically return so that they can execute ast() and don't bother with setting the astpending or needresched flags themselves. This also removes the loop in forward_signal() as sched_lock closes the race condition that the loop worked around. - need_resched(), resched_wanted() and clear_resched() have been changed to take a process to act on rather than assuming curproc so that they can be used to implement forward_roundrobin() as described above. - Various other SMP variables have been moved to a MI subr_smp.c and a new header sys/smp.h declares MI SMP variables and API's. The IPI API's from machine/ipl.h have moved to machine/smp.h which is included by sys/smp.h. - The globaldata_register() and globaldata_find() functions as well as the SLIST of globaldata structures has become MI and moved into subr_smp.c. Also, the globaldata list is only available if SMP support is compiled in. Reviewed by: jake, peter Looked over by: eivind
|
#
ed639720 |
|
28-Mar-2001 |
Robert Watson <rwatson@FreeBSD.org> |
o introduce u_cansee(), which performs access control checks between two subject ucreds. Unlike p_cansee(), u_cansee() doesn't have process lock requirements, only valid ucred reference requirements, so is prefered as process locking improves. For now, back p_cansee() into u_cansee(), but eventually p_cansee() will go away. Reviewed by: jhb, tmm Obtained from: TrustedBSD Project
|
#
6b8b8c7f |
|
27-Mar-2001 |
Paul Saab <ps@FreeBSD.org> |
Last commit was broken.. It always prints '[CTRL-C to abort]'. Move duplicate code for printing the status of the dump and checking for abort into a separate function. Pointy hat to: me
|
#
640c2233 |
|
22-Feb-2001 |
John Baldwin <jhb@FreeBSD.org> |
The ia64 hasn't needed machine/ipl.h included in sys/systm.h for a while now.
|
#
91421ba2 |
|
20-Feb-2001 |
Robert Watson <rwatson@FreeBSD.org> |
o Move per-process jail pointer (p->pr_prison) to inside of the subject credential structure, ucred (cr->cr_prison). o Allow jail inheritence to be a function of credential inheritence. o Abstract prison structure reference counting behind pr_hold() and pr_free(), invoked by the similarly named credential reference management functions, removing this code from per-ABI fork/exit code. o Modify various jail() functions to use struct ucred arguments instead of struct proc arguments. o Introduce jailed() function to determine if a credential is jailed, rather than directly checking pointers all over the place. o Convert PRISON_CHECK() macro to prison_check() function. o Move jail() function prototypes to jail.h. o Emulate the P_JAILED flag in fill_kinfo_proc() and no longer set the flag in the process flags field itself. o Eliminate that "const" qualifier from suser/p_can/etc to reflect mutex use. Notes: o Some further cleanup of the linux/jail code is still required. o It's now possible to consider resolving some of the process vs credential based permission checking confusion in the socket code. o Mutex protection of struct prison is still not present, and is required to protect the reference count plus some fields in the structure. Reviewed by: freebsd-arch Obtained from: TrustedBSD Project
|
#
d5a08a60 |
|
11-Feb-2001 |
Jake Burkholder <jake@FreeBSD.org> |
Implement a unified run queue and adjust priority levels accordingly. - All processes go into the same array of queues, with different scheduling classes using different portions of the array. This allows user processes to have their priorities propogated up into interrupt thread range if need be. - I chose 64 run queues as an arbitrary number that is greater than 32. We used to have 4 separate arrays of 32 queues each, so this may not be optimal. The new run queue code was written with this in mind; changing the number of run queues only requires changing constants in runq.h and adjusting the priority levels. - The new run queue code takes the run queue as a parameter. This is intended to be used to create per-cpu run queues. Implement wrappers for compatibility with the old interface which pass in the global run queue structure. - Group the priority level, user priority, native priority (before propogation) and the scheduling class into a struct priority. - Change any hard coded priority levels that I found to use symbolic constants (TTIPRI and TTOPRI). - Remove the curpriority global variable and use that of curproc. This was used to detect when a process' priority had lowered and it should yield. We now effectively yield on every interrupt. - Activate propogate_priority(). It should now have the desired effect without needing to also propogate the scheduling class. - Temporarily comment out the call to vm_page_zero_idle() in the idle loop. It interfered with propogate_priority() because the idle process needed to do a non-blocking acquire of Giant and then other processes would try to propogate their priority onto it. The idle process should not do anything except idle. vm_page_zero_idle() will return in the form of an idle priority kernel thread which is woken up at apprioriate times by the vm system. - Update struct kinfo_proc to the new priority interface. Deliberately change its size by adjusting the spare fields. It remained the same size, but the layout has changed, so userland processes that use it would parse the data incorrectly. The size constraint should really be changed to an arbitrary version number. Also add a debug.sizeof sysctl node for struct kinfo_proc.
|
#
248d941a |
|
19-Jan-2001 |
Peter Wemm <peter@FreeBSD.org> |
Remove unused splsoftcambio(), splsoftcamnet(), splq() and splz() inlines.
|
#
198c5b08 |
|
19-Jan-2001 |
Peter Wemm <peter@FreeBSD.org> |
Remove the static splXXX functions and replace them by static __inline stubs. Remove the xxx_imask variables which have been all but gone for a while.
|
#
e2a09b26 |
|
20-Dec-2000 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Replace logwakeup() with "int msgbuftrigger". There is little point in calling a function just to set a flag. Keep better track of the syslog FAC/PRI code and try to DTRT if they mingle. Log all writes to /dev/console to syslog with <console.info> priority. The formatting is not preserved, there is no robust, way of doing it. (Ideas with patches welcome).
|
#
138e514c |
|
06-Dec-2000 |
Peter Wemm <peter@FreeBSD.org> |
Untangle vfsinit() a bit. Use seperate sysinit functions rather than having a super-function calling bits all over the place.
|
#
a52585d7 |
|
26-Nov-2000 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Simplify the tprintf() API. Loose the special <sys/tprintf.h> #include file.
|
#
4d88c459 |
|
26-Nov-2000 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make log(-1, ...) do what addlog(...) did. Replace all uses of addlog(...) with log(-1, ...) Remove bogus "register" keywords in subr_prf.c Make log() return void.
|
#
b8498852 |
|
15-Nov-2000 |
John Baldwin <jhb@FreeBSD.org> |
- Rename await() to mawait(). mawait() is to await() as msleep() is to tsleep(). Namely, mawait() takes an extra argument which is a mutex to drop when going to sleep. Just as with msleep(), if the priority argument includes the PDROP flag, then the mutex will be dropped and will not be reacquired when the process wakes up. - Add in a backwards compatible macro await() that passes in NULL as the mutex argument to mawait().
|
#
a70d33d8 |
|
07-Nov-2000 |
John Baldwin <jhb@FreeBSD.org> |
Remove the now unused and unneeded splassert macros and prototypes.
|
#
cf9fa8e7 |
|
29-Oct-2000 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move suser() and suser_xxx() prototypes and a related #define from <sys/proc.h> to <sys/systm.h>. Correctly document the #includes needed in the manpage. Add one now needed #include of <sys/systm.h>. Remove the consequent 48 unused #includes of <sys/proc.h>.
|
#
8088699f |
|
24-Oct-2000 |
John Baldwin <jhb@FreeBSD.org> |
- Overhaul the software interrupt code to use interrupt threads for each type of software interrupt. Roughly, what used to be a bit in spending now maps to a swi thread. Each thread can have multiple handlers, just like a hardware interrupt thread. - Instead of using a bitmask of pending interrupts, we schedule the specific software interrupt thread to run, so spending, NSWI, and the shandlers array are no longer needed. We can now have an arbitrary number of software interrupt threads. When you register a software interrupt thread via sinthand_add(), you get back a struct intrhand that you pass to sched_swi() when you wish to schedule your swi thread to run. - Convert the name of 'struct intrec' to 'struct intrhand' as it is a bit more intuitive. Also, prefix all the members of struct intrhand with 'ih_'. - Make swi_net() a MI function since there is now no point in it being MD. Submitted by: cp
|
#
341885a9 |
|
20-Oct-2000 |
John Baldwin <jhb@FreeBSD.org> |
GC the unused safepri variable.
|
#
398bc678 |
|
15-Oct-2000 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move DELAY() from <machine/clock.h> to <sys/systm.h>
|
#
16a011f9 |
|
13-Oct-2000 |
Paul Saab <ps@FreeBSD.org> |
Do not allocate a callout for all crashdumps, not just when you panic.
|
#
1931cf94 |
|
05-Oct-2000 |
John Baldwin <jhb@FreeBSD.org> |
- Heavyweight interrupt threads on the alpha for device I/O interrupts. - Make softinterrupts (SWI's) almost completely MI, and divorce them completely from the x86 hardware interrupt code. - The ihandlers array is now gone. Instead, there is a MI shandlers array that just contains SWI handlers. - Most of the former machine/ipl.h files have moved to a new sys/ipl.h. - Stub out all the spl*() functions on all architectures. Submitted by: dfr
|
#
918c9eec |
|
29-Sep-2000 |
Doug Rabson <dfr@FreeBSD.org> |
Add ia64 support.
|
#
817bf5d4 |
|
10-Sep-2000 |
Jake Burkholder <jake@FreeBSD.org> |
Rename tsleep to msleep and add a mutex argument, which is released before sleeping and re-acquired before msleep returns. A compatibility cpp macro has been provided for tsleep to avoid changing all occurences of it in the kernel. Remove an assertion that the Giant mutex be held before calling tsleep or asleep. This is intended to serve the same purpose as condition variables, but does not preclude their addition in the future. Approved by: jasone Obtained from: BSD/OS
|
#
3e755f76 |
|
30-Aug-2000 |
Mike Smith <msmith@FreeBSD.org> |
Make it possible to pass boot()'s flags to shutdown_nice() so that the kernel can instigate an orderly shutdown but still determine the form of that shutdown. Make it possible eg. to cleanly shutdown and power off the system under ACPI when the power button is pressed.
|
#
579f4eb4 |
|
05-Jun-2000 |
Robert Watson <rwatson@FreeBSD.org> |
o bde suggested moving the SYSCTL from kern_mib to the more appropriate kern_prot, which cleans up some namespace issues o Don't need a special handler to limit un-setting, as suser is used to protect suser_permitted, making it one-way by definition. Suggested by: bde
|
#
03095547 |
|
05-Jun-2000 |
Robert Watson <rwatson@FreeBSD.org> |
o Introduce kern.suser_permitted, a sysctl that disables the suser_xxx() returning anything but EPERM. o suser is enabled by default; once disabled, cannot be reenabled o To be used in alternative security models where uid0 does not connote additional privileges o Should be noted that uid0 still has some additional powers as it owns many important files and executables, so suffers from the same fundamental security flaws as securelevels. This is fixed with MAC integrity protection code (in progress) o Not safe for consumption unless you are *really* sure you don't want things like shutdown to work, et al :-) Obtained from: TrustedBSD Project
|
#
5550bcfc |
|
29-May-2000 |
Doug Rabson <dfr@FreeBSD.org> |
Declare splsoftqtassert().
|
#
ca2e0534 |
|
28-May-2000 |
Doug Rabson <dfr@FreeBSD.org> |
Add taskqueue system for easy-to-use SWIs among other things. Reviewed by: arch
|
#
ca27a8d4 |
|
19-Mar-2000 |
Paul Saab <ps@FreeBSD.org> |
Add conditional splassert. Reviewed by: peter
|
#
6d9a8d3e |
|
02-Mar-2000 |
Peter Dufault <dufault@FreeBSD.org> |
I applied the wrong patch set. Back out anything associated with the known bogus currtpriority. This undoes the previous changes to sys/i386/i386/trap.c, sys/alpha/alpha/trap.c, sys/sys/systm.h Now we have the patch set approved by bde. Approved by: bde
|
#
383774c4 |
|
02-Mar-2000 |
Peter Dufault <dufault@FreeBSD.org> |
Patches that eliminate extra context switches in FIFO case. Fixes p1003_1b regression test in the simple case of no RR and FIFO processes competing. Reviewed by: jkh, bde
|
#
90bb57af |
|
17-Feb-2000 |
Bruce Evans <bde@FreeBSD.org> |
Don't include <machine/ipl.h> in <sys/systm.h> in the i386 case. This fixes some namespace pollution in general and breakage of modules that aren't in the sys tree in particular (<machine/ipl.h> includes further headers that aren't installed under /usr/include). Reimplemented SPLASSERT() so that it is more machine independent and less bloated and doesn't require the <machine/ipl.h> include spam. In particular, don't assume that `cpl' can be printed using %08x format. The alpha arch doesn't even have `cpl'. SPLASSERT() was harmless on alphas because it isn't actually used.
|
#
f6a3d83f |
|
15-Jan-2000 |
Jonathan M. Bresler <jmb@FreeBSD.org> |
Add SPLASSERT() macro. SPLASSERT() compiles to a no-op unless both "option INVARIANTS" and "options INVARIANT_SUPPORT" are defined in the kernel's config(8) file. SPLASSERT(expression, msg) used KASSERT to check that the expression is true, panic()ing the kernel otherwise. Approved by: jkh Reviewed by: jdp, dfr, phk, eivind and green
|
#
6301c763 |
|
11-Dec-1999 |
Brian Feldman <green@FreeBSD.org> |
Move the wakeup_one() prototype from proc.h to systm.h. It now hangs out with it's sibling, wakeup().
|
#
ac4934cf |
|
06-Dec-1999 |
Archie Cobbs <archie@FreeBSD.org> |
Prototypes should either have explicit parameter names, or not, but some combination of the two.
|
#
c464420c |
|
29-Nov-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Report swapdevices as cdevs rather than bdevs. Remove unused dev2budev() function.
|
#
25792ef3 |
|
23-Nov-1999 |
Archie Cobbs <archie@FreeBSD.org> |
Change the prototype of the strto* routines to make the second parameter a char ** instead of a const char **. This make these kernel routines consistent with the corresponding libc userland routines. Which is actually 'correct' is debatable, but consistency and following the spec was deemed more important in this case. Reviewed by (in concept): phk, bde
|
#
8f52148e |
|
22-Nov-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Isolate the swapdev_vp "not quite" vnode in the only source file which needs it now that /dev/drum is gone. Reviewed by: eivind, peter
|
#
88002b4c |
|
06-Nov-1999 |
Matt Jacob <mjacob@FreeBSD.org> |
add in getenv_quad function
|
#
5b664c7c |
|
03-Nov-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move isfoo() and friends to the newly created sys/ctype.h. Urged by: bde
|
#
44b4dd85 |
|
02-Nov-1999 |
Archie Cobbs <archie@FreeBSD.org> |
Consolidate some of the various ctype(3) macros in one location.
|
#
bf9deaba |
|
01-Nov-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add strtol & strtoul to kernel. Derived from libc versions.
|
#
3e148c40 |
|
26-Sep-1999 |
Eivind Eklund <eivind@FreeBSD.org> |
Move the declaration of panic() from sys/systm.h to sys/param.h. Rationale: Wider access, so we can add assertions to header files. panicstr is still in sys/systm.h Suggested by: phk Discussed with: peter
|
#
c3aac50f |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
fcb893a8 |
|
21-Aug-1999 |
Mike Smith <msmith@FreeBSD.org> |
Implement a new generic mechanism for attaching handler functions to events, in order to pave the way for removing a number of the ad-hoc implementations currently in use. Retire the at_shutdown family of functions and replace them with new event handler lists. Rework kern_shutdown.c to take greater advantage of the use of event handlers. Reviewed by: green
|
#
f1550d9d |
|
24-Jul-1999 |
Doug Rabson <dfr@FreeBSD.org> |
This makes the in kernel printf routines conform to the documented behavior of their userland counterparts with respect to return values. Submitted by: Matthew N. Dodd <winter@jurai.net>
|
#
03e3bc8e |
|
23-Jul-1999 |
Alan Cox <alc@FreeBSD.org> |
atomic.h: Change "void *" to "volatile TYPE *", improving type safety and eliminating some warnings (e.g., mp_machdep.c rev 1.106). cpufunc.h: Eliminate setbits. As defined, it's not precisely correct; and it's redundant. (Use atomic_set_int instead.) ipl_funcs.c: Use atomic_set_int instead of setbits. systm.h: Include atomic.h. Reviewed by: bde
|
#
fb30b5bd |
|
20-Jul-1999 |
Brian Feldman <green@FreeBSD.org> |
Make a dev2budev() function, and use it. This refixes pstat (working, broken, working, broken, working) and savecore (working, working, broken, working, working). Sorta Reviewed by: phk
|
#
f06a54f0 |
|
17-Jul-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Centralize dumpdev handling.
|
#
f008cfcc |
|
17-Jul-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
I have not one single time remembered the name of this function correctly so obviously I gave it the wrong name. s/umakedev/makeudev/g
|
#
faaf4ecf |
|
31-May-1999 |
Dmitrij Tejblum <dt@FreeBSD.org> |
Remove declaration of the nblkdev and nchrdev variables.
|
#
bfbb9ce6 |
|
11-May-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Divorce "dev_t" from the "major|minor" bitmap, which is now called udev_t in the kernel but still called dev_t in userland. Provide functions to manipulate both types: major() umajor() minor() uminor() makedev() umakedev() dev2udev() udev2dev() For now they're functions, they will become in-line functions after one of the next two steps in this process. Return major/minor/makedev to macro-hood for userland. Register a name in cdevsw[] for the "filedescriptor" driver. In the kernel the udev_t appears in places where we have the major/minor number combination, (ie: a potential device: we may not have the driver nor the device), like in inodes, vattr, cdevsw registration and so on, whereas the dev_t appears where we carry around a reference to a actual device. In the future the cdevsw and the aliased-from vnode will be hung directly from the dev_t, along with up to two softc pointers for the device driver and a few houskeeping bits. This will essentially replace the current "alias" check code (same buck, bigger bang). A little stunt has been provided to try to catch places where the wrong type is being used (dev_t vs udev_t), if you see something not working, #undef DEVT_FASCIST in kern/kern_conf.c and see if it makes a difference. If it does, please try to track it down (many hands make light work) or at least try to reproduce it as simply as possible, and describe how to do that. Without DEVT_FASCIST I belive this patch is a no-op. Stylistic/posixoid comments about the userland view of the <sys/*.h> files welcome now, from userland they now contain the end result. Next planned step: make all dev_t's refer to the same devsw[] which means convert BLK's to CHR's at the perimeter of the vnodes and other places where they enter the game (bootdev, mknod, sysctl).
|
#
54a8c693 |
|
21-Apr-1999 |
Peter Wemm <peter@FreeBSD.org> |
Stage 1 of a cleanup of the i386 interrupt registration mechanism. Interrupts under the new scheme are managed by the i386 nexus with the awareness of the resource manager. There is further room for optimizing the interfaces still. All the users of register_intr()/intr_create() should be gone, with the exception of pcic and i386/isa/clock.c.
|
#
32c20357 |
|
11-Mar-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make even more of the PPSAPI implementations generic. FLL support in hardpps() Various magic shuffles and improved comments Style fixes from Bruce.
|
#
1a67a444 |
|
05-Mar-1999 |
Bruce Evans <bde@FreeBSD.org> |
Fixed bitrot in the types of fusword() and susword(). swords will probably always be 16 bits if they exist at all, and fusword() and susword() are only used in i386 code, so there aren't any portability functions with them.
|
#
8aef1712 |
|
27-Jan-1999 |
Matthew Dillon <dillon@FreeBSD.org> |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile
|
#
2084f96c |
|
15-Jan-1999 |
Mike Smith <msmith@FreeBSD.org> |
Add getenv_int(), specifically for retrieving integer values from kernel environment variables. This makes it easy to pass tuning parameters in from the bootloader.
|
#
118537f2 |
|
14-Jan-1999 |
Mike Smith <msmith@FreeBSD.org> |
Add sscanf/vsscanf/strtoq/strtouq to the kernel. Initially these will be used for parsing kernel environment values, although they have utility elsewhere.
|
#
219cbf59 |
|
09-Jan-1999 |
Eivind Eklund <eivind@FreeBSD.org> |
KNFize, by bde.
|
#
5526d2d9 |
|
08-Jan-1999 |
Eivind Eklund <eivind@FreeBSD.org> |
Split DIAGNOSTIC -> DIAGNOSTIC, INVARIANTS, and INVARIANT_SUPPORT as discussed on -hackers. Introduce 'KASSERT(assertion, ("panic message", args))' for simple check + panic. Reviewed by: msmith
|
#
a1d6c3ec |
|
21-Dec-1998 |
Matthew Dillon <dillon@FreeBSD.org> |
Add asleep() and await() support. Currently highly experimental. A small support structure had to be added to the proc structure, and a few minor conditional panics no longer apply.
|
#
8245f3f5 |
|
02-Dec-1998 |
Archie Cobbs <archie@FreeBSD.org> |
Add snprintf(3) and vsnprintf(3) capability to the kernel. Reviewed by: bde
|
#
35d27a0f |
|
29-Oct-1998 |
Mike Smith <msmith@FreeBSD.org> |
Add the ability to specify where on the at_shutdown queue a handler is installed. Remove cpu_power_down, and replace it with an entry at the end of the SHUTDOWN_FINAL queue in the only place it's used (APM). Submitted by: Some ideas from Bruce Walter <walter@fortean.com>
|
#
1d13be33 |
|
08-Oct-1998 |
Mike Smith <msmith@FreeBSD.org> |
Missing defines for the kernel environment and module metadata lookup functions
|
#
d9622058 |
|
15-Sep-1998 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
system.h: Add definition for at_shutdown(9)'s SHUTDOWN_FINAL. ccdvar.h: chio.h: mtio.h: Add CAM support.
|
#
99237364 |
|
06-Sep-1998 |
Andrey A. Chernov <ache@FreeBSD.org> |
Store formatted panic string in static buffer to make it available later for savecore. Previous code give only panic format to savecore
|
#
dbfc3718 |
|
05-Aug-1998 |
Bruce Evans <bde@FreeBSD.org> |
Removed prototype for gone-away hzto(). Fixed disorder and missing K&R support in prototypes for interrupt functions.
|
#
748993b8 |
|
13-Jul-1998 |
Bruce Evans <bde@FreeBSD.org> |
Added macros __printflike() and __scanflike() to <sys/cdefs.h>. Use them to `make gcc -Wformat' check formats for all printf-like and scanf-like functions in /usr/src except for the err()/warn() family. err() isn't quite printf-like since its format arg can legitimately be NULL. syslog() isn't quite printf-like, but gcc already accepts %m, even for plain printf() when it shouldn't.
|
#
1afde994 |
|
08-Jun-1998 |
Bruce Evans <bde@FreeBSD.org> |
Pass lists of possible root devices and their names up to the machine-independent code and try mounting the devices in the lists instead of guessing alternative root devices in a machine- dependent way. autoconf.c: Reject preposterous slice numbers instead of silently converting them to COMPATIBILITY_SLICE. Don't forget to force slice = COMPATIBILITY_SLICE in the floppy device name. Eliminated most magic numbers and magic device names in setroot(). Fixed dozens of style bugs. vfs_conf.c: Put the actual root device name instead of "root_device" in the mount struct if the actual name is available. This is useful after booting with -s. If it were set in all cases then it could be used to do mount(8)'s ROOTSLICE_HUNT and fsck(8)'s hotroot guess better.
|
#
ecbb00a2 |
|
07-Jun-1998 |
Doug Rabson <dfr@FreeBSD.org> |
This commit fixes various 64bit portability problems required for FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change. The prototype FreeBSD/alpha machdep will follow in a couple of days time.
|
#
8b20504f |
|
23-Feb-1998 |
Bruce Evans <bde@FreeBSD.org> |
Forward declare more structs that are used in prototypes here - don't depend on <sys/types.h> forward declaring common ones.
|
#
44be5ce8 |
|
21-Jan-1998 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Add prototypes for swi_vm, setsoftvm, schedsoftvm, and splsoftvm that were missed when I originally committed the bus dma code.
|
#
6f70df15 |
|
14-Jan-1998 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Move almost all the ntp related stuff from kern_clock.c to kern_ntptime.c. The only bit left over is that which is executed in all calls to hardclock(). Various cleanups and staticizing along the road.
|
#
821b78a3 |
|
10-Jan-1998 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Whoops. softclock is called from doreti_swi as well. Abandon call from hardclock().
|
#
a50ec505 |
|
10-Jan-1998 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Effect the divorce of kern_clock.c and kern_timeout.c (which was repository copied from kern_clock.c)
|
#
cd36a479 |
|
23-Dec-1997 |
Nate Williams <nate@FreeBSD.org> |
- Add prototype for adjust_timeout_calltodo(). Submitted/forgotten by: Ken Key <key@cs.utk.edu>
|
#
b361bff5 |
|
21-Nov-1997 |
Bruce Evans <bde@FreeBSD.org> |
Fixed setting of `safepri'. It should be SWI_AST_MASK most of the time, but was left at 0. This caused the "can't happen" case in splz_swi to happen for panics when tsleep() calls splx(safepri) and there is a SWI_AST pending. This was harmless because the the error handling happens to be right. Debugging this was tricky because debugger traps force SWI_AST_MASK on in `cpl'.
|
#
6881d20f |
|
21-Nov-1997 |
Bruce Evans <bde@FreeBSD.org> |
Const poisoning from ks_shortdesc.
|
#
d44c88d9 |
|
18-Nov-1997 |
Bruce Evans <bde@FreeBSD.org> |
Staticized boot().
|
#
f5118257 |
|
10-Oct-1997 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove a bunch of unused malloc types. A couple of potential bogons flagged. Various prototypes changed.
|
#
5957b261 |
|
21-Sep-1997 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
buf.h: Change the definition of a buffer queue so that bufqdisksort can properly deal with bordered writes. Add inline functions for accessing buffer queues. This should be considered an opaque data structure by clients. callout.h: New callout implementation. device.h: Add support for CAM interrupts. disk.h: disklabel.h: tqdisksort->bufqdisksort kernel.h: Add new configuration entries for configuration hooks and calling cpu_rootconf and cpu_dumpconf. param.h: Add a priority for sleeping waiting on config hooks. proc.h: Update for new callout implementation. queue.h: Add TAILQ_HEAD_INITIALIZER from NetBSD. systm.h: Add prototypes for cpu_root/dumpconf, splcam, splsoftcam, etc..
|
#
d9f190c8 |
|
16-Sep-1997 |
Bruce Evans <bde@FreeBSD.org> |
Removed declaration of nonexistent function fuibyte(). Sorted some declarations. Fixed missing __P(())'s. Removed `timeout_func_t (pointer to timeout function) typedef. It was mainly used in bogus casts. The more useful `timeout_t' (timeout function) typedef should be used instead. Cleaned up callout declarations and comments.
|
#
41fadeeb |
|
07-Sep-1997 |
Bruce Evans <bde@FreeBSD.org> |
Removed yet more vestiges of config-time swap configuration and/or cleaned up nearby cruft.
|
#
1e3c1197 |
|
07-Sep-1997 |
Bruce Evans <bde@FreeBSD.org> |
Some staticized variables were still declared to be extern.
|
#
77625cfe |
|
19-Aug-1997 |
Steve Passe <fsmp@FreeBSD.org> |
Moved splq() to isa/ipl_funcs.c for SMP only. This is in preperation for moving all cpl accesses behind a critical region lock.
|
#
5230cfd2 |
|
08-Aug-1997 |
Julian Elischer <julian@FreeBSD.org> |
Use up 4 precious bytes to give the kernel a hook to support hardware watchdogs. The actual functions would be supplied in an LKM or a linked file, but they need to hang off something.
|
#
48a09cf2 |
|
08-Aug-1997 |
John Dyson <dyson@FreeBSD.org> |
VM86 kernel support. Work done by BSDI, Jonathan Lemon <jlemon@americantv.com>, Mike Smith <msmith@gsoft.com.au>, Sean Eric Fagan <sef@kithrup.com>, and probably alot of others. Submitted by: Jnathan Lemon <jlemon@americantv.com>
|
#
43ba5428 |
|
21-Jul-1997 |
Bruce Evans <bde@FreeBSD.org> |
Store SWI_MASK in a variable so that LKMs can use it portably.
|
#
d1bd3834 |
|
31-May-1997 |
Peter Wemm <peter@FreeBSD.org> |
Add prototypes for the spl* funcs and add externs for *_imask. Leaving the *_imask down in the isa machine dependent layers requires code changes to all pci drivers, but the interrupt registration mechanism is in flux at the moment. These can go away when the interface is cleaned and settled.
|
#
aa9d6654 |
|
28-May-1997 |
Peter Wemm <peter@FreeBSD.org> |
forward declare struct timeval so that pcibus.c doesn't get a warning. (it doesn't #include <sys/time.h> since it doesn't need it)
|
#
6875d254 |
|
22-Feb-1997 |
Peter Wemm <peter@FreeBSD.org> |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
1130b656 |
|
14-Jan-1997 |
Jordan K. Hubbard <jkh@FreeBSD.org> |
Make the long-awaited change from $Id$ to $FreeBSD$ This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
885bd8e4 |
|
30-Dec-1996 |
John Hay <jhay@FreeBSD.org> |
Update our kernel ntp code to the latest from David Mills. The main change is the addition of the FLL code, which is used by the latest versions of xntpd. The kernel PPS code is also updated, although I can't test that yet.
|
#
bcb2e443 |
|
12-Oct-1996 |
Bruce Evans <bde@FreeBSD.org> |
Moved declarations of tsleep() and wakeup() from proc.h to systm.h so that proc.h doesn't have to be included so often.
|
#
2dab355e |
|
12-Oct-1996 |
Bruce Evans <bde@FreeBSD.org> |
Removed verbose comment about `securelevel'. It just duplicated part of init.8 except for bugs and anachronisms.
|
#
dc927d0c |
|
29-Sep-1996 |
Bruce Evans <bde@FreeBSD.org> |
Started unspamming <sys/systm.h>. Don't include <machine/stdarg.h> to get the declaration of va_list; just use _BSD_VA_LIST. Fixed the 2 places that need <machine.stdarg.h> but didn't include it explicitly.
|
#
fc0b1dbf |
|
13-Sep-1996 |
Bruce Evans <bde@FreeBSD.org> |
Don't use __dead in the kernel. It was an obfuscation for gcc >= 2.5 and a no-op for gcc >= 2.6.
|
#
d98f2d7a |
|
31-Aug-1996 |
Bruce Evans <bde@FreeBSD.org> |
cpu_boot() always returns, so don't declare it as __dead*.
|
#
e0d898b4 |
|
21-Aug-1996 |
Julian Elischer <julian@FreeBSD.org> |
Some cleanups to the callout lists recently added. note that at_shutdown has a new parameter to indicate When during a shutdown the callout should be made. also add a RB_POWEROFF flag to reboot "howto" parameter.. tells the reboot code in our at_shutdown module to turn off the UPS and kill the power. bound to be useful eventually on laptops
|
#
ad4240fe |
|
18-Aug-1996 |
Julian Elischer <julian@FreeBSD.org> |
move all functions related to shutting down to one file called kern_shutdown.c note: I couldn't see anything machine dependant in the functions boot() and dumpsys() which were in machdep.c I have left a prototype for cpu_boot() which would go in machdep.c, but I have nothing to put in it. Iexpect others will let me know in no uncertain ways that this or that is machine dependant and should be there, but I'll way for that to happen.. :) I haven't actually taken the functions OUT of machdep or anywhere else yet.. I'm checking in this file so others can have a look at it and comment. SO PLEASE DO COMMENT! I am also (in another checkin) addinf a man(9) page for the new at_shotdown().. er freudian slip there.. at_shutdown() call so have a look at that (and at_exit and at_fork as well) and feed me comments.. I'll heck in the changes to make these (shutdown) changes active tomorrow if no-one objects too strongly..
|
#
a111a7f8 |
|
01-Jul-1996 |
Bruce Evans <bde@FreeBSD.org> |
Moved declarations of non-cpu things from <machine/cpufunc.h> to better places.
|
#
6ddbf1e2 |
|
07-May-1996 |
Gary Palmer <gpalmer@FreeBSD.org> |
Clean up various compiler warnings. Most (if not all) were benign Reviewed by: bde
|
#
ae58fb1c |
|
07-Apr-1996 |
Bruce Evans <bde@FreeBSD.org> |
systm.h: Moved declaration of bootverbose to a better place. It isn't machine-dependent. proc.h: Moved declaration of cpu_fork() to a better place. Only its implementation is machine-dependent.
|
#
02e2c406 |
|
11-Mar-1996 |
Peter Wemm <peter@FreeBSD.org> |
Import 4.4BSD-Lite2 onto the vendor branch, note that in the kernel, all files are off the vendor branch, so this should not change anything. A "U" marker generally means that the file was not changed in between the 4.4Lite and Lite-2 releases, and does not need a merge. "C" generally means that there was a change. [new sys/syscallargs.h file, to be "cvs rm"ed]
|
#
1a52d4a8 |
|
10-Mar-1996 |
Jeffrey Hsu <hsu@FreeBSD.org> |
Merge in Lite2: add function prototype. Note: Lite2 struct sysent changes need to go in FreeBSD sysent.h instead. Leave out prototype for nosys() until convert makesyscalls.sh over to Lite2 format, if we ever do so. Reviewed by: davidg & bde
|
#
6c5e9bbd |
|
30-Jan-1996 |
Mike Pritchard <mpp@FreeBSD.org> |
Fix a bunch of spelling errors in the comment fields of a bunch of system include files.
|
#
7db797de |
|
28-Jan-1996 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Add LIST_INSERT_BEFORE and TAILQ_INSERT_BEFORE. These are used by the new eisaconf code.
|
#
6b3f8066 |
|
16-Jan-1996 |
Bruce Evans <bde@FreeBSD.org> |
Moved BCD declarations to the correct header (libkern.h). Fixed BCD declarations. They didn't match their definitions... libkern.h, bcd.c: KNFised. `indent' worked 99% perfectly on bcd.c. It worked 99% _imperfectly_ on subr_prf.c.
|
#
6ccb06d3 |
|
16-Jan-1996 |
Bruce Evans <bde@FreeBSD.org> |
Removed declarations of nonexistent functions copyoutstr(), fuiword() and suiword(). They are no longer referenced in the machine-independent code (I think fuiword() and suiword() were only used by old versions of ptrace(), and copyoutstr() by old versions of exec). Added `const' where appropriate. Changed u_int to size_t' where appropriate. Named last arg of copystr() and copyinstr() better.
|
#
791d77e0 |
|
15-Jan-1996 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Get rid of two and a half printf in the kernel. Add more features to the one remaining to handle the job: + signed quantity. # alternate format - left padding * read width as next arg. n numeric in (argument specified) default radix. Fix the DDB debugger to use these. Use vprintf in debug routine in pcvt. The warnings from gcc may become more wrong and intolerable because of this. Warning: I have not checked the entire source for unsupported or changed constructs, but generally belive that there are only a few. Suggested by: bde
|
#
2898c294 |
|
15-Jan-1996 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make bin2bcd and bcd2bin global macroes instead of having local implementations all over the place.
|
#
99468982 |
|
13-Jan-1996 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Avoid bzero becomming a common symbol in all .o files.
|
#
a1d2540f |
|
01-Jan-1996 |
Peter Wemm <peter@FreeBSD.org> |
Fix the reversed source and dest args to bcopy() in the kernel space sysctl handler (ouch!) Add a "const" qualifier to the source of the copyin() and copyout() functions - the other const warning in kern_sysctl.c was silenced when copyout was declared as having a const source.. (which it is)
|
#
d079690c |
|
28-Dec-1995 |
David Greenman <dg@FreeBSD.org> |
Made bzero a function vector and added a 586/686 optimized version of bzero. Deprecated blkclr (removed it). Removed some old cruft from cpufunc.h. The optimized bzero was submitted by Torbjorn Granlund <tege@matematik.su.se> The kernel adaption and other changes by me.
|
#
23085add |
|
09-Nov-1995 |
Bruce Evans <bde@FreeBSD.org> |
Finished nuking enxio, enodev and enoioctl.
|
#
ad7507e2 |
|
07-Oct-1995 |
Steven Wallace <swallace@FreeBSD.org> |
Remove prototype definitions from <sys/systm.h>. Prototypes are located in <sys/sysproto.h>. Add appropriate #include <sys/sysproto.h> to files that needed protos from systm.h. Add structure definitions to appropriate files that relied on sys/systm.h, right before system call definition, as in the rest of the kernel source. In kern_prot.c, instead of using the dummy structure "args", create individual dummy structures named <syscall>_args. This makes life easier for prototype generation.
|
#
58440970 |
|
07-Oct-1995 |
Steven Wallace <swallace@FreeBSD.org> |
Remove compat int from wait_args structure since no longer used or desired.
|
#
2b14f991 |
|
28-Aug-1995 |
Julian Elischer <julian@FreeBSD.org> |
Reviewed by: julian with quick glances by bruce and others Submitted by: terry (terry lambert) This is a composite of 3 patch sets submitted by terry. they are: New low-level init code that supports loadbal modules better some cleanups in the namei code to help terry in 16-bit character support some changes to the mount-root code to make it a little more modular.. NOTE: mounting root off cdrom or NFS MIGHT be broken as I haven't been able to test those cases.. certainly mounting root of disk still works just fine.. mfs should work but is untested. (tomorrows task) The low level init stuff includes a total rewrite of init_main.c to make it possible for new modules to have an init phase by simply adding an entry to a TEXT_SET (or is it DATA_SET) list. thus a new module can be added to the kernel without editing any other files other than the 'files' file.
|
#
064d4191 |
|
04-Jul-1995 |
David Greenman <dg@FreeBSD.org> |
Killed "maxmem" declaration. We don't have that variable in FreeBSD.
|
#
9b2e5354 |
|
30-May-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Remove trailing whitespace.
|
#
a401ebbe |
|
13-May-1995 |
David Greenman <dg@FreeBSD.org> |
Changed swap partition handling/allocation so that it doesn't require specific partitions be mentioned in the kernel config file ("swap on foo" is now obsolete). From Poul-Henning: The visible effect is this: As default, unless options "NSWAPDEV=23" is in your config, you will have four swap-devices. You can swapon(2) any block device you feel like, it doesn't have to be in the kernel config. There is a performance/resource win available by getting the NSWAPDEV right (but only if you have just one swap-device ??), but using that as default would be too restrictive. The invisible effect is that: Swap-handling disappears from the $arch part of the kernel. It gets a lot simpler (-145 lines) and cleaner. Reviewed by: John Dyson, David Greenman Submitted by: Poul-Henning Kamp, with minor changes by me.
|
#
0023507d |
|
01-May-1995 |
David Greenman <dg@FreeBSD.org> |
Added prototype for memcpy(). Changed size argument of "b" functions to size_t.
|
#
6824b322 |
|
03-Apr-1995 |
David Greenman <dg@FreeBSD.org> |
Added prototype for phashinit() function.
|
#
76e2642c |
|
01-Apr-1995 |
Joerg Wunsch <joerg@FreeBSD.org> |
subr_prf.c used to provide an exported function kprintf(), but only had a private declaration for it. Declare the function publically instead.
|
#
3aa12267 |
|
28-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) that I didn't notice when I fixed "all" such warnings before.
|
#
5edd0e15 |
|
16-Mar-1995 |
Poul-Henning Kamp <phk@FreeBSD.org> |
<libkern/libkern.h> has moved to <sys/libkern.h> (repository copy). Since /usr/include/libkern doesn't and shouldn't exist, this is the least evil way to handle this.
|
#
b5e8ce9f |
|
16-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
8ede9d03 |
|
13-Feb-1995 |
Poul-Henning Kamp <phk@FreeBSD.org> |
YFfix. added int susword __P((void *base, int word));
|
#
3d05297c |
|
09-Oct-1994 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Cosmetics. (sort of) Added 19 prototypes.
|
#
f86eaaca |
|
02-Oct-1994 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Prototypes, prototypes and even more prototypes. Not quite done yet, but getting closer all the time.
|
#
a58a9ef8 |
|
18-Sep-1994 |
Bruce Evans <bde@FreeBSD.org> |
Remove "#ifdef notdef" around declaration of fuibyte(). fuibyte() _is_ actually used. Remove "#ifdef __GNUC__" around some __dead* declarations. __dead* is harmless if __GNUC__ is not defined. Uniformize idempotency #ifdef.
|
#
d8f10c11 |
|
15-Sep-1994 |
Bruce Evans <bde@FreeBSD.org> |
Add some prototypes.
|
#
c9177dd5 |
|
24-Aug-1994 |
Søren Schmidt <sos@FreeBSD.org> |
Changes preparing for iBCS support Reviewed by: Submitted by:
|
#
af9da405 |
|
20-Aug-1994 |
Paul Richards <paul@FreeBSD.org> |
Made them all idempotent. Reviewed by: Submitted by:
|
#
f23b4c91 |
|
18-Aug-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Fix up some sloppy coding practices: - Delete redundant declarations. - Add -Wredundant-declarations to Makefile.i386 so they don't come back. - Delete sloppy COMMON-style declarations of uninitialized data in header files. - Add a few prototypes. - Clean up warnings resulting from the above. NB: ioconf.c will still generate a redundant-declaration warning, which is unavoidable unless somebody volunteers to make `config' smarter.
|
#
0e427608 |
|
13-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Made the kernel compile cleanly with gcc 2.6.0. Thanks go to Bruce Evans for suggesting a method to detect various versions of gcc.
|
#
a03460f1 |
|
05-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Converted 'vmunix' to 'kernel'.
|
#
35b0a40a |
|
04-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Nuke redefinition of insque and remque.
|
#
3c4dd356 |
|
02-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Added $Id$
|
#
26f9a767 |
|
25-May-1994 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch. Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
|
#
df8bae1d |
|
24-May-1994 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
BSD 4.4 Lite Kernel Sources
|