Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Define a new struct pmap_tmp_mapping to associate a lock with each region
reserved for temporary mappings.
|
|
|
|
|
|
|
|
|
|
When the radix value is 6, always typedef to unsigned long long.
|
|
|
|
|
|
|
|
There is currently one kernel map only.
|
|
|
|
|
|
|
|
Add a processor bitmap per physical map to determine processors on which
a pmap is loaded, so that only those processors receive update IPIs. In
addition, implement lazy TLB invalidation by not loading page tables
when switching to a kernel thread. To finish with, the thread module now
calls pmap_load unconditionally without making assumptions about pmap
optimizations.
|
|
Reduce the amount of pmap updates by performing one global update once
page tables have been changed.
|
|
Use a threshold to determine whether TLB entries should be invalidated
indivudally or through a global TLB flush.
|
|
This function completely flushes the TLB, including global pages.
|
|
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.
|
|
This change is merely a slight interface modification to get rid of a
function that shouldn't be exported and replace it with the true entry
point for setting physical mapping protection.
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.
|
|
|
|
|
|
Including "lock" in the name of these functions is misleading, since there
is no lock object per se.
|
|
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.
|
|
Radix tree operations must be done with preemption enabled since they might
allocate memory. Use a separate mutex to synchronize access to the tree.
|
|
A tree node is larger than 512 bytes on a 64-bit machine. Initializing it
on each allocation can get noticeably slow in case there is hysteresis.
|
|
|
|
|
|
|
|
This module implements radix trees, a data structure consisting of a tree
of arrays which can store many items while guaranteeing a small maximum
tree height.
|
|
Move scheduling interrupt functions from the tcb module to the cpu module.
In addition, rename the related trap and functions to avoid mentioning
"rescheduling", as it just makes descriptions more confusing. Instead,
include the name of the module that makes use of this interrupt.
|
|
This change slightly affects the interface by making users directly pass
work objects.
|
|
This module implements thread pools to concurrently process queues of
deferred works.
|
|
This function dumps the stack trace of a thread from its TCB. In order to
do that, the base pointer is now included in the TCB, along with the stack
and instruction pointers.
|
|
|
|
|
|
|
|
Make passing attributes and passing a thread name mandatory.
|