summaryrefslogtreecommitdiff
path: root/kern/mutex.h
AgeCommit message (Collapse)Author
2019-08-16Document the mutex API, fix spin lock documentationRichard Braun
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-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-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-16Clean up init op dependencies between syscnt and mutexRichard Braun
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-09-02Rework the build systemRichard Braun
2017-08-27kern/mutex: add timed waits to the mutex interfaceRichard Braun
2017-07-21Merge branch 'adaptive_spinning'Richard Braun
2017-07-21kern/mutex: new adaptive spinning mutex implementationAgustina Arzille
2017-07-21Rework mutex implementation selectionAgustina Arzille
2017-07-13Switch to initialization operationsRichard Braun
2017-05-30Move assert.h to the include directoryRichard Braun
This turns assert.h into a standard header.
2017-04-09kern/{mutex,rtmutex,spinlock}: optimize fast pathsRichard Braun
Rework so that fast paths occupy the first indentation level, and use the unlikely macro on the relevant conditions.
2017-04-09kern/{mutex,rtmutex}: normalize fast path namesRichard Braun
2017-03-04kern/mutex: implement the --enable-mutex-pi optionRichard Braun
This option turns all regular mutexes into real-time mutexes.
2017-03-04kern/{condition,mutex}: reimplement on top of sleep queuesRichard Braun
2017-02-10kern/mutex: make mutex_trylock return ERROR_BUSY instead of 1Richard Braun
2017-02-04kern/types: split into module-specific type headersRichard Braun
Using a single header for all types causing inclusion circular dependencies isn't very elegant and doesn't scale.
2016-12-09Force brackets around one-line conditional statementsRichard Braun
This change was done using astyle, with a few manual editing here and there.
2014-08-15Remove static initializer macrosRichard Braun
These initializers are unnecessary, unused, and cumbersome to maintain.
2014-06-18kern/thread: add thread_joinRichard Braun
This change affects more files than it apparently would at first glance. This is because circular dependencies can easily be created between the thread, mutex, condition and spinlock modules. As a result, some of the types of these modules are now defined in kern/types.h.
2014-01-03Update calls to atomic operationsRichard Braun
Make spin locks and mutexes encode their state on an int rather than a long.
2013-04-14kern/{condition,mutex}: refactor common codeRichard Braun
The condition module intrusively uses mutexes. Augment the interface of the mutex module so that mutexes and conditions share common code. As a side effect, the implementation should have gained in clarity.
2013-04-14kern/condition: new moduleRichard Braun
2013-04-13kern/mutex: new mutex_assert_locked macroRichard Braun
2013-04-08kern/mutex: new moduleRichard Braun
As the name implies, this module provides sleepable mutual exclusion locks.