Age | Commit message (Collapse) | Author |
|
|
|
This type allows the use of either printf-based or log-based functions
when reporting information.
|
|
Instead of combining assertions and checking into single functions,
rework those into pure checking functions usable with assert().
Those functions were introduced because of warnings about unused
functions/variables caused by an earlier implementation of assert().
|
|
The shell module has been "objectified" and now supports multiple
instances with shareable command sets.
|
|
Note that this commit changes the order of some list operations without
triggering warnings.
|
|
Use standard errno codes. This change also adds strerror to string.h.
|
|
The new build system, called xbuild, is a minimalistic kbuild-like
make-based build system, also using kconfig for scalable configurations.
|
|
The kernel_map/kernel_pmap/kernel_task/etc... names were reused as they
were in the Mach source code. They've been a (mostly harmless) long-standing
violation of the coding rules.
|
|
The real problem actually only applies to "max" names, for which the
value is ambiguous, as "max" usually implies the value is included in
the associated range, which is not the case for these macros.
|
|
|
|
|
|
Move the page properties into the new x86/page module, and the virtual
memory layout macros into the x86/pmap module.
|
|
|
|
|
|
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.
|
|
|
|
I was actually not satisfied enough with the "solution" of commit
a90d38274ec139ea8d593373cecccbc59e8fb3f6, so let's really fix this
issue.
|
|
The vm_map_link function has a very complex and bug-prone interface, and
bugs were bound to happen there. This map implementation was always meant
to be temporary anyway, so "fix" the problem at the calling sites only.
|
|
This is mostly done for the machine-independent part.
|
|
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.
|
|
One of the side effects of a direct physical mapping is that it makes
the kentry area, an area of virtual memory of fixed size reserved at
boot time for kernel map entries, irrelevant.
|
|
Make allocation functions accept and return pointers instead of integers
for convenience.
|
|
Update interface so that it's closer to the standard mmap() call. Fix
some offset declarations as uint64_t.
|
|
Although currently not very useful since all pmap operations are global,
this change enables the precise targeting of processors when maintaining
the consistency of physical maps. It is essential to a scalable virtual
memory system where non-overlapping mapping operations can be processed
concurrently.
It also temporarily removes some functionalities such as the ability to
manipulate non-kernel pmaps and lazy TLB invalidation. These will be
added again in the future.
|
|
|
|
Remove the pmap_klimit, pmap_kgrow, pmap_kenter and pmap_kremove functions
from the pmap interface. The regular pmap_enter and pmap_remove functions
are now used instead. The kernel physical map is handled almost exactly
like user physical maps, except shared root page table pages need special
care. The pmap_kenter and pmap_kremove functions still exist but are private
to the pmap implementation.
|
|
|
|
The original idea was to separate physical page allocation from page list
management, but it doesn't make much sense any more.
|
|
|
|
Similar to pmap_protect and pmap_extract, pmap_update is meant to handle
both kernel and regular pmap updates.
|
|
As it was done for pmap_protect, replace a kernel-specific call with one
that can handle both the kernel and regular pmaps.
The new function isn't complete yet and cannot handle physical maps that
aren't the kernel pmap or the currently loaded pmap.
|
|
Add vm/vm_adv.h for VM_ADV_xxx advice macros, and directly use
VM_{ADV,INHERIT,PROT}_xxx macros in the "packed" format used for mapping
requests and in map entries. This allows simpler comparisons between
stored flags and user provided values.
|
|
Use slightly shorter names, add WILLNEED and DONTNEED, and update users.
|
|
|
|
Map entry merging would not consider requests with objects, but it would
merge two neighbor entries without checking their object. Make checking the
object of both entries and requests part of the generic compatibility test.
|
|
|
|
|
|
|
|
|
|
|
|
It is expected some future processes will require the kernel to have its own
separate low level address space instead of always using the high part of
user tasks. It also simplifies collecting statistics and managing other
kernel specific data in a generic way.
In addition, this change removes some duplicated boot data and makes boot
code use more virtual to physical translations.
|
|
|
|
|
|
|
|
|