Age | Commit message (Collapse) | Author |
|
This type allows the use of either printf-based or log-based functions
when reporting information.
|
|
The shell module has been "objectified" and now supports multiple
instances with shareable command sets.
|
|
|
|
|
|
|
|
This reverts commit d18d0e85596f90e0bd597b33d58209d0b3973c95.
|
|
The new build system, called xbuild, is a minimalistic kbuild-like
make-based build system, also using kconfig for scalable configurations.
|
|
|
|
|
|
|
|
This makes sure symbols referenced by assert uses may not be generated
if unused. The recently introduced __unused macro is used to suppress
compiler warnings resulting from this change.
|
|
|
|
Move the page properties into the new x86/page module, and the virtual
memory layout macros into the x86/pmap module.
|
|
|
|
|
|
|
|
This turns limits.h into a standard header.
|
|
This turns assert.h into a standard header.
|
|
Make kernel code obtain definitions for the printf family of functions
through the inclusion of the standard stdio.h header.
|
|
The printk functions are close enough to the printf ones to bear the
same names.
|
|
|
|
|
|
Instead of mixing standard headers and internal redefinitions of standard
types, completely rely on the compiler for what is guaranteed for a free
standing environment. This results in the removal of kern/stddef.h and
kern/stdint.h. The kern/types.h header is reintroduced for the different
(and saner) purpose of defining types not specified in standard C,
namely ssize_t for now.
|
|
That macro was left over during the slab allocator rework.
|
|
This is mostly done for the machine-independent part.
|
|
Make per-page private data generic, provide accessors, and make the
slab allocator use them.
|
|
Allocating slabs from the page allocator only is likely to cause
fragmentation. Instead, allocate larger-than-page slabs from
kernel virtual memory, and page-sized slabs from the page allocator.
|
|
This change was done using astyle, with a few manual editing here and
there.
|
|
The main impact of the direct physical mapping on the kmem module is the
slab size computation. The page allocator requires the allocation size
to be a power-of-two above the page size since it uses the buddy memory
allocation algorithm.
Custom slab allocation functions are no longer needed since the only
user was the kentry area, which has been removed recently.
The KMEM_CACHE_NOCPUPOOL flag is also no longer needed since CPU pools,
which are allocated from a kmem cache, can now always be allocated out
of the direct physical mapping.
|
|
Make allocation functions accept and return pointers instead of integers
for convenience.
|
|
Make functions accept and return pointers instead of integers. Most
users of the kernel allocator directly use the returned addresses.
Pointers make that more practical.
|
|
Make sure CPU pools are always accessed from their owning processor.
|
|
|
|
|
|
|
|
|
|
|
|
This reverts a change brought when reworking slab lists handling that made
the allocator store slabs in LIFO order, whatever their reference count.
While it's fine for free slabs, it actually increased fragmentation for
partial slabs.
|
|
This change increases clarity.
|
|
Don't enforce strong ordering of partial slabs. Separating partial slabs
from free slabs is already effective against fragmentation, and sorting
would sometimes cause pathological scalability issues. In addition, store
new slabs (whether free or partial) in LIFO order for better cache usage.
|
|
|
|
As it's done for other modules, this separation makes the public interface
easy to identify.
|
|
|
|
|
|
|
|
|
|
Instead of using a red-black tree, rely on the VM system to store kmem
specific private data.
|
|
|
|
|
|
|