/* * Copyright 2014, General Dynamics C4 Systems * * SPDX-License-Identifier: GPL-2.0-only */ #pragma once #include #include void sendSignal(notification_t *ntfnPtr, word_t badge); void receiveSignal(tcb_t *thread, cap_t cap, bool_t isBlocking); void cancelAllSignals(notification_t *ntfnPtr); void cancelSignal(tcb_t *threadPtr, notification_t *ntfnPtr); void completeSignal(notification_t *ntfnPtr, tcb_t *tcb); void unbindMaybeNotification(notification_t *ntfnPtr); void unbindNotification(tcb_t *tcb); void bindNotification(tcb_t *tcb, notification_t *ntfnPtr); #ifdef CONFIG_KERNEL_MCS void reorderNTFN(notification_t *notification, tcb_t *thread); static inline void maybeReturnSchedContext(notification_t *ntfnPtr, tcb_t *tcb) { sched_context_t *sc = SC_PTR(notification_ptr_get_ntfnSchedContext(ntfnPtr)); if (sc == tcb->tcbSchedContext) { tcb->tcbSchedContext = NULL; sc->scTcb = NULL; } } #endif