Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-01-10 | kern/semaphore: rework | Richard Braun | |
The previous implementation, which uses a combination of fast and slow paths around accessing an atomic integer, suffers from a bug triggered when two or more posts are performed back-to-back, without a waiter decrementing the semaphore value in between. The first post would be the only one signalling a waiter. In addition, having a fast path that expects the absence of waiters probably doesn't make sense, as semaphores are expected to be used for signalling threads. As a result, it was decided to remove the fast path altogether, and protect the semaphore value with sleep queues. Finally, as part of the rework, semaphores now have a user-defined maximum value, in order to make the implementation of, e.g. wrappers for binary semaphores, convenient. Thanks to Simon Venken for reporting the bug. | |||
2018-07-10 | kern/sleepq: make disabling interrupts optional | Richard 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. | |||
2017-12-03 | Revert "Make assert have no side effects" | Richard Braun | |
This reverts commit d18d0e85596f90e0bd597b33d58209d0b3973c95. | |||
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 | kern/semaphore: implement timed waits | Richard Braun | |
2017-03-17 | kern/sleepq: also disable interrupts during critical sections | Richard Braun | |
2017-03-17 | kern/semaphore: new module | Richard Braun | |