Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
Now that event counters have been replaced with system counters, drop
the convention of naming the counter as the event it tracks.
|
|
The syscnt module supports more generic counters, in addition to atomic
access from any context on any architecture.
|
|
|
|
|
|
|
|
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.
|
|
Using a single header for all types causing inclusion circular
dependencies isn't very elegant and doesn't scale.
|
|
The function is described not to allow mapping creation on virtual
addresses for which a valid mapping already exists. Add an assertion
to make sure that's the case.
|
|
Complete what was started in commit 39c13b3b84b34e0938220126c8f147d2b0b6ac89.
|
|
This macro is used to build kernel thread names.
|
|
Talk about entries "per page table" instead of "per page table page".
This is made obvious by the new PAE hierarchy, where the root page
table isn't a page.
|
|
This is mostly done for the machine-independent part.
|
|
Instead of presenting PAE mode as a two-level hierarchy (the same as
non-PAE 32-bits) with a page directory 4 pages wide, present it as a
three-level hierarchy. The purpose of this change is to break the
requirement of the page directory being 4 contiguous pages, which
is likely to fail because of fragmentation.
|
|
|
|
Update the test_vm_page_fill module accordingly. The vm_kmem module
needs to be reworked in order to correctly handle failures.
|
|
This change was done using astyle, with a few manual editing here and
there.
|
|
Rename this function to biosmem_directmap_end, to better reflect what it
actually does.
|
|
This module is probably the most impacted by the direct physical
mapping.
First, it establishes the direct physical mapping before paging is
enabled, and uses the largest available page size when doing so.
In addition, the recursive mapping of PTEs is removed, since all
page table pages are allocated from the direct physical mapping.
This changes the way mapping requests are processed.
The ability to access any page table page at any time removes the
need for virtual addresses reserved for temporary mappings.
Since it's now perfectly possible to return physical address 0 for
a kernel mapping, change the interface of the pmap_extract function
and rename it to pmap_kextract to stress the fact that it should
only be used for kernel mappings.
|
|
This kind of strict accounting can lead to a kind of thrashing where one
or more tables can get allocated and released very frequently. For now,
take the naive approach of not freeing page table pages until the complete
tree is torn down.
Remove the now irrelevant x86_pmap_remove_ptp test module.
|
|
|
|
Use the term "skip" instead of "shift" to align with radix tree
terminology.
|
|
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.
|
|
Application processors should never initialize data that are shared with
other processors. In this case, it leaded to a race which could make
pmap_update access uninitialized percpu data. But, since percpu areas
are initially copies of the percpu section (which is the percpu area of
the main processor), uninitialized percpu variables would actually have
valid values, those inherited from the main processor. This would result
in hard-to-debug data corruption.
|
|
|
|
- declare CPU descriptors as percpu variables
- make the percpu segment register point to the percpu area instead of
the CPU descriptor
- remove the ugly accessors for the local CPU descriptor, pmap and TCB
and use percpu variables for them instead
- implement the cpu_local accessors as described in the percpu
documentation
|
|
Having per-processor requests in each oplist doesn't scale with the
number of processors. Instead, make these arrays of requests
per-processor instead of per-thread and make pmap_update() acquire
the local array.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|