summaryrefslogtreecommitdiff
path: root/kern/kernel.c
AgeCommit message (Collapse)Author
2019-05-22Add a log print function type for information reportingRichard Braun
This type allows the use of either printf-based or log-based functions when reporting information.
2017-09-21New build systemRichard Braun
The new build system, called xbuild, is a minimalistic kbuild-like make-based build system, also using kconfig for scalable configurations.
2017-07-21kern/kernel: fix test startingRichard Braun
Commit b2ad7d862388558556288877a65f2797528168f4 made the switch to initialization operations, but introduced a regression by not creating an init operation for a compiled test.
2017-07-13Switch to initialization operationsRichard Braun
2017-07-01kern/shutdown: new moduleRichard Braun
2017-06-24vm/vm_page: implement the vm_page_info shell commandRichard Braun
2017-06-14kern/syscnt: new syscnt_info shell commandRichard Braun
2017-06-14Initialize the shell module laterRichard Braun
2017-06-11kern/log: serialize the start of the log and shell threadsRichard Braun
2017-06-10kern/log: new moduleRichard Braun
2017-05-31kern/shell: separate initialization into two stepsRichard Braun
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.
2017-05-28kern/shell: new moduleRichard Braun
2017-03-14Use the X15 namespace consistently for macros defined by autoconfRichard Braun
2017-03-04kern/{thread,turnstile}: implement priority inheritanceRichard Braun
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.
2017-03-04kern/sleepq: new moduleRichard Braun
This module provides simple generic sleep queues that can be used to implement higher level synchronization facilities such as mutexes and condition variables.
2014-10-09kern/xcall: new moduleRichard Braun
Provide cross-processor function calls.
2014-09-20kern/sref: new moduleRichard Braun
This module provides multiprocessor scalable reference counters, based on Refcache, as described in the RadixVM paper.
2014-09-05kern/percpu: fix setup of BSP percpu areaRichard Braun
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.
2014-08-30kern/kernel: move call to vm_page_info()Richard Braun
2014-08-11kern/kernel: remove unneeded header inclusionRichard Braun
2014-05-24kern/rdxtree: remove moduleRichard Braun
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.
2014-05-20Add basic internal test frameworkRichard Braun
2014-05-14Print vm_page info at the end of kernel bootstrapRichard Braun
2014-05-14Improve the description of multi-processor setupRichard Braun
2014-01-14Rework bootstrappingRichard Braun
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.
2013-06-09kern/rdxtree: new moduleRichard Braun
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.
2013-06-03kern/work: new moduleRichard Braun
This module implements thread pools to concurrently process queues of deferred works.
2013-05-19kern/cpumap: new moduleRichard Braun
2013-05-15kern/llsync: new moduleRichard Braun
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).
2013-03-14kern/{kernel,thread}: rework initializationRichard Braun
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).
2012-12-12Simplify requirements on interrupts during initializationRichard Braun
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.
2012-12-12kern/thread: support multiprocessor schedulingRichard Braun
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.
2012-12-11Adjust interrupts configuration on kernel entryRichard Braun
2012-11-19kern/thread: preliminary scheduling implementationRichard Braun
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.
2012-11-09Implement preliminary thread contextRichard Braun
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.
2012-09-30Initial commitRichard Braun