From 4f49b546b101841d523df17806bea67b269a2a85 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 17 Aug 2013 11:04:57 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6167 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/osal/chibios/osal.c | 149 --------------------------------------------- 1 file changed, 149 deletions(-) (limited to 'os/hal/osal/chibios/osal.c') diff --git a/os/hal/osal/chibios/osal.c b/os/hal/osal/chibios/osal.c index da3746eaf..d46840e91 100644 --- a/os/hal/osal/chibios/osal.c +++ b/os/hal/osal/chibios/osal.c @@ -84,153 +84,4 @@ void osalSysHalt(const char *reason) { chSysHalt(); } -/** - * @brief Sends the current thread sleeping and sets a reference variable. - * @note This function must reschedule, it can only be called from thread - * context. - * - * @param[in] trp a pointer to a thread reference object - * @return The wake up message. - * - * @sclass - */ -msg_t osalThreadSuspendS(thread_reference_t *trp) { - - chDbgAssert(*trp == NULL, "not NULL"); - - *trp = (thread_reference_t)chThdGetSelfX(); - chSchGoSleepS(CH_STATE_SUSPENDED); - return chThdGetSelfX()->p_msg; -} - -/** - * @brief Wakes up a thread waiting on a thread reference object. - * @note This function must not reschedule because it can be called from - * ISR context. - * - * @param[in] trp a pointer to a thread reference object - * @param[in] msg the message code - * - * @iclass - */ -void osalThreadResumeI(thread_reference_t *trp, msg_t msg) { - - if (*trp != NULL) { - - chDbgAssert((*trp)->p_state == CH_STATE_SUSPENDED, - "not THD_STATE_SUSPENDED"); - - (*trp)->p_u.rdymsg = msg; - chSchReadyI((thread_t *)*trp); - *trp = NULL; - } -} - -/** - * @brief Wakes up a thread waiting on a thread reference object. - * @note This function must reschedule, it can only be called from thread - * context. - * - * @param[in] trp a pointer to a thread reference object - * @param[in] msg the message code - * - * @iclass - */ -void osalThreadResumeS(thread_reference_t *trp, msg_t msg) { - - if (*trp != NULL) { - thread_t *tp = (thread_t *)*trp; - - chDbgAssert(tp->p_state == CH_STATE_SUSPENDED, "not THD_STATE_SUSPENDED"); - - *trp = NULL; - chSchWakeupS(tp, msg); - } -} - -/** - * @brief Enqueues the caller thread. - * @details The caller thread is enqueued and put to sleep until it is - * dequeued or the specified timeouts expires. - * - * @param[in] tqp pointer to the threads queue object - * @param[in] time the timeout in system ticks, the special values are - * handled as follow: - * - @a TIME_INFINITE the thread enters an infinite sleep - * state. - * - @a TIME_IMMEDIATE the thread is not enqueued and - * the function returns @p MSG_TIMEOUT as if a timeout - * occurred. - * . - * @return The message from @p osalQueueWakeupOneI() or - * @p osalQueueWakeupAllI() functions. - * @retval RDY_TIMEOUT if the thread has not been dequeued within the - * specified timeout or if the function has been - * invoked with @p TIME_IMMEDIATE as timeout - * specification. - * - * @sclass - */ -msg_t osalQueueGoSleepTimeoutS(threads_queue_t *tqp, systime_t time) { - - void wakeup(void *p) { - thread_t *tp = (thread_t *)p; - - chSysUnlockFromISR(); - tp->p_u.rdymsg = RDY_TIMEOUT; - chSchReadyI(queue_dequeue(tp)); - chSysUnlockFromISR(); - } - - if (TIME_IMMEDIATE == time) - return MSG_TIMEOUT; - - queue_insert(currp, tqp); - if (TIME_INFINITE == time) - chSchGoSleepS(CH_STATE_SUSPENDED); - else { - virtual_timer_t vt; - - chVTDoSetI(&vt, time, wakeup, currp); - chSchGoSleepS(CH_STATE_SUSPENDED); - if (chVTIsArmedI(&vt)) - chVTDoResetI(&vt); - } - return currp->p_u.rdymsg; -} - -/** - * @brief Dequeues and wakes up one thread from the queue, if any. - * - * @param[in] tqp pointer to the threads queue object - * @param[in] msg the message code - * - * @iclass - */ -void osalQueueWakeupOneI(threads_queue_t *tqp, msg_t msg) { - - if (queue_notempty(tqp)) { - thread_t *tp = queue_fifo_remove(tqp); - tp->p_u.rdymsg = msg; - chSchReadyI(tp); - } -} - -/** - * @brief Dequeues and wakes up all threads from the queue. - * - * @param[in] tqp pointer to the threads queue object - * @param[in] msg the message code - * - * @iclass - */ -void osalQueueWakeupAllI(threads_queue_t *tqp, msg_t msg) { - - while (queue_notempty(tqp)) { - thread_t *tp = queue_fifo_remove(tqp); - tp->p_u.rdymsg = msg; - chSchReadyI(tp); - } -} - /** @} */ -- cgit v1.2.3