Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-09-06 | Use new thread_check_intr_context function consistently | Richard Braun | |
2017-09-05 | kern/thread: new thread_get_tcb function | Richard Braun | |
2017-09-02 | kern/thread: new preemption control macros | Richard Braun | |
These new macros take care of disabling/restoring interrupts in the appropriate order. | |||
2017-09-02 | Make assert have no side effects | Richard 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-27 | Add TODO entries | Richard Braun | |
2017-08-27 | kern/thread: add the thread_delay function | Richard Braun | |
2017-08-27 | kern/thread: implement timed sleeps | Richard Braun | |
2017-08-27 | kern/clock: new module | Richard Braun | |
2017-08-25 | kern/thread: don't trigger priority propagation on return from interrupt | Richard Braun | |
2017-08-23 | kern/thread: really fix termination | Richard 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-21 | Merge branch 'adaptive_spinning' | Richard Braun | |
2017-07-21 | kern/mutex: new adaptive spinning mutex implementation | Agustina Arzille | |
2017-07-14 | Fix inclusions of kern/init.h when declaring init operations | Richard Braun | |
2017-07-13 | Switch to initialization operations | Richard Braun | |
2017-06-25 | Use the C11 alignas and noreturn macros | Richard Braun | |
2017-06-24 | Move the HZ macro to the kern/thread module | Richard Braun | |
2017-06-14 | x86: improve TCB load and context switch | Richard Braun | |
2017-06-03 | kern/thread: improve thread_wakeup robustness | Richard Braun | |
2017-05-30 | Move assert.h to the include directory | Richard Braun | |
This turns assert.h into a standard header. | |||
2017-05-16 | x86/trap: add interrupt stacks | Agustina Arzille | |
2017-05-09 | Replace sequential consistency with more efficient orders | Agustina Arzille | |
2017-04-04 | Use the new atomic operations interface | Agustina 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-19 | kern/thread: new thread_assert_interrupted function | Richard Braun | |
2017-03-19 | kern/thread: formally define interrupt context | Richard Braun | |
2017-03-13 | kern/thread: reduce the number of real-time priorities to 32 | Richard Braun | |
2017-03-04 | kern/thread: minor changes in comments | Richard Braun | |
2017-03-04 | kern/{condition,mutex}: reimplement on top of sleep queues | Richard Braun | |
2017-03-04 | kern/{thread,turnstile}: implement priority inheritance | Richard 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-04 | kern/sleepq: new module | Richard 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-14 | kern/thread: add reference counter | Richard Braun | |
Counting thread references seems unavoidable for the near-future changes that are currently brewing. | |||
2017-02-13 | kern/thread: minor change about scheduling class string representation | Richard Braun | |
2017-02-13 | kern/thread: minor global priority rework | Richard Braun | |
2017-02-08 | kern/thread: add wait channels | Richard Braun | |
2017-02-04 | kern/types: split into module-specific type headers | Richard Braun | |
Using a single header for all types causing inclusion circular dependencies isn't very elegant and doesn't scale. | |||
2017-02-01 | kern/thread: introduce global priorities | Richard Braun | |
2017-01-31 | kern/thread: make priority a generic thread property | Richard Braun | |
2017-01-29 | kern/thread: implement thread_setscheduler | Richard Braun | |
2017-01-29 | kern/thread: rename "time-sharing" to "fair-scheduling" | Richard Braun | |
2017-01-24 | kern/thread: add the THREAD_KERNEL_PREFIX macro | Richard Braun | |
This macro is used to build kernel thread names. | |||
2017-01-23 | kern/thread: move private definitions to thread_i.h | Richard Braun | |
2016-12-09 | Force brackets around one-line conditional statements | Richard Braun | |
This change was done using astyle, with a few manual editing here and there. | |||
2015-05-15 | kern/thread: add compiler barriers to llsync-related functions | Richard Braun | |
2014-10-09 | kern/thread: minor change | Richard Braun | |
Remove comment. | |||
2014-09-16 | kern/task: make task_info report thread states | Richard Braun | |
2014-09-09 | kern/task: make task_info report scheduling properties | Richard Braun | |
2014-06-18 | kern/thread: add thread_join | Richard 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-18 | kern/thread: support thread_sleep without interlock | Richard 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-10 | kern/llsync: rework lockless synchronization | Richard 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-13 | kern/thread: rename thread_tick to thread_tick_intr | Richard Braun | |
2014-05-13 | kern/thread: count scheduling interrupts | Richard Braun | |