summaryrefslogtreecommitdiff
path: root/kern/thread.h
AgeCommit message (Collapse)Author
2017-09-06Use new thread_check_intr_context function consistentlyRichard Braun
2017-09-05kern/thread: new thread_get_tcb functionRichard Braun
2017-09-02kern/thread: new preemption control macrosRichard Braun
These new macros take care of disabling/restoring interrupts in the appropriate order.
2017-09-02Make assert have no side effectsRichard Braun
This makes sure symbols referenced by assert uses may not be generated if unused. The recently introduced __unused macro is used to suppress compiler warnings resulting from this change.
2017-08-27Add TODO entriesRichard Braun
2017-08-27kern/thread: add the thread_delay functionRichard Braun
2017-08-27kern/thread: implement timed sleepsRichard Braun
2017-08-27kern/clock: new moduleRichard Braun
2017-08-25kern/thread: don't trigger priority propagation on return from interruptRichard Braun
2017-08-23kern/thread: really fix terminationRichard Braun
Change the semantics of thread_join so that it not only waits for thread_exit but also for the last reference to be dropped.
2017-07-21Merge branch 'adaptive_spinning'Richard Braun
2017-07-21kern/mutex: new adaptive spinning mutex implementationAgustina Arzille
2017-07-14Fix inclusions of kern/init.h when declaring init operationsRichard Braun
2017-07-13Switch to initialization operationsRichard Braun
2017-06-25Use the C11 alignas and noreturn macrosRichard Braun
2017-06-24Move the HZ macro to the kern/thread moduleRichard Braun
2017-06-14x86: improve TCB load and context switchRichard Braun
2017-06-03kern/thread: improve thread_wakeup robustnessRichard Braun
2017-05-30Move assert.h to the include directoryRichard Braun
This turns assert.h into a standard header.
2017-05-16x86/trap: add interrupt stacksAgustina Arzille
2017-05-09Replace sequential consistency with more efficient ordersAgustina Arzille
2017-04-04Use the new atomic operations interfaceAgustina Arzille
Stick to a sequentially consistent model for most atomic operations as it matches the semantics of the existing code. Each call site will have to be reevaluated in order to switch to more relaxed accesses where possible.
2017-03-19kern/thread: new thread_assert_interrupted functionRichard Braun
2017-03-19kern/thread: formally define interrupt contextRichard Braun
2017-03-13kern/thread: reduce the number of real-time priorities to 32Richard Braun
2017-03-04kern/thread: minor changes in commentsRichard Braun
2017-03-04kern/{condition,mutex}: reimplement on top of sleep queuesRichard 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.
2017-02-14kern/thread: add reference counterRichard Braun
Counting thread references seems unavoidable for the near-future changes that are currently brewing.
2017-02-13kern/thread: minor change about scheduling class string representationRichard Braun
2017-02-13kern/thread: minor global priority reworkRichard Braun
2017-02-08kern/thread: add wait channelsRichard 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.
2017-02-01kern/thread: introduce global prioritiesRichard Braun
2017-01-31kern/thread: make priority a generic thread propertyRichard Braun
2017-01-29kern/thread: implement thread_setschedulerRichard Braun
2017-01-29kern/thread: rename "time-sharing" to "fair-scheduling"Richard Braun
2017-01-24kern/thread: add the THREAD_KERNEL_PREFIX macroRichard Braun
This macro is used to build kernel thread names.
2017-01-23kern/thread: move private definitions to thread_i.hRichard Braun
2016-12-09Force brackets around one-line conditional statementsRichard Braun
This change was done using astyle, with a few manual editing here and there.
2015-05-15kern/thread: add compiler barriers to llsync-related functionsRichard Braun
2014-10-09kern/thread: minor changeRichard Braun
Remove comment.
2014-09-16kern/task: make task_info report thread statesRichard Braun
2014-09-09kern/task: make task_info report scheduling propertiesRichard Braun
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-06-18kern/thread: support thread_sleep without interlockRichard Braun
The thread_sleep function takes a spin lock as a parameter. This lock is used as an interlock allowing either the thread waking up or the thread being awaken to run. But when threads don't need a lock to provide that guarantee, the interlock is only overhead. This change makes thread_sleep assume disabling preemption is used as a synchronization mechanism when the interlock is NULL.
2014-06-10kern/llsync: rework lockless synchronizationRichard Braun
Use a global checkpoint identifier as a generation counter and remove reset interrupts. For some reason I can't remember, using reset interrupts was thought to be more efficient, perhaps because accessing a global variable on each checkpoint looked expensive. But it's really not scalable, and a read-mostly global variable can get cached locally and not incur expensive access. In addition, add a decent amount of documentation about the semantics with regard to the rest of the system. Explicitely state that checkpoints are triggered by context switches and that it's not allowed to block inside read-side critical sections. Make periodic events attempt to trigger checkpoints too. Add a thread-local read-side critical section nesting counter so that it can be reliably determined whether the processor is running a read-side critical section or not.
2014-05-13kern/thread: rename thread_tick to thread_tick_intrRichard Braun
2014-05-13kern/thread: count scheduling interruptsRichard Braun