Changeset 111b9b9 in mainline for kernel/generic/src/synch/semaphore.c


Ignore:
Timestamp:
2023-02-11T19:13:44Z (2 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4777e02
Parents:
76e17d7c
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2022-08-15 17:46:39)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-11 19:13:44)
Message:

Reimplement waitq using thread_wait/wakeup

This adds a few functions to the thread API which can be
summarized as "stop running until woken up by others".
The ordering and context-switching concerns are thus yeeted
to this abstraction and waitq only deals with maintaining
the queues. Overall, this makes the control flow in waitq
much easier to navigate.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/synch/semaphore.c

    r76e17d7c r111b9b9  
    7070errno_t semaphore_down_timeout(semaphore_t *sem, uint32_t usec)
    7171{
    72         errno_t rc = waitq_sleep_timeout(&sem->wq, usec, SYNCH_FLAGS_NON_BLOCKING, NULL);
     72        errno_t rc = waitq_sleep_timeout(&sem->wq, usec);
    7373        assert(rc == EOK || rc == ETIMEOUT || rc == EAGAIN);
    7474        return rc;
     
    9090void semaphore_up(semaphore_t *sem)
    9191{
    92         waitq_wakeup(&sem->wq, WAKEUP_FIRST);
     92        waitq_wake_one(&sem->wq);
    9393}
    9494
Note: See TracChangeset for help on using the changeset viewer.