static void mtx7_execute(void) { tprio_t prio = chThdGetPriority(); threads[0] = chThdCreateStatic(wa[0], WA_SIZE, prio+1, thread10, "E"); threads[1] = chThdCreateStatic(wa[1], WA_SIZE, prio+2, thread10, "D"); threads[2] = chThdCreateStatic(wa[2], WA_SIZE, prio+3, thread10, "C"); threads[3] = chThdCreateStatic(wa[3], WA_SIZE, prio+4, thread10, "B"); threads[4] = chThdCreateStatic(wa[4], WA_SIZE, prio+5, thread10, "A"); chCondBroadcast(&c1); test_wait_threads(); test_assert_sequence(1, "ABCDE"); }
static void test_005_008_execute(void) { /* [5.8.1] Starting the five threads with increasing priority, the threads will queue on the condition variable.*/ test_set_step(1); { tprio_t prio = chThdGetPriorityX(); threads[0] = chThdCreateStatic(wa[0], WA_SIZE, prio+1, thread6, "E"); threads[1] = chThdCreateStatic(wa[1], WA_SIZE, prio+2, thread6, "D"); threads[2] = chThdCreateStatic(wa[2], WA_SIZE, prio+3, thread6, "C"); threads[3] = chThdCreateStatic(wa[3], WA_SIZE, prio+4, thread6, "B"); threads[4] = chThdCreateStatic(wa[4], WA_SIZE, prio+5, thread6, "A"); } /* [5.8.2] Broarcasting on the condition variable then waiting for the threads to terminate in priority order, the order is tested.*/ test_set_step(2); { chCondBroadcast(&c1); test_wait_threads(); test_assert_sequence("ABCDE", "invalid sequence"); } }
void CondVar::broadcast(void) { chCondBroadcast(&condvar); }
/** * @brief Broadcast condvar signal. * @details Signals a condvar to all of the waiting threads. * @note This procedure may be called within a lock zone guarded by a mutex, * shared by the waiting and the signalling thread. * * @param[in,out] cvp * Pointer to an initialized @p UrosCondVar object. */ void uros_lld_condvar_broadcast(UrosCondVar *cvp) { urosAssert(cvp != NULL); chCondBroadcast(cvp); }
void mcucom_port_condvar_broadcast(mcucom_port_cond_t *cond) { chCondBroadcast(cond); }