⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userext.h

📁 开放源码的嵌入式开发环境
💻 H
字号:
/**  *  @file  rtems/score/userext.h * *  This include file contains all information about user extensions.  This *  Handler provides mechanisms which can be used to initialize and manipulate *  all user extensions. *//* *  COPYRIGHT (c) 1989-2006. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: userext.h,v 1.23 2006/01/16 15:13:58 joel Exp $ */#ifndef _RTEMS_SCORE_USEREXT_H#define _RTEMS_SCORE_USEREXT_H/** *  @defgroup ScoreUserExt User Extension Handler * *  This handler encapsulates functionality related to the management of *  the user extensions to the SuperCore that are available to the user. *//**@{*/#ifdef __cplusplusextern "C" {#endif#include <rtems/score/interr.h>#include <rtems/score/chain.h>#include <rtems/score/thread.h>/*@}*//** @defgroup ScoreUserExtStruct User Extension Handler Structures * *  The following records defines the User Extension Table. *  This table defines the application dependent routines which *  are invoked at critical points in the life of each thread and *  the system as a whole. *//*@{*//** *  This type indicates the return type of a user extension method. */typedef void User_extensions_routine;/** *  This type defines the prototype of a thread creation extension handler. *  The handler is passed the thread executing and the thread being created. */typedef boolean ( *User_extensions_thread_create_extension )(                 Thread_Control *,                 Thread_Control *             );/** *  This type defines the prototype of a thread deletion extension handler. *  The handler is passed the thread executing and the thread being deleted. */typedef User_extensions_routine ( *User_extensions_thread_delete_extension )(                 Thread_Control *,                 Thread_Control *             );/** *  This type defines the prototype of thread starting extension handler. *  The handler is passed the thread executing and the thread being started. */typedef User_extensions_routine ( *User_extensions_thread_start_extension )(                 Thread_Control *,                 Thread_Control *             );/** *  This type defines the prototype of a thread restarting extension handler. *  The handler is passed the thread executing and the thread being restarted. */typedef User_extensions_routine ( *User_extensions_thread_restart_extension )(                 Thread_Control *,                 Thread_Control *             );/** *  This type defines the prototype of thread context switch extension handler. *  The handler is passed the thread currently executing and the thread being  *  switched to. */typedef User_extensions_routine ( *User_extensions_thread_switch_extension )(                 Thread_Control *,                 Thread_Control *             );/** *  This type defines the prototype of a post context switch extension handler. *  The handler is passed the thread thread being switched to. */typedef User_extensions_routine (*User_extensions_thread_post_switch_extension)(                 Thread_Control *             );/** *  This type defines the prototype of a thread beginning to execute *  extension handler.  The handler is passed the thread executing.  This *  extension is executed in the context of the beginning thread. */typedef User_extensions_routine ( *User_extensions_thread_begin_extension )(                 Thread_Control *             );/** *  This type defines the prototype of a thread exiting extension handler. *  The handler is passed the thread exiting. */typedef User_extensions_routine ( *User_extensions_thread_exitted_extension )(                 Thread_Control *             );/** *  This type defines the prototype of the fatal error extension handler. *  The handler is passed an indicator of the source of the fatal error, *  whether it is internal to RTEMS and an error code. */typedef User_extensions_routine ( *User_extensions_fatal_extension )(                 Internal_errors_Source  /* the_source  */,                 boolean                 /* is_internal */,                 uint32_t                /* the_error   */             );/** *  This type defines a set of user extensions. */typedef struct {  /** This field is the thread creation handler. */  User_extensions_thread_create_extension       thread_create;  /** This field is the thread starting handler. */  User_extensions_thread_start_extension        thread_start;  /** This field is the thread restarting handler. */  User_extensions_thread_restart_extension      thread_restart;  /** This field is the thread deleting handler */  User_extensions_thread_delete_extension       thread_delete;  /** This field is thread context switch handler. */  User_extensions_thread_switch_extension       thread_switch;  /** This field is the thread beginning handler. */  User_extensions_thread_begin_extension        thread_begin;  /** This field is thread exiting handler. */  User_extensions_thread_exitted_extension      thread_exitted;  /** This field is the fatal error extension. */  User_extensions_fatal_extension               fatal;}   User_extensions_Table;/** *  This is used to manage the list of switch handlers.  They are managed *  separately from other extensions for performance reasons. */typedef struct {  /** This field is a Chain Node structure and allows this to be placed on   *  chains for set management.   */  Chain_Node                              Node;  /** This field is the thread switch extension. */  User_extensions_thread_switch_extension thread_switch;}   User_extensions_Switch_control;/** *  This is used to manage each user extension set. *  The switch control is part of the extensions control even *  if not used due to the extension not having a switch *  handler. */typedef struct {  /** This field is a Chain Node structure and allows this to be placed on   *  chains for set management.   */  Chain_Node                     Node;  /** This field is the thread switch user extension. */  User_extensions_Switch_control Switch;  /** This field is the rest of this user extension's entry points.  */  User_extensions_Table          Callouts;}   User_extensions_Control;/** *  This is used to manage the list of active extensions. */SCORE_EXTERN Chain_Control _User_extensions_List;/** *  This is used to manage a chain of user extension task *  switch nodes. */SCORE_EXTERN Chain_Control _User_extensions_Switches_list;/*@}*//** @addtogroup ScoreUserExt *//*@{*//** @brief  User extensions Thread create * *  This routine is used to invoke the user extension for *  the thread creation operate. * *  @param[in] the_thread is the thread being created. * *  @return This method returns TRUE if the user extension executed *          successfully. */boolean _User_extensions_Thread_create (  Thread_Control *the_thread);/** @brief  User extensions Thread delete * *  This routine is used to invoke the user extension for *  the thread deletion operation. * *  @param[in] the_thread is the thread being deleted. */void _User_extensions_Thread_delete (  Thread_Control *the_thread);/** @brief  User extensions Thread start * *  This routine is used to invoke the user extension for *  the thread start operation. * *  @param[in] the_thread is the thread being started. */void _User_extensions_Thread_start (  Thread_Control *the_thread);/** @brief  User extensions Thread restart * *  This routine is used to invoke the user extension for *  the thread restart operation. * *  @param[in] the_thread is the thread being restarted. */void _User_extensions_Thread_restart (  Thread_Control *the_thread);/** @brief  User extensions Thread begin * *  This routine is used to invoke the user extension which *  is invoked when a thread begins. * *  @param[in] executing is the thread beginning to execute. */void _User_extensions_Thread_begin (  Thread_Control *executing);/** @brief  User extensions Thread exitted * *  This routine is used to invoke the user extension which *  is invoked when a thread exits. * *  @param[in] executing is the thread voluntarily exiting. */void _User_extensions_Thread_exitted (  Thread_Control *executing);/** @brief  User extensions Fatal * *  This routine is used to invoke the user extension invoked *  when a fatal error occurs. * *  @param[in] the_source is the source of the fatal error. *  @param[in] is_internal is TRUE if the error originated inside RTEMS. *  @param[in] the_error is an indication of the actual error. */void _User_extensions_Fatal (  Internal_errors_Source  the_source,  boolean                 is_internal,  uint32_t                the_error);#ifndef __RTEMS_APPLICATION__#include <rtems/score/userext.inl>#endif#ifdef __cplusplus}#endif/**@}*/#endif/* end of include file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -