summaryrefslogtreecommitdiff
path: root/kern
AgeCommit message (Collapse)Author
2018-08-12kern/thread: make thread-specific data optionalRichard Braun
2018-08-12kern/mutex/mutex_plain: fix macro namesRichard Braun
2018-08-12kern/rcu: explain the need for separate work/reader window flipsRichard Braun
2018-07-31kern/rcu: add TODO entryRichard Braun
2018-07-30kern/symbol: work around clang aggressive optimization behaviorRichard Braun
2018-07-30kern/log: minor changeRichard Braun
Insignificant coding style fix.
2018-07-30Rework assertive functionsRichard Braun
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().
2018-07-25kern/{fmt,shell}: update from upstreamRichard Braun
The shell module has been "objectified" and now supports multiple instances with shareable command sets.
2018-07-10kern/sleepq: make disabling interrupts optionalRichard Braun
Commit d2a89f7f6e976d022527c2a5a1c75268aab8cd49 changed sleep queues to allow semaphores to be signalled from interrupt handlers, but this implied disabling interrupts for all synchronization objects, and most of them do not require interrupts to be disabled. The sleep queue interface is augmented with interrupt-related versions.
2018-07-10kern/panic: remove initialization operationRichard Braun
Maintaining correct dependencies for the panic function is too complicated. It may be used very early, but would depend on the console, which is normally available quite late during initialization. Instead, the behavior of panic is now "best effort", i.e. if called at a time where it works, good, otherwise, the behavior is undefined, but should result in a freeze or a reset most of the time.
2018-07-08kern/latomic: fix circular inclusionsRichard Braun
2018-07-07kern/thread: add thread name accessorRichard Braun
2018-07-07x86: refactor interrupt/exception handlingRichard Braun
This commit merges the trap module into the cpu module in order to solve interface problems caused by the degree to which those two modules are actually coupled, i.e. it just makes a lot more sense to not separate them at all. The cpu module is also internally reworked with improved object and method definitions, that clarify the double fault handling code, among other things.
2018-06-26Merge branch 'symtab'Richard Braun
2018-06-26x86/strace: rework to use the embedded symbol tableRichard Braun
2018-06-26Add support for an embedded symbol tableRichard Braun
2018-06-26kern/macros: new __weak macroRichard Braun
2018-06-26kern/perfmon: fix PMC ID allocation descriptionRichard Braun
2018-06-26kern/thread: update commentRichard Braun
2018-06-25Merge branch 'perfmon'Richard Braun
2018-06-25kern/perfmon: new moduleRichard Braun
2018-06-25kern/thread: new thread_cpu functionRichard Braun
2018-06-25kern/thread: slightly rework thread state handlingRichard Braun
2018-06-25kern/timer: add comment about timer_scheduleRichard Braun
2018-06-25kern/percpu: introduce per-CPU operationsRichard Braun
2018-06-24kern/kmem: add option to disable the CPU layerRichard Braun
2018-05-17kern/xcall: add missing dependency on syscnt_setupRichard Braun
2018-05-14kern/thread: make thread_create slightly more convenientRichard Braun
Don't require the caller to pass a pointer to the newly created thread.
2018-05-07kern/atomic: alias to latomic operations if relevantRichard Braun
2018-05-07kern/latomic: new moduleRichard Braun
2018-05-07kern/atomic: minor changesRichard Braun
This is mostly a polishing commit.
2018-04-27kern/atomic: minor improvementRichard Braun
Remove the need from architecture-specific code to check alignment.
2018-04-26kern/atomic: minor reworkRichard Braun
Allow architectures to specifically override any of the overloaded functions. This removes the need from architecture-specific code to implement selection.
2018-04-24Fix missing kern/syscnt.h inclusionsRichard Braun
2018-04-24kern/atomic: fix alignment checkRichard Braun
2018-04-21kern/mutex/mutex_adaptive: fix atomic operation callsRichard Braun
2018-04-21kern/atomic: reworkRichard Braun
This commit restricts atomic operations to 32-bit and 64-bit (when supported). It keeps a similar source interface, but adds restrictions on the supported types. The main drive behind this change is portability, and in particular, upcoming local atomic operations.
2018-04-21Fix atomic operations argument typesRichard Braun
In preparation of the rework of atomic operations, all atomic function calls are fixed to use fully supported, compatible types. This means that atomic operations ar erestricted to 32-bit and 64-bit, and that value types must be strictly compatible with pointer types.
2018-04-19kern/atomic: remove shortcutsRichard Braun
These shortcuts just don't bring enough value.
2018-04-14kern/rcu: make the window check interval configurableRichard Braun
2018-04-14kern/atomic: fix consume memory orderRichard Braun
The consume memory order is known to be problematic in the C11 specification, and as a result, most compilers alias it to acquire. Based on the assumption that the kernel doesn't run on architectures with an Alpha-like memory model, the consume memory order was aliased to relaxed, letting the CPU identify data dependencies. But there may also be issues at compile time, making this hack is dangerous. As a result, the actual consume memory order as implemented by the compiler is now used to define the kernel consume memory order. See https://lwn.net/Articles/588300/.
2018-04-14Rename variables in function-like macrosRichard Braun
2018-04-14Fix left-over reserved identifiersRichard Braun
For some reason, commit be5b9d6ab9f7e7a81c367e4bb0823ba11f85940f didn't take care of all reserved identifiers.
2018-04-13kern/xcall: upgrade spurious interrupts to errorsRichard Braun
2018-04-01Merge branch 'bulletin'Richard Braun
2018-04-01kern/bulletin: new moduleRichard Braun
2018-04-01kern/rcu: add assertion in rcu_deferRichard Braun
2018-04-01kern/{hash,list}: update from upstreamRichard Braun
This commit fixes undefined behavior in hash_str, and RCU linked list walking.
2018-03-03kern/spinlock: minor comment fixRichard Braun
2018-03-02kern/spinlock: fix and optimizeRichard Braun
Making the unlock operation block allows tricky deadlocks to occur in case a thread is interrupted right before announcing itself as the first waiter in the queue. Since locking is expected to block, the spinlock implementation is reworked to move the hand-off performed by the unlock operation into the lock operation. As a side effect, the common case of a single waiter is also optimized.