summaryrefslogtreecommitdiff
path: root/kern
AgeCommit message (Collapse)Author
2018-03-02kern/spinlock: fix direct use of CONFIG_SPINLOCK_DEBUGRichard Braun
2018-02-24kern/kmem: new KMEM_DEBUG optionRichard Braun
2018-02-24kern/log2: fix namingRichard Braun
2018-02-24Update license note about modules from librbraunRichard Braun
2018-02-24kern/{cbuf,fmt,hash,hlist,list,plist,rdxtree,shell,slist}: update from upstreamRichard Braun
Note that this commit changes the order of some list operations without triggering warnings.
2018-02-24New ENOENT error codeRichard Braun
2018-02-24New errno.h standard headerRichard Braun
Use standard errno codes. This change also adds strerror to string.h.
2018-02-24Don't use reserved identifiersRichard Braun
2018-02-22kern/spinlock: add ownership tracking as a debugging featureRichard Braun
2018-02-21kern/rcu: comment the loop in rcu_cpu_data_check_gp_stateRichard Braun
2018-02-20kern/clock: include stdalign.hRichard Braun
2018-02-20kern/rcu: fix !SMP buildsRichard Braun
2018-02-20kern/llsync: remove moduleRichard Braun
2018-02-20Rework the initialization operations of some kernel modulesRichard Braun
In order to avoid workarounds that check whether a module is ready or not, break the initialization of some core modules into a bootstrap step for basic BSP initialization, and a setup step that completes initialization. Most users only need the bootstrap operation as a dependency, especially since scheduling isn't enabled yet.
2018-02-20Merge branch 'preemptible_rcu'Richard Braun
2018-02-20kern/rcu: new moduleRichard Braun
This module implements preemptible RCU.
2018-02-20kern/thread: remove sref registration callsRichard Braun
The upcoming RCU implementation requires scalable reference counters to be usable in interrupt context, and in particular, in the periodic tick handler, when an idle thread may be running, and the local processor is not registered.
2018-02-20kern/timer: coding style fixRichard Braun
2018-02-12kern/xcall: optimize and improve documentationRichard Braun
Don't uselessly align to the CPU cache line size. Remove the useless array of preallocated cross-calls, and allocate from the caller stack instead. Since that array was the only object protected by disabling preemption, leave preemption enabled accordingly. Document locking keys, and describe memory ordering guarantees and enforcing. Add TODO entry about asynchronous cross-call support.
2018-02-12Add TODO entriesRichard Braun
2018-02-12kern/xcall: declare the xcall_setup init operationRichard Braun
2018-02-12kern/sref: declare the sref_setup init operationRichard Braun
2018-02-12kern/percpu: add TODO entryRichard Braun
2018-02-12kern/atomic: new atomic_fence_acq_rel macroRichard Braun
2018-02-12kern/thread: minor changesRichard Braun
Make thread_runq_schedule() slightly more resilient by setting the next thread pointer to NULL after the context switch.
2018-02-07kern/sref: allow custom initial valuesRichard Braun
2018-02-07kern/sref: allow usage from interrupt contextRichard Braun
2018-02-07kern/syscnt: new syscnt_set methodRichard Braun
2018-02-07kern/work: improve description of work_scheduleRichard Braun
2018-02-07kern/sleepq: make sleepq_broadcast real-time friendlyRichard Braun
2018-01-30Fix condition variable broadcastingRichard Braun
The broadcast implementation is based on an invalid assumption, namely that the first mutex_unlock call following condition_wait would be invoked on the same mutex. Fixing this while guarding against the thundering herd effect requires augmenting mutexes with a pointer to the condition variable they may be associated with. Since the size of mutexes is currently more important than broadcast scalability, the implementation is simplified into one which suffers from the thundering herd effect.
2018-01-29Fix undefined behavior in conditional macro replacementRichard Braun
See C11 6.10.3 ยง11 : If there are sequences of preprocessing tokens within the list of arguments that would otherwise act as preprocessing directives, the behavior is undefined.
2018-01-24kern/atomic: add thread fencesAgustina Arzille
2018-01-16Clean up init op dependencies between syscnt and mutexRichard Braun
2018-01-16kern/percpu: improve initop descriptions and fix dependenciesRichard Braun
2018-01-16kern/percpu: use ARRAY_SIZE in percpu_areaRichard Braun
2018-01-15kern/sref: document locking keysRichard Braun
2018-01-12kern/sref: relax memory ordering on weak reference operationsRichard Braun
2018-01-12kern/macros: minor comment updateRichard Braun
2018-01-12kern/fmt: remove useless assignmentRichard Braun
2018-01-12kern/rtmutex: add commentsRichard Braun
2018-01-12kern/macros: remove left-over debugging codeRichard Braun
2018-01-10Merge branch 'sref_rework'Richard Braun
2018-01-10kern/sref: minor style updatesRichard Braun
2018-01-10kern/sref: flip queues on epoch endRichard Braun
Make epoch management slightly faster by replacing the "cascading" of queue0 into queue1 with queue flipping.
2018-01-10kern/sref: optimize cache flushingRichard Braun
Track valid deltas in a list instead of walking the entire hash table.
2018-01-10kern/sref: use an slist for review queuesRichard Braun
2018-01-10kern/sref: rework delta cache synchronizationRichard Braun
Instead of using a mutex, disable preemption when accessing a delta cache, but reenable it when flushing a cache to keep latencies low.
2018-01-10kern/thread: minor name changesRichard Braun
Call the various thread-local nesting counters "levels".
2018-01-08kern/xcall: handle spurious interruptsRichard Braun