![]() |
|
|||
File indexing completed on 2025-05-11 08:24:13
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /** 0004 * @file 0005 * 0006 * @ingroup RTEMSScoreWatchdog 0007 * 0008 * @brief This header file provides interfaces of the 0009 * @ref RTEMSScoreWatchdog which are used by the implementation and the 0010 * @ref RTEMSImplApplConfig. 0011 */ 0012 0013 /* 0014 * COPYRIGHT (c) 1989-2009. 0015 * On-Line Applications Research Corporation (OAR). 0016 * 0017 * Redistribution and use in source and binary forms, with or without 0018 * modification, are permitted provided that the following conditions 0019 * are met: 0020 * 1. Redistributions of source code must retain the above copyright 0021 * notice, this list of conditions and the following disclaimer. 0022 * 2. Redistributions in binary form must reproduce the above copyright 0023 * notice, this list of conditions and the following disclaimer in the 0024 * documentation and/or other materials provided with the distribution. 0025 * 0026 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0027 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0028 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0029 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0030 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0031 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0032 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0033 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0034 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0035 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0036 * POSSIBILITY OF SUCH DAMAGE. 0037 */ 0038 0039 #ifndef _RTEMS_SCORE_WATCHDOG_H 0040 #define _RTEMS_SCORE_WATCHDOG_H 0041 0042 #include <rtems/score/basedefs.h> 0043 #include <rtems/score/chain.h> 0044 #include <rtems/score/rbtree.h> 0045 0046 struct Per_CPU_Control; 0047 0048 #ifdef __cplusplus 0049 extern "C" { 0050 #endif 0051 0052 /** 0053 * @defgroup RTEMSScoreWatchdog Watchdog Handler 0054 * 0055 * @ingroup RTEMSScore 0056 * 0057 * @brief This group contains the Watchdog Handler implementation. 0058 * 0059 * This handler encapsulates functionality related to the scheduling of 0060 * watchdog functions to be called at specific times in the future. It 0061 * provides mechanisms which can be used to initialize and manipulate watchdog 0062 * timers. 0063 * 0064 * @note This handler does not have anything to do with hardware watchdog 0065 * timers. 0066 * 0067 * @{ 0068 */ 0069 0070 typedef struct Watchdog_Control Watchdog_Control; 0071 0072 /** 0073 * @brief Return type from a Watchdog Service Routine. 0074 * 0075 * This type defines the return type from a Watchdog Service Routine. 0076 */ 0077 typedef void Watchdog_Service_routine; 0078 0079 /** 0080 * @brief Pointer to a watchdog service routine. 0081 * 0082 * This type define a pointer to a watchdog service routine. 0083 */ 0084 typedef Watchdog_Service_routine 0085 ( *Watchdog_Service_routine_entry )( Watchdog_Control * ); 0086 0087 /** 0088 * @brief The watchdog header to manage scheduled watchdogs. 0089 */ 0090 typedef struct { 0091 /** 0092 * @brief Red-black tree of scheduled watchdogs sorted by expiration time. 0093 */ 0094 RBTree_Control Watchdogs; 0095 0096 /** 0097 * @brief The scheduled watchdog with the earliest expiration time or NULL in 0098 * case no watchdog is scheduled. 0099 */ 0100 RBTree_Node *first; 0101 } Watchdog_Header; 0102 0103 /** 0104 * @brief The control block used to manage each watchdog timer. 0105 * 0106 * The following record defines the control block used 0107 * to manage each watchdog timer. 0108 */ 0109 struct Watchdog_Control { 0110 /** 0111 * @brief Nodes for the watchdog. 0112 */ 0113 union { 0114 /** 0115 * @brief this field is a red-black tree node structure and allows this to 0116 * be placed on a red-black tree used to manage the scheduled watchdogs. 0117 */ 0118 RBTree_Node RBTree; 0119 0120 /** 0121 * @brief this field is a chain node structure and allows this to be placed 0122 * on a chain used to manage pending watchdogs by the timer server. 0123 */ 0124 Chain_Node Chain; 0125 } Node; 0126 0127 #if defined(RTEMS_SMP) 0128 /** @brief This field references the processor of this watchdog control. */ 0129 struct Per_CPU_Control *cpu; 0130 #endif 0131 0132 /** @brief This field is the function to invoke. */ 0133 Watchdog_Service_routine_entry routine; 0134 0135 /** @brief This field is the expiration time point. */ 0136 uint64_t expire; 0137 }; 0138 0139 /** @} */ 0140 0141 #ifdef __cplusplus 0142 } 0143 #endif 0144 0145 #endif 0146 /* end of include file */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |