Age | Commit message (Collapse) | Author |
|
This type allows the use of either printf-based or log-based functions
when reporting information.
|
|
The new build system, called xbuild, is a minimalistic kbuild-like
make-based build system, also using kconfig for scalable configurations.
|
|
Commit b2ad7d862388558556288877a65f2797528168f4 made the switch to
initialization operations, but introduced a regression by not creating
an init operation for a compiled test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The shell must be able to register commands early. As a result, it's now
initialized in two steps, one of which starts the shell thread.
|
|
|
|
|
|
The new turnstile module provides priority propagation capable sleep
queues, tightly coupled with the scheduler, and can be used to implement
synchronization facilities with priority inheritance.
|
|
This module provides simple generic sleep queues that can be used to
implement higher level synchronization facilities such as mutexes and
condition variables.
|
|
Provide cross-processor function calls.
|
|
This module provides multiprocessor scalable reference counters, based
on Refcache, as described in the RadixVM paper.
|
|
Relocating percpu data is actually tricky, for the same reason relocating
memory in general is. There may be pointers to such variables which then
become invalid. Instead, keep using the percpu section as the percpu area
for the BSP and store the content of the percpu section in dedicated
kernel virtual memory. In addition, remove the notification kludge from
the x86 cpu module.
|
|
|
|
|
|
This module is currently unused and it is likely that a radix tree won't
be easy to use as a generic library in the kernel. This means the code
is very likely to return, tightly integrated as part of other modules.
|
|
|
|
|
|
|
|
Start application processors once the kernel is completely initialized,
right before starting the scheduler. This simplifies the procedure with
regard to inter-processor pmap updates.
|
|
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.
|
|
This module implements thread pools to concurrently process queues of
deferred works.
|
|
|
|
This module provides lockless synchronization so that reads can safely occur
during updates, without holding a lock. It is based on passive serialization
as described in US patent 4809168, and achieves a goal similar to Linux RCU
(Read-Copy Update).
|
|
Make cpu_count() available on kernel entry so that modules (and in particular
the thread module) can allocate per-CPU resources from the BSP. This makes
the initial state stable and simplifies code (no need to check for a transient
early initialization state).
|
|
Don't involve the pmap module directly, as there could be others. Make
the cpu module completely responsible for synchronizing all processors
on kernel entry so that interrupts can be explicitely enabled there.
|
|
In practice, this merely means an idle thread now exists for each CPU,
and threads can be preempted and rescheduled on each of them. There is
currently no migration between processors.
|
|
|
|
This change adds periodic timer interrupt reporting to the thread
module, basic thread selection, and context switching. It currently
only applies to the main processor. The x86/tcb module has been
drastically simplified as a side effect.
|
|
Three new modules are added :
- kern/task: Tasks are thread groups and resource containers for their
threads.
- kern/thread: The well known scheduling unit.
- x86/tcb: The architecture specific thread control block.
The kernel currently loads a single thread context on the main processor.
|
|
|