diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-06-22 13:36:21 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-10-12 16:20:36 +0200 |
commit | 49eb443fef650a88410ddb0e94f9623cee3ecd1f (patch) | |
tree | cf2d12c68b5fbfce1f612d32ebb722ba465a846b | |
parent | eac8b8102fe8267db3ce31a53c06407d013a2194 (diff) |
Generate <rtems/rtems/timer.h>
-rw-r--r-- | cpukit/include/rtems/rtems/timer.h | 508 |
1 files changed, 291 insertions, 217 deletions
diff --git a/cpukit/include/rtems/rtems/timer.h b/cpukit/include/rtems/rtems/timer.h index 244d5603ba..49d2de4475 100644 --- a/cpukit/include/rtems/rtems/timer.h +++ b/cpukit/include/rtems/rtems/timer.h @@ -1,340 +1,414 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * - * @ingroup ClassicTimer + * @ingroup RTEMSAPIClassicTimer * - * @brief Classic Timer Manager API + * @brief This header file defines the Timer Manager API. */ /* - * COPYRIGHT (c) 1989-2011. - * On-Line Applications Research Corporation (OAR). + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 1988, 2008 On-Line Applications Research Corporation (OAR) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Do not manually edit this file. It is part of the RTEMS quality process + * and was automatically generated. + * + * If you find something that needs to be fixed or worded better please + * post a report to an RTEMS mailing list or raise a bug report: * - * Copyright (c) 2009, 2016 embedded brains GmbH. + * https://docs.rtems.org/branches/master/user/support/bugs.html * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * For information on updating and regenerating please refer to: + * + * https://docs.rtems.org/branches/master/eng/req/howto.html */ +/* Generated from spec:/rtems/timer/if/header */ + #ifndef _RTEMS_RTEMS_TIMER_H #define _RTEMS_RTEMS_TIMER_H +#include <stddef.h> #include <rtems/rtems/attr.h> #include <rtems/rtems/status.h> #include <rtems/rtems/tasks.h> #include <rtems/rtems/types.h> +#include <rtems/score/watchdogticks.h> #ifdef __cplusplus extern "C" { #endif +/* Generated from spec:/rtems/timer/if/group */ + /** - * @defgroup ClassicTimer Timers + * @defgroup RTEMSAPIClassicTimer Timer Manager * - * @ingroup RTEMSAPIClassic + * @ingroup RTEMSAPIClassic * - * This encapsulates functionality related to the Classic API Timer - * Manager. This manager provides functionality which allows the - * application to schedule the execution of methods at a specified - * time in the future. These methods may be scheduled based upon - * interval or wall time and may be executed in either the clock tick - * ISR or in a special dedicated timer server task. + * @brief The Timer Manager provides support for timer facilities. */ -/**@{*/ -#define TIMER_CLASS_BIT_TIME_OF_DAY 0x1 +/* Generated from spec:/rtems/timer/if/cancel */ -#define TIMER_CLASS_BIT_ON_TASK 0x2 +/** + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + * + * @param id % + */ +rtems_status_code rtems_timer_cancel( rtems_id id ); + +/* Generated from spec:/rtems/timer/if/class-bit-not-dormant */ +/** + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + */ #define TIMER_CLASS_BIT_NOT_DORMANT 0x4 +/* Generated from spec:/rtems/timer/if/class-bit-on-task */ + +/** + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + */ +#define TIMER_CLASS_BIT_ON_TASK 0x2 + +/* Generated from spec:/rtems/timer/if/class-bit-time-of-day */ + /** - * The following enumerated type details the classes to which a timer - * may belong. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + */ +#define TIMER_CLASS_BIT_TIME_OF_DAY 0x1 + +/* Generated from spec:/rtems/timer/if/classes */ + +/** + * @ingroup RTEMSAPIClassicTimer + * + * @brief % */ typedef enum { /** - * This value indicates the timer is currently not in use. + * @brief % */ TIMER_DORMANT, /** - * This value indicates the timer is currently in use as an interval - * timer which will fire in the clock tick ISR. + * @brief % */ TIMER_INTERVAL = TIMER_CLASS_BIT_NOT_DORMANT, /** - * This value indicates the timer is currently in use as an interval - * timer which will fire in the timer server task. + * @brief % */ - TIMER_INTERVAL_ON_TASK = - TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_ON_TASK, + TIMER_INTERVAL_ON_TASK = TIMER_CLASS_BIT_NOT_DORMANT | + TIMER_CLASS_BIT_ON_TASK, /** - * This value indicates the timer is currently in use as an time of day - * timer which will fire in the clock tick ISR. + * @brief % */ - TIMER_TIME_OF_DAY = - TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_TIME_OF_DAY, + TIMER_TIME_OF_DAY = TIMER_CLASS_BIT_NOT_DORMANT | + TIMER_CLASS_BIT_TIME_OF_DAY, /** - * This value indicates the timer is currently in use as an time of day - * timer which will fire in the timer server task. + * @brief % */ - TIMER_TIME_OF_DAY_ON_TASK = - TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_TIME_OF_DAY | + TIMER_TIME_OF_DAY_ON_TASK = TIMER_CLASS_BIT_NOT_DORMANT | + TIMER_CLASS_BIT_TIME_OF_DAY | TIMER_CLASS_BIT_ON_TASK } Timer_Classes; -/** - * The following types define a pointer to a timer service routine. - */ -typedef void rtems_timer_service_routine; +/* Generated from spec:/rtems/timer/if/create */ /** - * This type defines the type used to manage and indirectly invoke - * Timer Service Routines (TSRs). This defines the prototype and interface - * for a function which is to be used as a TSR. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + * + * @param name % + * + * @param id % */ -typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )( - rtems_id, - void * - ); +rtems_status_code rtems_timer_create( rtems_name name, rtems_id *id ); + +/* Generated from spec:/rtems/timer/if/delete */ /** - * @brief RTEMS Create Timer + * @ingroup RTEMSAPIClassicTimer * - * This routine implements the rtems_timer_create directive. The - * timer will have the name name. It returns the id of the - * created timer in ID. + * @brief % * - * @param[in] name is the timer name - * @param[out] id is the pointer to timer id - * - * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful + * @param id % */ -rtems_status_code rtems_timer_create( - rtems_name name, - rtems_id *id -); +rtems_status_code rtems_timer_delete( rtems_id id ); + +/* Generated from spec:/rtems/timer/if/ident */ /** - * @brief RTEMS Timer Name to Id + * @ingroup RTEMSAPIClassicTimer + * + * @brief Identifies a timer object by the specified object name. + * + * This directive obtains the timer identifier associated with the timer name + * specified in ``name``. + * + * If the timer name is not unique, then the timer identifier will match the + * first timer with that name in the search order. However, this timer + * identifier is not guaranteed to correspond to the desired timer. The timer + * identifier is used with other timer related directives to access the timer. + * + * The objects are searched from lowest to the highest index. Only the local + * node is searched. + * + * @param name is the object name to look up. + * + * @param[out] id is the pointer to an object identifier variable. The object + * identifier of an object with the specified name will be stored in this + * variable, in case of a successful operation. + * + * @retval ::RTEMS_SUCCESSFUL The requested operation was successful. * - * This routine implements the rtems_timer_ident directive. - * This directive returns the timer ID associated with name. - * If more than one timer is named name, then the timer - * to which the ID belongs is arbitrary. + * @retval ::RTEMS_INVALID_ADDRESS The id parameter was NULL. * - * @param[in] name is the user defined message queue name - * @param[in] id is the pointer to timer id + * @retval ::RTEMS_INVALID_NAME The name parameter was 0. * - * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * id filled with the message queue id + * @retval ::RTEMS_INVALID_NAME There was no object with the specified name on + * the local node. */ -rtems_status_code rtems_timer_ident( - rtems_name name, - rtems_id *id -); +rtems_status_code rtems_timer_ident( rtems_name name, rtems_id *id ); + +/* Generated from spec:/rtems/timer/if/information */ /** - * @brief rtems_timer_cancel + * @ingroup RTEMSAPIClassicTimer * - * This routine implements the rtems_timer_cancel directive. It is used - * to stop the timer associated with ID from firing. + * @brief % */ -rtems_status_code rtems_timer_cancel( - rtems_id id -); +typedef struct { + /** + * @brief This member is + * + * % + */ + Timer_Classes the_class; + + /** + * @brief This member is + * + * % + */ + Watchdog_Interval initial; + + /** + * @brief This member is + * + * % + */ + Watchdog_Interval start_time; + + /** + * @brief This member is + * + * % + */ + Watchdog_Interval stop_time; +} rtems_timer_information; + +/* Generated from spec:/rtems/timer/if/get-information */ /** - * @brief RTEMS Delete Timer + * @ingroup RTEMSAPIClassicTimer * - * This routine implements the rtems_timer_delete directive. The - * timer indicated by ID is deleted. + * @brief % * - * @param[in] id is the timer id + * @param id % * - * @retval This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @param the_info % */ -rtems_status_code rtems_timer_delete( - rtems_id id +rtems_status_code rtems_timer_get_information( + rtems_id id, + rtems_timer_information *the_info ); +/* Generated from spec:/rtems/timer/if/initiate-server */ + /** - * @brief RTEMS Timer Fire After - * - * This routine implements the rtems_timer_fire_after directive. It - * initiates the timer associated with ID to fire in ticks clock ticks. - * When the timer fires, the routine will be invoked in the context - * of the rtems_clock_tick directive which is normally invoked as - * part of servicing a periodic interupt. - * - * @param[in] id is the timer id - * @param[in] ticks is the interval until routine is fired - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @retval This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + * + * @param priority % + * + * @param stack_size % + * + * @param attribute_set % */ -rtems_status_code rtems_timer_fire_after( - rtems_id id, - rtems_interval ticks, - rtems_timer_service_routine_entry routine, - void *user_data +rtems_status_code rtems_timer_initiate_server( + rtems_task_priority priority, + size_t stack_size, + rtems_attribute attribute_set ); +/* Generated from spec:/rtems/timer/if/reset */ + /** - * @brief RTEMS Timer Server Fire After - * - * This routine implements the rtems_timer_server_fire_after directive. It - * initiates the timer associated with ID to fire in ticks clock - * ticks. When the timer fires, the routine will be invoked by the - * Timer Server in the context of a task NOT IN THE CONTEXT of the - * clock tick interrupt. - * - * @param[in] id is the timer id - * @param[in] ticks is the interval until routine is fired - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @retval This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + * + * @param id % */ -rtems_status_code rtems_timer_server_fire_after( - rtems_id id, - rtems_interval ticks, - rtems_timer_service_routine_entry routine, - void *user_data -); +rtems_status_code rtems_timer_reset( rtems_id id ); + +/* Generated from spec:/rtems/timer/if/server-default-priority */ /** - * @brief RTEMS Timer Fire When - * - * This routine implements the rtems_timer_fire_when directive. It - * initiates the timer associated with ID to fire at wall_time - * When the timer fires, the routine will be invoked in the context - * of the rtems_clock_tick directive which is normally invoked as - * part of servicing a periodic interupt. - * - * @param[in] id is the timer id - * @param[in] wall_time is the time of day to fire timer - * @param[in] routine is the routine to schedule - * @param[in] user_data is the passed as argument to routine when it is fired - * - * @retval This method returns RTEMS_SUCCESSFUL if there was not an - * error. Otherwise, a status code is returned indicating the - * source of the error. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % */ -rtems_status_code rtems_timer_fire_when( - rtems_id id, - rtems_time_of_day *wall_time, - rtems_timer_service_routine_entry routine, - void *user_data -); +#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ( (rtems_task_priority) -1 ) + +/* Generated from spec:/rtems/timer/if/service-routine */ /** - * @brief RTEMS Timer Server Fire When Directive + * @ingroup RTEMSAPIClassicTimer * - * Timer Manager - RTEMS Timer Server Fire When Directive + * @brief % + */ +typedef void rtems_timer_service_routine; + +/* Generated from spec:/rtems/timer/if/service-routine-entry */ + +/** + * @ingroup RTEMSAPIClassicTimer * - * This routine implements the rtems_timer_server_fire_when directive. It - * initiates the timer associated with ID to fire at wall_time - * When the timer fires, the routine will be invoked by the - * Timer Server in the context of a task NOT IN THE CONTEXT of the - * clock tick interrupt. + * @brief % */ -rtems_status_code rtems_timer_server_fire_when( - rtems_id id, - rtems_time_of_day *wall_time, - rtems_timer_service_routine_entry routine, - void *user_data -); +typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )( rtems_id, void * ); + +/* Generated from spec:/rtems/timer/if/fire-after */ /** - * @brief RTEMS Timer Reset + * @ingroup RTEMSAPIClassicTimer * - * Timer Manager - RTEMS Timer Reset + * @brief % * - * This routine implements the rtems_timer_reset directive. It is used - * to reinitialize the interval timer associated with ID just as if - * rtems_timer_fire_after were re-invoked with the same arguments that - * were used to initiate this timer. + * @param id % + * + * @param ticks % + * + * @param routine % + * + * @param user_data % */ -rtems_status_code rtems_timer_reset( - rtems_id id +rtems_status_code rtems_timer_fire_after( + rtems_id id, + rtems_interval ticks, + rtems_timer_service_routine_entry routine, + void *user_data ); +/* Generated from spec:/rtems/timer/if/fire-when */ + /** - * @brief Initiates the timer server. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % * - * This directive creates and starts the server for task-based timers. - * It must be invoked before any task-based timers can be initiated. + * @param id % * - * @param priority The timer server task priority. - * @param stack_size The stack size in bytes for the timer server task. - * @param attribute_set The timer server task attributes. + * @param wall_time % * - * @return This method returns RTEMS_SUCCESSFUL if successful and an - * error code otherwise. + * @param routine % + * + * @param user_data % */ -rtems_status_code rtems_timer_initiate_server( - rtems_task_priority priority, - size_t stack_size, - rtems_attribute attribute_set +rtems_status_code rtems_timer_fire_when( + rtems_id id, + rtems_time_of_day *wall_time, + rtems_timer_service_routine_entry routine, + void *user_data ); -/** - * This is the default value for the priority of the Timer Server. - * When given this priority, a special high priority not accessible - * via the Classic API is used. - */ -#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY (uint32_t) -1 +/* Generated from spec:/rtems/timer/if/server-fire-after */ /** - * This is the structure filled in by the timer get information - * service. + * @ingroup RTEMSAPIClassicTimer + * + * @brief % + * + * @param id % + * + * @param ticks % + * + * @param routine % + * + * @param user_data % */ -typedef struct { - /** This indicates the current type of the timer. */ - Timer_Classes the_class; - /** This indicates the initial requested interval. */ - Watchdog_Interval initial; - /** This indicates the time the timer was initially scheduled. */ - Watchdog_Interval start_time; - /** This indicates the time the timer is scheduled to fire. */ - Watchdog_Interval stop_time; -} rtems_timer_information; +rtems_status_code rtems_timer_server_fire_after( + rtems_id id, + rtems_interval ticks, + rtems_timer_service_routine_entry routine, + void *user_data +); + +/* Generated from spec:/rtems/timer/if/server-fire-when */ /** - * @brief RTEMS Get Timer Information + * @ingroup RTEMSAPIClassicTimer * - * This routine implements the rtems_timer_get_information directive. - * This directive returns information about the timer. + * @brief % * - * @param[in] id is the timer id - * @param[in] the_info is the pointer to timer information block + * @param id % * - * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and - * *the_info region information block filled in + * @param wall_time % + * + * @param routine % + * + * @param user_data % */ -rtems_status_code rtems_timer_get_information( - rtems_id id, - rtems_timer_information *the_info +rtems_status_code rtems_timer_server_fire_when( + rtems_id id, + rtems_time_of_day *wall_time, + rtems_timer_service_routine_entry routine, + void *user_data ); -/**@}*/ - #ifdef __cplusplus } #endif -#endif -/* end of include file */ +#endif /* _RTEMS_RTEMS_TIMER_H */ |