Changeset 111b9b9 in mainline for kernel/generic/src/ipc/ipc.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/ipc/ipc.c

    r76e17d7c r111b9b9  
    326326                irq_spinlock_unlock(&callerbox->lock, true);
    327327
    328         waitq_wakeup(&callerbox->wq, WAKEUP_FIRST);
     328        waitq_wake_one(&callerbox->wq);
    329329}
    330330
     
    416416        irq_spinlock_unlock(&box->lock, true);
    417417
    418         waitq_wakeup(&box->wq, WAKEUP_FIRST);
     418        waitq_wake_one(&box->wq);
    419419}
    420420
     
    555555        errno_t rc;
    556556
    557         rc = waitq_sleep_timeout(&box->wq, usec, flags, NULL);
     557        rc = _waitq_sleep_timeout(&box->wq, usec, flags);
    558558        if (rc != EOK)
    559559                return rc;
Note: See TracChangeset for help on using the changeset viewer.