diff options
Diffstat (limited to 'testsuites/validation/tx-support.h')
-rw-r--r-- | testsuites/validation/tx-support.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/testsuites/validation/tx-support.h b/testsuites/validation/tx-support.h index 530606dc34..5d4824cef0 100644 --- a/testsuites/validation/tx-support.h +++ b/testsuites/validation/tx-support.h @@ -203,6 +203,19 @@ uint32_t GetTimecountCounter( void ); uint32_t SetTimecountCounter( uint32_t counter ); /** + * @brief Return the task id of the timer server task + * + * This function is an attempt to avoid using RTEMS internal global + * _Timer_server throughout the validation test code. + * + * @return Returns the task id of the timer server task, if + * rtems_timer_initiate_server() has been invoked before, + * otherwise - if the timer server task does not exist - + * RTEMS_INVALID_ID is returned. + */ +rtems_id GetTimerServerTaskId( void ); + +/** * @brief Undo the effects of rtems_timer_initiate_server() * * If rtems_timer_initiate_server() was never called before, @@ -265,6 +278,81 @@ rtems_vector_number GetValidInterruptVectorNumber( bool HasInterruptVectorEntriesInstalled( rtems_vector_number vector ); +/** + * @brief Get the clock and context of a timer from RTEMS internal data. + * + * With exception of TIMER_DORMANT, the return values are bits or-ed together. + * + * @param id The timer ID. + * + * @retval TIMER_DORMANT Either the id argument is invalid or the timer has + * never been used before. + * @return The TIMER_CLASS_BIT_ON_TASK is set, if the timer server routine + * was or will be executed in task context, otherwise it was or will be + * executed in interrupt context. + * + * The TIMER_CLASS_BIT_TIME_OF_DAY is set, if the clock used is or was the + * ${/glossary/clock-realtime:/term}, otherwise the + * ${/glossary/clock-tick:/term} based clock is or was used. + */ +Timer_Classes GetTimerClass( rtems_id id ); + +/** + * @brief This structure provides data used by RTEMS to schedule a timer + * service routine. + */ +typedef struct { + /** + * @brief This member contains a reference to the timer service routine. + */ + rtems_timer_service_routine_entry routine; + /** + * @brief This member contains a reference to the user data to be provided + * to the timer service routine. + */ + void *user_data; + /** + * @brief This member contains the timer interval in ticks or seconds. + */ + Watchdog_Interval interval; +} Timer_Scheduling_Data; + +/** + * @brief Get data related to scheduling a timer service routine + * from RTEMS internal structures. + * + * @param id The timer ID. + * @param[out] data If the reference is not NULL, the data retrieved from + * internal RTEMS structures is stored here. + */ +void GetTimerSchedulingData( + rtems_id id, + Timer_Scheduling_Data *data +); + +/** + * @brief The various states of a timer. + */ +typedef enum { + TIMER_INVALID, + TIMER_INACTIVE, + TIMER_SCHEDULED, + TIMER_PENDING +} Timer_States; + +/** + * @brief Get the state of a timer from RTEMS internal data. + * + * @param id The timer ID. + * + * @retval TIMER_INVALID The id argument is invalid. + * @retval TIMER_INACTIVE The timer is not scheduled (i.e. it is + * new, run off, or canceled). + * @retval TIMER_SCHEDULED The timer is scheduled. + * @retval TIMER_PENDING The timer is pending. + */ +Timer_States GetTimerState( rtems_id id ); + /** @} */ #ifdef __cplusplus |