forked from Imagelibrary/rtems
the inline implementation. The impetus for this was twofold. First, it is incorrect to have static inline prototypes when using the macro implementation. Second, this reduced the number of lines in the include files seen by rtems.h by about 2000 lines. Next we restricted visibility for the inline routines to inside the executive itself EXCEPT for a handful of objects. This reduced the number of include files included by rtems.h by 40 files and reduced the lines in the include files seen by rtems.h by about 6000 lines. In total, these reduced the compile time of the entire RTEMS tree by 20%. This results in about 8 minutes savings on the SparcStation 10 morgana.
137 lines
3.6 KiB
C
137 lines
3.6 KiB
C
/* extension.h
|
|
*
|
|
* This include file contains all the constants, structures, and
|
|
* prototypes associated with the User Extension Manager. This manager
|
|
* provides a mechanism for manipulating sets of user-defined extensions.
|
|
*
|
|
* Directives provided are:
|
|
*
|
|
* + create user extension set
|
|
* + get ID of user extension set
|
|
* + delete user extension set
|
|
*
|
|
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
|
|
* On-Line Applications Research Corporation (OAR).
|
|
* All rights assigned to U.S. Government, 1994.
|
|
*
|
|
* This material may be reproduced by or for the U.S. Government pursuant
|
|
* to the copyright license under the clause at DFARS 252.227-7013. This
|
|
* notice must appear in all copies of this file and its derivatives.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#ifndef __RTEMS_EXTENSION_MANAGER_h
|
|
#define __RTEMS_EXTENSION_MANAGER_h
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <rtems/score/object.h>
|
|
#include <rtems/score/userext.h>
|
|
#include <rtems/rtems/status.h> /* XXX */
|
|
#include <rtems/rtems/types.h> /* XXX */
|
|
|
|
/*
|
|
* Extension related types
|
|
*/
|
|
|
|
typedef User_extensions_routine rtems_extension;
|
|
typedef User_extensions_thread_create_extension rtems_task_create_extension;
|
|
typedef User_extensions_thread_delete_extension rtems_task_delete_extension;
|
|
typedef User_extensions_thread_start_extension rtems_task_start_extension;
|
|
typedef User_extensions_thread_restart_extension rtems_task_restart_extension;
|
|
typedef User_extensions_thread_switch_extension rtems_task_switch_extension;
|
|
typedef User_extensions_thread_begin_extension rtems_task_begin_extension;
|
|
typedef User_extensions_thread_exitted_extension rtems_task_exitted_extension;
|
|
typedef User_extensions_fatal_extension rtems_fatal_extension;
|
|
|
|
typedef User_extensions_Table rtems_extensions_table;
|
|
|
|
/*
|
|
* The following defines the information control block used to manage
|
|
* this class of objects.
|
|
*/
|
|
|
|
EXTERN Objects_Information _Extension_Information;
|
|
|
|
/*
|
|
* The following records define the control block used to manage
|
|
* each extension.
|
|
*/
|
|
|
|
typedef struct {
|
|
Objects_Control Object;
|
|
User_extensions_Control Extension;
|
|
} Extension_Control;
|
|
|
|
/*
|
|
* _Extension_Manager_initialization
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* This routine performs the initialization necessary for this manager.
|
|
*/
|
|
|
|
void _Extension_Manager_initialization(
|
|
unsigned32 maximum_extensions
|
|
);
|
|
|
|
/*
|
|
* rtems_extension_create
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* This routine implements the rtems_extension_create directive. The
|
|
* extension will have the name name. The entry points of the
|
|
* routines which constitute this extension set are in EXTENSION_TABLE.
|
|
* It returns the id of the created extension in ID.
|
|
*/
|
|
|
|
rtems_status_code rtems_extension_create(
|
|
rtems_name name,
|
|
rtems_extensions_table *extension_table,
|
|
Objects_Id *id
|
|
);
|
|
|
|
/*
|
|
* rtems_extension_ident
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* This routine implements the rtems_extension_ident directive.
|
|
* This directive returns the extension ID associated with name.
|
|
* If more than one extension is named name, then the extension
|
|
* to which the ID belongs is arbitrary.
|
|
*/
|
|
|
|
rtems_status_code rtems_extension_ident(
|
|
rtems_name name,
|
|
Objects_Id *id
|
|
);
|
|
|
|
/*
|
|
* rtems_extension_delete
|
|
*
|
|
* DESCRIPTION:
|
|
*
|
|
* This routine implements the rtems_extension_delete directive. The
|
|
* extension indicated by ID is deleted.
|
|
*/
|
|
|
|
rtems_status_code rtems_extension_delete(
|
|
Objects_Id id
|
|
);
|
|
|
|
#ifndef __RTEMS_APPLICATION__
|
|
#include <rtems/extension.inl>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
/* end of include file */
|