2008-04-18 Joel Sherrill <joel.sherrill@oarcorp.com>

* rtems/include/rtems.h, rtems/include/rtems/rtems/asr.h,
	rtems/include/rtems/rtems/attr.h,
	rtems/include/rtems/rtems/barrier.h,
	rtems/include/rtems/rtems/barriermp.h,
	rtems/include/rtems/rtems/cache.h, rtems/include/rtems/rtems/clock.h,
	rtems/include/rtems/rtems/config.h,
	rtems/include/rtems/rtems/dpmem.h, rtems/include/rtems/rtems/event.h,
	rtems/include/rtems/rtems/eventmp.h,
	rtems/include/rtems/rtems/eventset.h,
	rtems/include/rtems/rtems/intr.h,
	rtems/include/rtems/rtems/message.h,
	rtems/include/rtems/rtems/modes.h, rtems/include/rtems/rtems/mp.h,
	rtems/include/rtems/rtems/msgmp.h,
	rtems/include/rtems/rtems/object.h,
	rtems/include/rtems/rtems/options.h,
	rtems/include/rtems/rtems/part.h, rtems/include/rtems/rtems/partmp.h,
	rtems/include/rtems/rtems/ratemon.h,
	rtems/include/rtems/rtems/region.h,
	rtems/include/rtems/rtems/regionmp.h,
	rtems/include/rtems/rtems/rtemsapi.h,
	rtems/include/rtems/rtems/sem.h, rtems/include/rtems/rtems/semmp.h,
	rtems/include/rtems/rtems/signal.h,
	rtems/include/rtems/rtems/signalmp.h,
	rtems/include/rtems/rtems/status.h,
	rtems/include/rtems/rtems/support.h,
	rtems/include/rtems/rtems/taskmp.h,
	rtems/include/rtems/rtems/tasks.h, rtems/include/rtems/rtems/timer.h,
	rtems/include/rtems/rtems/types.h, rtems/inline/rtems/rtems/asr.inl,
	rtems/inline/rtems/rtems/attr.inl,
	rtems/inline/rtems/rtems/barrier.inl,
	rtems/inline/rtems/rtems/dpmem.inl,
	rtems/inline/rtems/rtems/event.inl,
	rtems/inline/rtems/rtems/eventset.inl,
	rtems/inline/rtems/rtems/message.inl,
	rtems/inline/rtems/rtems/modes.inl,
	rtems/inline/rtems/rtems/options.inl,
	rtems/inline/rtems/rtems/part.inl,
	rtems/inline/rtems/rtems/ratemon.inl,
	rtems/inline/rtems/rtems/region.inl,
	rtems/inline/rtems/rtems/sem.inl,
	rtems/inline/rtems/rtems/status.inl,
	rtems/inline/rtems/rtems/support.inl,
	rtems/inline/rtems/rtems/tasks.inl,
	rtems/inline/rtems/rtems/timer.inl: Initial conversion of Classic API
	header files to Doxygen.
	* rtems/Doxyfile: New file.
This commit is contained in:
Joel Sherrill
2008-04-18 15:02:20 +00:00
parent 6be8a839ce
commit 067a96ad0c
54 changed files with 2598 additions and 1881 deletions
+49
View File
@@ -1,3 +1,52 @@
2008-04-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* rtems/include/rtems.h, rtems/include/rtems/rtems/asr.h,
rtems/include/rtems/rtems/attr.h,
rtems/include/rtems/rtems/barrier.h,
rtems/include/rtems/rtems/barriermp.h,
rtems/include/rtems/rtems/cache.h, rtems/include/rtems/rtems/clock.h,
rtems/include/rtems/rtems/config.h,
rtems/include/rtems/rtems/dpmem.h, rtems/include/rtems/rtems/event.h,
rtems/include/rtems/rtems/eventmp.h,
rtems/include/rtems/rtems/eventset.h,
rtems/include/rtems/rtems/intr.h,
rtems/include/rtems/rtems/message.h,
rtems/include/rtems/rtems/modes.h, rtems/include/rtems/rtems/mp.h,
rtems/include/rtems/rtems/msgmp.h,
rtems/include/rtems/rtems/object.h,
rtems/include/rtems/rtems/options.h,
rtems/include/rtems/rtems/part.h, rtems/include/rtems/rtems/partmp.h,
rtems/include/rtems/rtems/ratemon.h,
rtems/include/rtems/rtems/region.h,
rtems/include/rtems/rtems/regionmp.h,
rtems/include/rtems/rtems/rtemsapi.h,
rtems/include/rtems/rtems/sem.h, rtems/include/rtems/rtems/semmp.h,
rtems/include/rtems/rtems/signal.h,
rtems/include/rtems/rtems/signalmp.h,
rtems/include/rtems/rtems/status.h,
rtems/include/rtems/rtems/support.h,
rtems/include/rtems/rtems/taskmp.h,
rtems/include/rtems/rtems/tasks.h, rtems/include/rtems/rtems/timer.h,
rtems/include/rtems/rtems/types.h, rtems/inline/rtems/rtems/asr.inl,
rtems/inline/rtems/rtems/attr.inl,
rtems/inline/rtems/rtems/barrier.inl,
rtems/inline/rtems/rtems/dpmem.inl,
rtems/inline/rtems/rtems/event.inl,
rtems/inline/rtems/rtems/eventset.inl,
rtems/inline/rtems/rtems/message.inl,
rtems/inline/rtems/rtems/modes.inl,
rtems/inline/rtems/rtems/options.inl,
rtems/inline/rtems/rtems/part.inl,
rtems/inline/rtems/rtems/ratemon.inl,
rtems/inline/rtems/rtems/region.inl,
rtems/inline/rtems/rtems/sem.inl,
rtems/inline/rtems/rtems/status.inl,
rtems/inline/rtems/rtems/support.inl,
rtems/inline/rtems/rtems/tasks.inl,
rtems/inline/rtems/rtems/timer.inl: Initial conversion of Classic API
header files to Doxygen.
* rtems/Doxyfile: New file.
2008-04-18 Joel Sherrill <joel.sherrill@oarcorp.com>
* posix/src/key.c: Include <limits.h>
File diff suppressed because it is too large Load Diff
+21 -19
View File
@@ -1,14 +1,13 @@
/**
* @file rtems.h
*/
/*
*
* This include file contains information about RTEMS executive that
* is required by the application and is CPU independent. It includes
* two (2) CPU dependent files to tailor its data structures for a
* particular processor.
*
* COPYRIGHT (c) 1989-2008.
*/
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -21,6 +20,13 @@
#ifndef _RTEMS_H
#define _RTEMS_H
/**
* @defgroup ClassicRTEMS Classic API RTEMS Header
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -72,57 +78,53 @@ extern "C" {
#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
/*
/**
* The following define the constants which may be used in name searches.
*/
#define RTEMS_SEARCH_ALL_NODES OBJECTS_SEARCH_ALL_NODES
#define RTEMS_SEARCH_OTHER_NODES OBJECTS_SEARCH_OTHER_NODES
#define RTEMS_SEARCH_LOCAL_NODE OBJECTS_SEARCH_LOCAL_NODE
#define RTEMS_WHO_AM_I OBJECTS_WHO_AM_I
/*
/**
* Parameters and return id's for _Objects_Get_next
*/
#define RTEMS_OBJECT_ID_INITIAL_INDEX OBJECTS_ID_INITIAL_INDEX
#define RTEMS_OBJECT_ID_FINAL_INDEX OBJECTS_ID_FINAL_INDEX
#define RTEMS_OBJECT_ID_INITIAL(api, class, node) OBJECTS_ID_INITIAL(api, class, node)
#define RTEMS_OBJECT_ID_FINAL OBJECTS_ID_FINAL
/*
/**
* The following constant defines the minimum stack size which every
* thread must exceed.
*/
#define RTEMS_MINIMUM_STACK_SIZE STACK_MINIMUM_SIZE
/*
/**
* Constant for indefinite wait. (actually an illegal interval)
*/
#define RTEMS_NO_TIMEOUT WATCHDOG_NO_TIMEOUT
/*
/**
* An MPCI must support packets of at least this size.
*/
#define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE
/*
* The following constant defines the number of uint32_t 's
/**
* The following constant defines the number of uint32_t's
* in a packet which must be converted to native format in a
* heterogeneous system. In packets longer than
* MP_PACKET_MINIMUN_HETERO_CONVERSION uint32_t 's, some of the "extra" data
* MP_PACKET_MINIMUN_HETERO_CONVERSION uint32_t's, some of the "extra" data
* may a user message buffer which is not automatically endian swapped.
*/
#define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of include file */
+48 -14
View File
@@ -1,13 +1,12 @@
/**
* @file rtems/rtems/asr.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Asynchronous Signal Handler. This Handler provides the low-level
* support required by the Signal Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -26,35 +25,36 @@ extern "C" {
#include <rtems/rtems/modes.h>
/*
/**
* @defgroup ClassicASR Classic API ASR Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following type defines the control block used to manage
* each signal set.
*/
typedef uint32_t rtems_signal_set;
/*
/**
* Return type for ASR Handler
*/
typedef void rtems_asr;
/*
/**
* The following type corresponds to the applications asynchronous
* signal processing routine.
*/
typedef rtems_asr ( *rtems_asr_entry )(
rtems_signal_set
);
/*
*
/**
* The following defines the control structure used to manage
* signals. Each thread has a copy of this record.
*/
typedef struct {
boolean is_enabled; /* are ASRs enabled currently? */
rtems_asr_entry handler; /* address of RTEMS_ASR */
@@ -69,37 +69,69 @@ typedef struct {
* be used to compose a signal set.
*/
/** This defines the bit in the signal set associated with signal 0. */
#define RTEMS_SIGNAL_0 0x00000001
/** This defines the bit in the signal set associated with signal 1. */
#define RTEMS_SIGNAL_1 0x00000002
/** This defines the bit in the signal set associated with signal 2. */
#define RTEMS_SIGNAL_2 0x00000004
/** This defines the bit in the signal set associated with signal 3. */
#define RTEMS_SIGNAL_3 0x00000008
/** This defines the bit in the signal set associated with signal 4. */
#define RTEMS_SIGNAL_4 0x00000010
/** This defines the bit in the signal set associated with signal 5. */
#define RTEMS_SIGNAL_5 0x00000020
/** This defines the bit in the signal set associated with signal 6. */
#define RTEMS_SIGNAL_6 0x00000040
/** This defines the bit in the signal set associated with signal 7. */
#define RTEMS_SIGNAL_7 0x00000080
/** This defines the bit in the signal set associated with signal 8. */
#define RTEMS_SIGNAL_8 0x00000100
/** This defines the bit in the signal set associated with signal 9. */
#define RTEMS_SIGNAL_9 0x00000200
/** This defines the bit in the signal set associated with signal 10. */
#define RTEMS_SIGNAL_10 0x00000400
/** This defines the bit in the signal set associated with signal 11. */
#define RTEMS_SIGNAL_11 0x00000800
/** This defines the bit in the signal set associated with signal 12. */
#define RTEMS_SIGNAL_12 0x00001000
/** This defines the bit in the signal set associated with signal 13. */
#define RTEMS_SIGNAL_13 0x00002000
/** This defines the bit in the signal set associated with signal 14. */
#define RTEMS_SIGNAL_14 0x00004000
/** This defines the bit in the signal set associated with signal 15. */
#define RTEMS_SIGNAL_15 0x00008000
/** This defines the bit in the signal set associated with signal 16. */
#define RTEMS_SIGNAL_16 0x00010000
/** This defines the bit in the signal set associated with signal 17. */
#define RTEMS_SIGNAL_17 0x00020000
/** This defines the bit in the signal set associated with signal 18. */
#define RTEMS_SIGNAL_18 0x00040000
/** This defines the bit in the signal set associated with signal 19. */
#define RTEMS_SIGNAL_19 0x00080000
/** This defines the bit in the signal set associated with signal 20. */
#define RTEMS_SIGNAL_20 0x00100000
/** This defines the bit in the signal set associated with signal 21. */
#define RTEMS_SIGNAL_21 0x00200000
/** This defines the bit in the signal set associated with signal 22. */
#define RTEMS_SIGNAL_22 0x00400000
/** This defines the bit in the signal set associated with signal 23. */
#define RTEMS_SIGNAL_23 0x00800000
/** This defines the bit in the signal set associated with signal 24. */
#define RTEMS_SIGNAL_24 0x01000000
/** This defines the bit in the signal set associated with signal 25. */
#define RTEMS_SIGNAL_25 0x02000000
/** This defines the bit in the signal set associated with signal 26. */
#define RTEMS_SIGNAL_26 0x04000000
/** This defines the bit in the signal set associated with signal 27. */
#define RTEMS_SIGNAL_27 0x08000000
/** This defines the bit in the signal set associated with signal 28. */
#define RTEMS_SIGNAL_28 0x10000000
/** This defines the bit in the signal set associated with signal 29. */
#define RTEMS_SIGNAL_29 0x20000000
/** This defines the bit in the signal set associated with signal 30. */
#define RTEMS_SIGNAL_30 0x40000000
/** This defines the bit in the signal set associated with signal 31. */
#define RTEMS_SIGNAL_31 0x80000000
#ifndef __RTEMS_APPLICATION__
@@ -110,5 +142,7 @@ typedef struct {
}
#endif
/**@}*/
#endif
/* end of include file */
+15 -10
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/attr.h
*/
/*
*
* This include file contains all information about the Object Attributes
* Handler.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -23,6 +22,13 @@
extern "C" {
#endif
/**
* @defgroup ClassicAttributes Classic API Attributes
*
* This encapsulates functionality which XXX
*/
/**@{*/
/* types */
typedef uint32_t rtems_attribute;
@@ -74,17 +80,14 @@ typedef uint32_t rtems_attribute;
#define ATTRIBUTES_REQUIRED 0
#endif
/*
* _Attributes_Handler_initialization
*
* DESCRIPTION:
/**
* @brief _Attributes_Handler_initialization
*
* This routine performs initialization for this handler.
*
* NOTE: There is no initialization required in C. Conditional compilation
* takes care of this in C.
*/
#define _Attributes_Handler_initialization()
#ifndef __RTEMS_APPLICATION__
@@ -95,5 +98,7 @@ typedef uint32_t rtems_attribute;
}
#endif
/**@}*/
#endif
/* end of include file */
+18 -15
View File
@@ -1,20 +1,19 @@
/**
* @file rtems/rtems/barrier.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Barrier Manager.
*
* Directives provided are:
*
* + create a barrier
* + get an ID of a barrier
* + delete a barrier
* + wait for a barrier
* + signal a barrier
*
* COPYRIGHT (c) 1989-2007.
* - create a barrier
* - get an ID of a barrier
* - delete a barrier
* - wait for a barrier
* - signal a barrier
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -27,6 +26,13 @@
#ifndef _RTEMS_RTEMS_BARRIER_H
#define _RTEMS_RTEMS_BARRIER_H
/**
* @defgroup ClassicBarrier Classic API Barrier
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifndef RTEMS_BARRIER_EXTERN
#define RTEMS_BARRIER_EXTERN extern
#endif
@@ -45,7 +51,6 @@ extern "C" {
/**
* This type defines the control block used to manage each barrier.
*/
typedef struct {
/** This is used to manage a barrier as an object. */
Objects_Control Object;
@@ -59,7 +64,6 @@ typedef struct {
* The following defines the information control block used to manage
* this class of objects.
*/
RTEMS_BARRIER_EXTERN Objects_Information _Barrier_Information;
/**
@@ -70,7 +74,6 @@ RTEMS_BARRIER_EXTERN Objects_Information _Barrier_Information;
* @param[in] maximum_barriers is the total number of barriers allowed to
* concurrently be active in the system.
*/
void _Barrier_Manager_initialization(
uint32_t maximum_barriers
);
@@ -92,7 +95,6 @@ void _Barrier_Manager_initialization(
*
* @return a status code indicating success or the reason for failure.
*/
rtems_status_code rtems_barrier_create(
rtems_name name,
rtems_attribute attribute_set,
@@ -116,7 +118,6 @@ rtems_status_code rtems_barrier_create(
*
* @return a status code indicating success or the reason for failure.
*/
rtems_status_code rtems_barrier_ident(
rtems_name name,
rtems_id *id
@@ -195,5 +196,7 @@ rtems_status_code _Barrier_Translate_core_barrier_return_code (
}
#endif
/**@}*/
#endif
/* end of include file */
+13 -5
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/barriermp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Barrier Manager.
*
* COPYRIGHT (c) 1989-2006.
*/
/* COPYRIGHT (c) 1989-2006.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,6 +18,13 @@
#ifndef _RTEMS_RTEMS_SEMMP_H
#define _RTEMS_RTEMS_SEMMP_H
/**
* @defgroup ClassicBarrierMP Classic API Barrier MP Support
*
* This encapsulates functionality which XXX
*/
/**{*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -137,5 +143,7 @@ Barrier_MP_Packet *_Barrier_MP_Get_packet ( void );
}
#endif
/**@}*/
#endif
/* end of file */
+37 -21
View File
@@ -1,11 +1,10 @@
/**
* @file rtems/rtems/cache.h
*
* Cache Manager
*/
/*
* Cache Manager
*
* COPYRIGHT (c) 1989-1999.
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -38,97 +37,112 @@ extern "C" {
#include <rtems/system.h>
#include <sys/types.h>
/**
* @defgroup ClassicCache Classic API Cache
*
* This encapsulates functionality which XXX
*/
/**@{*/
/*
* These functions will ONLY do something if the
* libcpu support includes data cache routines AND
* the CPU model supports data caching.
*/
/*
/**
* This function is called to flush the data cache by performing cache
* copybacks. It must determine how many cache lines need to be copied
* back and then perform the copybacks.
*/
void rtems_cache_flush_multiple_data_lines( const void *, size_t );
/*
/**
* This function is responsible for performing a data cache invalidate.
* It must determine how many cache lines need to be invalidated and then
* perform the invalidations.
*/
void rtems_cache_invalidate_multiple_data_lines( const void *, size_t );
/*
/**
* This function is responsible for performing a data cache flush.
* It flushes the entire cache.
*/
void rtems_cache_flush_entire_data( void );
/*
/**
* This function is responsible for performing a data cache
* invalidate. It invalidates the entire cache.
*/
void rtems_cache_invalidate_entire_data( void );
/*
/**
* This function returns the data cache granularity.
*/
int rtems_cache_get_data_line_size( void );
/*
/**
* This function freezes the data cache.
*/
void rtems_cache_freeze_data( void );
/*
/**
* This function unfreezes the data cache.
*/
void rtems_cache_unfreeze_data( void );
/*
* These functions enable/disable the data cache.
/**
* This function enables the data cache.
*/
void rtems_cache_enable_data( void );
/**
* This function disables the data cache.
*/
void rtems_cache_disable_data( void );
/*
/**
* These functions will ONLY do something if the
* libcpu support includes instruction cache routines AND
* the CPU model supports instruction caching.
*/
/*
/**
* This function is responsible for performing an instruction cache
* invalidate. It must determine how many cache lines need to be invalidated
* and then perform the invalidations.
*/
void rtems_cache_invalidate_multiple_instruction_lines( const void *, size_t );
/*
/**
* This function is responsible for performing an instruction cache
* invalidate. It invalidates the entire cache.
*/
void rtems_cache_invalidate_entire_instruction( void );
/*
/**
* This function returns the instruction cache granularity.
*/
int rtems_cache_get_instruction_line_size( void );
/*
/**
* This function freezes the instruction cache.
*/
void rtems_cache_freeze_instruction( void );
/*
/**
* This function unfreezes the instruction cache.
*/
void rtems_cache_unfreeze_instruction( void );
/*
* These functions enable/disable the instruction cache.
/**
* This function enables the instruction cache.
*/
void rtems_cache_enable_instruction( void );
/**
* This function disables the instruction cache.
*/
void rtems_cache_disable_instruction( void );
@@ -136,5 +150,7 @@ void rtems_cache_disable_instruction( void );
}
#endif
/**@}*/
#endif
/* end of include file */
+22 -14
View File
@@ -1,21 +1,20 @@
/**
* @file rtems/rtems/clock.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Clock Manager. This manager provides facilities to set, obtain,
* and continually update the current date and time.
*
* This manager provides directives to:
*
* + set the current date and time
* + obtain the current date and time
* + set the nanoseconds since last clock tick handler
* + announce a clock tick
* + obtain the system uptime
*
* COPYRIGHT (c) 1989-2008.
* - set the current date and time
* - obtain the current date and time
* - set the nanoseconds since last clock tick handler
* - announce a clock tick
* - obtain the system uptime
*/
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -28,15 +27,22 @@
#ifndef _RTEMS_RTEMS_CLOCK_H
#define _RTEMS_RTEMS_CLOCK_H
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
/**
* @defgroup ClassicClock Classic API Clock
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
/**
* List of things which can be returned by the rtems_clock_get directive.
*/
@@ -259,5 +265,7 @@ Watchdog_Interval _TOD_To_seconds(
}
#endif
/**@}*/
#endif
/* end of include file */
+14 -7
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/config.h
*/
/*
*
* This include file contains the table of user defined configuration
* parameters specific for the RTEMS API.
*
* COPYRIGHT (c) 1989-2006.
*/
/* COPYRIGHT (c) 1989-2006.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -26,7 +25,14 @@ extern "C" {
#include <rtems/rtems/types.h>
#include <rtems/rtems/tasks.h>
/*
/**
* @defgroup ClassicConfig Classic API Configuration
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following records define the Configuration Table. The
* information contained in this table is required in all
* RTEMS systems, whether single or multiprocessor. This
@@ -34,7 +40,6 @@ extern "C" {
*
* + required number of each object type
*/
typedef struct {
uint32_t maximum_tasks;
uint32_t maximum_timers;
@@ -53,5 +58,7 @@ typedef struct {
}
#endif
/**@}*/
#endif
/* end of include file */
+32 -44
View File
@@ -1,8 +1,6 @@
/**
* @file rtems/rtems/dpmem.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Dual Ported Memory Manager. This manager provides a mechanism
* for converting addresses between internal and external representations
@@ -10,14 +8,15 @@
*
* Directives provided are:
*
* + create a port
* + get ID of a port
* + delete a port
* + convert external to internal address
* + convert internal to external address
* - create a port
* - get ID of a port
* - delete a port
* - convert external to internal address
* - convert internal to external address
*
*
* COPYRIGHT (c) 1989-2007.
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -42,12 +41,18 @@ extern "C" {
#include <rtems/rtems/support.h>
#include <rtems/rtems/status.h>
/*
/**
* @defgroup ClassicDPMEM Classic API Dual Ported Memory
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following structure defines the port control block. Each port
* has a control block associated with it. This control block contains
* all information required to support the port related operations.
*/
typedef struct {
Objects_Control Object;
void *internal_base; /* base internal address */
@@ -55,28 +60,22 @@ typedef struct {
uint32_t length; /* length of dual-ported area */
} Dual_ported_memory_Control;
/*
/**
* The following define the internal Dual Ported Memory information.
*/
RTEMS_DPMEM_EXTERN Objects_Information _Dual_ported_memory_Information;
/*
* _Dual_ported_memory_Manager_initialization
*
* DESCRIPTION:
/**
* @brief _Dual_ported_memory_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Dual_ported_memory_Manager_initialization(
uint32_t maximum_ports
);
/*
* rtems_port_create
*
* DESCRIPTION:
/**
* @brief rtems_port_create
*
* This routine implements the rtems_port_create directive. The port
* will have the name name. The port maps onto an area of dual ported
@@ -84,7 +83,6 @@ void _Dual_ported_memory_Manager_initialization(
* as the internal and external starting addresses, respectively.
* It returns the id of the created port in ID.
*/
rtems_status_code rtems_port_create(
rtems_name name,
void *internal_start,
@@ -93,60 +91,48 @@ rtems_status_code rtems_port_create(
Objects_Id *id
);
/*
* rtems_port_ident
*
* DESCRIPTION:
/**
* @brief rtems_port_ident
*
* This routine implements the rtems_port_ident directive. This directive
* returns the port ID associated with name. If more than one port is
* named name, then the port to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_port_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_port_delete
*
* DESCRIPTION:
/**
* @brief rtems_port_delete
*
* This routine implements the rtems_port_delete directive. It deletes
* the port associated with ID.
*/
rtems_status_code rtems_port_delete(
Objects_Id id
);
/*
* rtems_port_external_to_internal
*
* DESCRIPTION:
/**
* @brief rtems_port_external_to_internal
*
* This routine implements the rtems_port_external_to_internal directive.
* It returns the internal port address which maps to the provided
* external port address for the specified port ID.
*/
rtems_status_code rtems_port_external_to_internal(
Objects_Id id,
void *external,
void **internal
);
/*
* rtems_port_internal_to_external
*
* DESCRIPTION:
/**
* @brief rtems_port_internal_to_external
*
* This routine implements the Port_internal_to_external directive.
* It returns the external port address which maps to the provided
* internal port address for the specified port ID.
*/
rtems_status_code rtems_port_internal_to_external(
Objects_Id id,
void *internal,
@@ -161,5 +147,7 @@ rtems_status_code rtems_port_internal_to_external(
}
#endif
/**@}*/
#endif
/* end of include file */
+30 -44
View File
@@ -1,19 +1,18 @@
/**
* @file rtems/rtems/event.h
*/
/*
*
* This include file contains the information pertaining to the Event
* Manager. This manager provides a high performance method of communication
* and synchronization.
*
* Directives provided are:
*
* + send an event set to a task
* + receive event condition
* - send an event set to a task
* - receive event condition
*
*
* COPYRIGHT (c) 1989-2008.
*/
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -43,43 +42,41 @@ extern "C" {
#include <rtems/score/watchdog.h>
#include <rtems/rtems/eventset.h>
/*
/**
* @defgroup ClassicEvent Classic API Event
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* This constant is passed as the event_in to the
* rtems_event_receive directive to determine which events are pending.
*/
#define EVENT_CURRENT 0
/*
* Event_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Event_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Event_Manager_initialization( void );
/*
* rtems_event_send
*
* DESCRIPTION:
/**
* @brief rtems_event_send
*
* This routine implements the rtems_event_send directive. It sends
* event_in to the task specified by ID. If the task is blocked
* waiting to receive events and the posting of event_in satisfies
* the task's event condition, then it is unblocked.
*/
rtems_status_code rtems_event_send (
Objects_Id id,
rtems_event_set event_in
);
/*
* rtems_event_receive
*
* DESCRIPTION:
/**
* @brief rtems_event_receive
*
* This routine implements the rtems_event_receive directive. This
* directive is invoked when the calling task wishes to receive
@@ -92,7 +89,6 @@ rtems_status_code rtems_event_send (
* parameter. This directive returns the events received in the
* event_out parameter.
*/
rtems_status_code rtems_event_receive (
rtems_event_set event_in,
rtems_option option_set,
@@ -100,10 +96,8 @@ rtems_status_code rtems_event_receive (
rtems_event_set *event_out
);
/*
* _Event_Seize
*
* DESCRIPTION:
/**
* @brief Event_Seize
*
* This routine determines if the event condition event_in is
* satisfied. If so or if the no_wait option is enabled in option_set,
@@ -111,7 +105,6 @@ rtems_status_code rtems_event_receive (
* conditions is true, then the calling task is blocked with an
* optional timeout of ticks clock ticks.
*/
void _Event_Seize (
rtems_event_set event_in,
rtems_option option_set,
@@ -119,23 +112,18 @@ void _Event_Seize (
rtems_event_set *event_out
);
/*
* _Event_Surrender
*
* DESCRIPTION:
/**
* @brief Event_Surrender
*
* This routine determines if the event condition of the_thread
* has been satisfied. If so, it unblocks the_thread.
*/
void _Event_Surrender (
Thread_Control *the_thread
);
/*
* _Event_Timeout
*
* DESCRIPTION:
/**
* @brief Event_Timeout
*
* This routine is invoked when a task's event receive request
* has not been satisfied after the specified timeout interval.
@@ -143,18 +131,14 @@ void _Event_Surrender (
* code will be set in it's control block to indicate that a timeout
* has occurred.
*/
void _Event_Timeout (
Objects_Id id,
void *ignored
);
/*
* The following defines the synchronization flag used by the
* Event Manager to insure that signals sent to the currently
* executing thread are received properly.
/**
* @brief he following defines the synchronization flag used by the
*/
RTEMS_EVENT_EXTERN volatile Thread_blocking_operation_States _Event_Sync_state;
#if defined(RTEMS_MULTIPROCESSING)
@@ -168,5 +152,7 @@ RTEMS_EVENT_EXTERN volatile Thread_blocking_operation_States _Event_Sync_state;
}
#endif
/**@}*/
#endif
/* end of include file */
+27 -40
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/eventmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Event Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -29,21 +28,26 @@ extern "C" {
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
/**
* @defgroup ClassicEventMP Classic API Event MP Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following enumerated type defines the list of
* remote event operations.
*/
typedef enum {
EVENT_MP_SEND_REQUEST = 0,
EVENT_MP_SEND_RESPONSE = 1
} Event_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote event operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Event_MP_Remote_operations operation;
@@ -51,64 +55,50 @@ typedef struct {
} Event_MP_Packet;
/*
* _Event_MP_Send_process_packet
*
* DESCRIPTION:
* @brief Event_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*
* This routine is not needed since there are no process
* @note This routine is not needed since there are no process
* packets to be sent by this manager.
*/
/*
* _Event_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief Event_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Event_MP_Send_request_packet (
Event_MP_Remote_operations operation,
Objects_Id event_id,
rtems_event_set event_in
);
/*
* _Event_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief Event_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Event_MP_Send_response_packet (
Event_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _Event_MP_Process_packet
*
* DESCRIPTION:
/**
* @brief Event_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Event_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Event_MP_Send_object_was_deleted
*
* DESCRIPTION:
* @brief Event_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
@@ -119,9 +109,7 @@ void _Event_MP_Process_packet (
*/
/*
* _Event_MP_Send_extract_proxy
*
* DESCRIPTION:
* @brief Event_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
@@ -131,19 +119,18 @@ void _Event_MP_Process_packet (
* deleted by this manager.
*/
/*
* _Event_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief Event_MP_Get_packet
*
* This function is used to obtain a event mp packet.
*/
Event_MP_Packet *_Event_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
+48 -12
View File
@@ -1,13 +1,12 @@
/**
* @file rtems/rtems/eventset.h
*/
/*
*
* This include file contains the information pertaining to the
* Event Sets Handler. This handler provides methods for the manipulation
* of event sets which will be sent and received by tasks.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -20,63 +19,98 @@
#ifndef _RTEMS_RTEMS_EVENTSET_H
#define _RTEMS_RTEMS_EVENTSET_H
/**
* @defgroup ClassicEventSet Classic API Event Set
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
/*
/**
* The following defines the type used to control event sets.
*/
typedef uint32_t rtems_event_set;
/*
/**
* The following constants define the individual events which may
* be used to compose an event set.
*/
#define RTEMS_PENDING_EVENTS 0 /* receive pending events */
#define RTEMS_ALL_EVENTS 0xFFFFFFFF
/** This defines the bit in the event set associated with event 0. */
#define RTEMS_EVENT_0 0x00000001
/** This defines the bit in the event set associated with event 1. */
#define RTEMS_EVENT_1 0x00000002
/** This defines the bit in the event set associated with event 2. */
#define RTEMS_EVENT_2 0x00000004
/** This defines the bit in the event set associated with event 3. */
#define RTEMS_EVENT_3 0x00000008
/** This defines the bit in the event set associated with event 4. */
#define RTEMS_EVENT_4 0x00000010
/** This defines the bit in the event set associated with event 5. */
#define RTEMS_EVENT_5 0x00000020
/** This defines the bit in the event set associated with event 6. */
#define RTEMS_EVENT_6 0x00000040
/** This defines the bit in the event set associated with event 7. */
#define RTEMS_EVENT_7 0x00000080
/** This defines the bit in the event set associated with event 8. */
#define RTEMS_EVENT_8 0x00000100
/** This defines the bit in the event set associated with event 9. */
#define RTEMS_EVENT_9 0x00000200
/** This defines the bit in the event set associated with event 10. */
#define RTEMS_EVENT_10 0x00000400
/** This defines the bit in the event set associated with event 11. */
#define RTEMS_EVENT_11 0x00000800
/** This defines the bit in the event set associated with event 12. */
#define RTEMS_EVENT_12 0x00001000
/** This defines the bit in the event set associated with event 13. */
#define RTEMS_EVENT_13 0x00002000
/** This defines the bit in the event set associated with event 14. */
#define RTEMS_EVENT_14 0x00004000
/** This defines the bit in the event set associated with event 15. */
#define RTEMS_EVENT_15 0x00008000
/** This defines the bit in the event set associated with event 16. */
#define RTEMS_EVENT_16 0x00010000
/** This defines the bit in the event set associated with event 17. */
#define RTEMS_EVENT_17 0x00020000
/** This defines the bit in the event set associated with event 18. */
#define RTEMS_EVENT_18 0x00040000
/** This defines the bit in the event set associated with event 19. */
#define RTEMS_EVENT_19 0x00080000
/** This defines the bit in the event set associated with event 20. */
#define RTEMS_EVENT_20 0x00100000
/** This defines the bit in the event set associated with event 21. */
#define RTEMS_EVENT_21 0x00200000
/** This defines the bit in the event set associated with event 22. */
#define RTEMS_EVENT_22 0x00400000
/** This defines the bit in the event set associated with event 23. */
#define RTEMS_EVENT_23 0x00800000
/** This defines the bit in the event set associated with event 24. */
#define RTEMS_EVENT_24 0x01000000
/** This defines the bit in the event set associated with event 25. */
#define RTEMS_EVENT_25 0x02000000
/** This defines the bit in the event set associated with event 26. */
#define RTEMS_EVENT_26 0x04000000
/** This defines the bit in the event set associated with event 27. */
#define RTEMS_EVENT_27 0x08000000
/** This defines the bit in the event set associated with event 29. */
#define RTEMS_EVENT_28 0x10000000
/** This defines the bit in the event set associated with event 29. */
#define RTEMS_EVENT_29 0x20000000
/** This defines the bit in the event set associated with event 30. */
#define RTEMS_EVENT_30 0x40000000
/** This defines the bit in the event set associated with event 31. */
#define RTEMS_EVENT_31 0x80000000
/*
/**
* The following constant is the value of an event set which
* has no events pending.
*/
#define EVENT_SETS_NONE_PENDING 0
#ifndef __RTEMS_APPLICATION__
@@ -87,5 +121,7 @@ typedef uint32_t rtems_event_set;
}
#endif
/**@}*/
#endif
/* end of include file */
+33 -53
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/intr.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Interrupt Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,138 +24,119 @@ extern "C" {
#include <rtems/score/isr.h>
/*
/**
* @defgroup ClassicINTR Classic API Interrupt
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* Interrupt level type
*/
typedef ISR_Level rtems_interrupt_level;
/*
/**
* The following type defines the control block used to manage
* the vectors.
*/
typedef ISR_Vector_number rtems_vector_number;
/*
/**
* Return type for ISR Handler
*/
typedef void rtems_isr;
/*
/**
* Pointer to an ISR Handler
*/
typedef rtems_isr ( *rtems_isr_entry )(
rtems_vector_number
);
/*
* _Interrupt_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Interrupt_Manager_initialization
*
* This routine initializes the interrupt manager.
*
*/
void _Interrupt_Manager_initialization( void );
/*
* rtems_interrupt_catch
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_catch
*
* This routine implements the rtems_interrupt_catch directive. This
* directive installs new_isr_handler as the RTEMS interrupt service
* routine for vector. The previous RTEMS interrupt service
* routine is returned in old_isr_handler.
*/
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
);
/*
* rtems_interrupt_disable
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_disable
*
* This routine disables all maskable interrupts and returns the
* previous level in _isr_cookie.
*/
#define rtems_interrupt_disable( _isr_cookie ) \
_ISR_Disable(_isr_cookie)
/*
* rtems_interrupt_enable
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_enable
*
* This routine enables maskable interrupts to the level indicated
* _isr_cookie.
*/
#define rtems_interrupt_enable( _isr_cookie ) \
_ISR_Enable(_isr_cookie)
/*
* rtems_interrupt_flash
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_flash
*
* This routine temporarily enables maskable interrupts to the
* level in _isr_cookie before redisabling them.
*/
#define rtems_interrupt_flash( _isr_cookie ) \
_ISR_Flash(_isr_cookie)
/*
* rtems_interrupt_is_in_progress
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_is_in_progress
*
* This function returns TRUE if the processor is currently servicing
* an interrupt and FALSE otherwise. A return value of TRUE indicates
* that the caller is an interrupt service routine, NOT a thread. The
* directives available to an interrupt service routine are restricted.
*/
#define rtems_interrupt_is_in_progress() \
_ISR_Is_in_progress()
/*
* rtems_interrupt_cause
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_cause
*
* This routine generates an interrupt.
*
* NOTE: No implementation.
*/
#define rtems_interrupt_cause( _interrupt_to_cause )
/*
* rtems_interrupt_cause
*
* DESCRIPTION:
/**
* @brief rtems_interrupt_clear
*
* This routine clears the specified interrupt.
*
* NOTE: No implementation.
*/
#define rtems_interrupt_clear( _interrupt_to_clear )
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of include file */
+49 -87
View File
@@ -1,24 +1,23 @@
/**
* @file rtems/rtems/message.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Message Queue Manager. This manager provides a mechanism for
* communication and synchronization between tasks using messages.
*
* Directives provided are:
*
* + create a queue
* + get ID of a queue
* + delete a queue
* + put a message at the rear of a queue
* + put a message at the front of a queue
* + broadcast N messages to a queue
* + receive message from a queue
* + flush all messages on a queue
*
* COPYRIGHT (c) 1989-2007.
* - create a queue
* - get ID of a queue
* - delete a queue
* - put a message at the rear of a queue
* - put a message at the front of a queue
* - broadcast N messages to a queue
* - receive message from a queue
* - flush all messages on a queue
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -46,22 +45,27 @@ extern "C" {
#include <rtems/rtems/attr.h>
#include <rtems/score/coremsg.h>
/**
* @defgroup ClassicMessageQueue Classic API Message Queue
*
* This encapsulates functionality which XXX
*/
/**@{*/
/*
* The following enumerated type details the modes in which a message
* may be submitted to a message queue. The message may be posted
* in a send or urgent fashion.
*/
typedef enum {
MESSAGE_QUEUE_SEND_REQUEST = 0,
MESSAGE_QUEUE_URGENT_REQUEST = 1
} Message_queue_Submit_types;
/*
/**
* The following records define the control block used to manage
* each message queue.
*/
typedef struct {
Objects_Control Object;
rtems_attribute attribute_set;
@@ -72,25 +76,19 @@ typedef struct {
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_MESSAGE_EXTERN Objects_Information _Message_queue_Information;
/*
* _Message_queue_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Message_queue_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Message_queue_Manager_initialization(
uint32_t maximum_message_queues
);
/*
* rtems_message_queue_create
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_create
*
* This routine implements the rtems_message_queue_create directive. The
* message queue will have the name name. If the attribute_set indicates
@@ -99,7 +97,6 @@ void _Message_queue_Manager_initialization(
* messages that will be held. It returns the id of the created
* message queue in ID.
*/
rtems_status_code rtems_message_queue_create(
rtems_name name,
uint32_t count,
@@ -108,10 +105,8 @@ rtems_status_code rtems_message_queue_create(
Objects_Id *id
);
/*
* rtems_message_queue_ident
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_ident
*
* This routine implements the rtems_message_queue_ident directive.
* This directive returns the message queue ID associated with NAME.
@@ -121,30 +116,24 @@ rtems_status_code rtems_message_queue_create(
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
Objects_Id *id
);
/*
* rtems_message_queue_delete
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_delete
*
* This routine implements the rtems_message_queue_delete directive. The
* message queue indicated by ID is deleted.
*/
rtems_status_code rtems_message_queue_delete(
Objects_Id id
);
/*
* rtems_message_queue_send
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_send
*
* This routine implements the rtems_message_queue_send directive.
* This directive sends the message buffer to the message queue
@@ -156,17 +145,14 @@ rtems_status_code rtems_message_queue_delete(
* then the message buffer will be placed at the REAR of the
* chain of pending messages for this message queue.
*/
rtems_status_code rtems_message_queue_send(
Objects_Id id,
void *buffer,
size_t size
);
/*
* rtems_message_queue_urgent
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_urgent
*
* This routine implements the rtems_message_queue_urgent directive.
* This directive has the same behavior as rtems_message_queue_send
@@ -174,24 +160,20 @@ rtems_status_code rtems_message_queue_send(
* be placed at the FRONT of the chain of pending messages rather
* than at the REAR.
*/
rtems_status_code rtems_message_queue_urgent(
Objects_Id id,
void *buffer,
size_t size
);
/*
* rtems_message_queue_broadcast
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_broadcast
*
* This routine implements the rtems_message_queue_broadcast directive.
* This directive sends the message buffer to all of the tasks blocked
* waiting for a message on the message queue indicated by ID.
* If no tasks are waiting, then the message buffer will not be queued.
*/
rtems_status_code rtems_message_queue_broadcast(
Objects_Id id,
void *buffer,
@@ -199,10 +181,8 @@ rtems_status_code rtems_message_queue_broadcast(
uint32_t *count
);
/*
* rtems_message_queue_receive
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_receive
*
* This routine implements the rtems_message_queue_receive directive.
* This directive is invoked when the calling task wishes to receive
@@ -212,7 +192,6 @@ rtems_status_code rtems_message_queue_broadcast(
* then the task will be blocked until a message arrives or until,
* optionally, timeout clock ticks have passed.
*/
rtems_status_code rtems_message_queue_receive(
Objects_Id id,
void *buffer,
@@ -221,43 +200,35 @@ rtems_status_code rtems_message_queue_receive(
rtems_interval timeout
);
/*
* rtems_message_queue_flush
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_flush
*
* This routine implements the rtems_message_queue_flush directive.
* This directive takes all outstanding messages for the message
* queue indicated by ID and returns them to the inactive message
* chain. The number of messages flushed is returned in COUNT.
*/
rtems_status_code rtems_message_queue_flush(
Objects_Id id,
uint32_t *count
);
/*
* rtems_message_queue_get_number_pending
*
* DESCRIPTION:
/**
* @brief rtems_message_queue_get_number_pending
*
* This routine implements the rtems_message_queue_get_number_pending
* directive. This directive returns the number of pending
* messages for the message queue indicated by ID
* chain. The number of messages pending is returned in COUNT.
*/
rtems_status_code rtems_message_queue_get_number_pending(
Objects_Id id,
uint32_t *count
);
/*
* _Message_queue_Submit
*
* DESCRIPTION:
/**
* @brief Message_queue_Submit
*
* This routine implements the directives rtems_message_queue_send
* and rtems_message_queue_urgent. It processes a message that is
@@ -266,7 +237,6 @@ rtems_status_code rtems_message_queue_get_number_pending(
* at the rear of the queue or it will be processed as an urgent message
* which will be inserted at the front of the queue.
*/
rtems_status_code _Message_queue_Submit(
Objects_Id id,
void *buffer,
@@ -274,36 +244,30 @@ rtems_status_code _Message_queue_Submit(
Message_queue_Submit_types submit_type
);
/*
* _Message_queue_Allocate
*
* DESCRIPTION:
/**
* @brief Message_queue_Allocate
*
* This function allocates a message queue control block from
* the inactive chain of free message queue control blocks.
*/
Message_queue_Control *_Message_queue_Allocate (
uint32_t count,
uint32_t max_message_size
);
/*
* _Message_queue_Translate_core_message_queue_return_code
*
* DESCRIPTION:
/**
* @brief Message_queue_Translate_core_message_queue_return_code
*
* This function returns a RTEMS status code based on the core message queue
* status code specified.
*/
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t the_message_queue_status
);
/*
*
* _Message_queue_Core_message_queue_mp_support
#if defined(RTEMS_MULTIPROCESSING)
/**
* @brief Message_queue_Core_message_queue_mp_support
*
* Input parameters:
* the_thread - the remote thread the message was submitted to
@@ -311,8 +275,6 @@ rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
*
* Output parameters: NONE
*/
#if defined(RTEMS_MULTIPROCESSING)
void _Message_queue_Core_message_queue_mp_support (
Thread_Control *the_thread,
Objects_Id id
+19 -19
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/modes.h
*/
/*
*
* This include file contains all constants and structures associated
* with the RTEMS thread and RTEMS_ASR modes.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,24 +18,29 @@
#ifndef _RTEMS_RTEMS_MODES_H
#define _RTEMS_RTEMS_MODES_H
/**
* @defgroup ClassicModes Classic API Modes
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/isr.h>
/*
/**
* The following type defines the control block used to manage
* each a mode set.
*/
typedef uint32_t Modes_Control;
/*
/**
* The following constants define the individual modes and masks
* which may be used to compose a mode set and to alter modes.
*/
#define RTEMS_ALL_MODE_MASKS 0x0000ffff
#define RTEMS_DEFAULT_MODES 0x00000000
@@ -56,25 +60,21 @@ typedef uint32_t Modes_Control;
#define RTEMS_ASR 0x00000000 /* enable RTEMS_ASR */
#define RTEMS_NO_ASR 0x00000400 /* disable RTEMS_ASR */
/*
/**
* The number of bits for interrupt levels is CPU dependent.
* RTEMS supports 0 to 256 levels in bits 0-7 of the mode.
*/
/*PAGE
*
* RTEMS_INTERRUPT_LEVEL
*
* DESCRIPTION:
/**
* @brief RTEMS_INTERRUPT_LEVEL
*
* This function returns the processor dependent interrupt
* level which corresponds to the requested interrupt level.
*
* NOTE: RTEMS supports 256 interrupt levels using the least
* significant eight bits of MODES.CONTROL. On any
* particular CPU, fewer than 256 levels may be supported.
* @note RTEMS supports 256 interrupt levels using the least
* significant eight bits of MODES.CONTROL. On any
* particular CPU, fewer than 256 levels may be supported.
*/
#define RTEMS_INTERRUPT_LEVEL( _mode_set ) \
( (_mode_set) & RTEMS_INTERRUPT_MASK )
+17 -17
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/mp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,37 +18,38 @@
#ifndef _RTEMS_RTEMS_MP_H
#define _RTEMS_RTEMS_MP_H
/**
* @defgroup ClassicMP Classic API Multiprocessing
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
/*
*
* _Multiprocessing_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Multiprocessing_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Multiprocessing_Manager_initialization ( void );
/*
*
* rtems_multiprocessing_announce
*
* DESCRIPTION:
/**
* @brief rtems_multiprocessing_announce
*
* This routine implements the MULTIPROCESSING_ANNOUNCE directive.
* It is invoked by the MPCI layer to indicate that an MPCI packet
* has been received.
*/
void rtems_multiprocessing_announce ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of include file */
+29 -44
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/msgmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Message Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -30,11 +29,17 @@ extern "C" {
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
/**
* @defgroup ClassicMsgMP Classic API Message Queue MP Support
*
* This encapsulates functionality which XXX
*/
/**{*/
/**
* The following enumerated type defines the list of
* remote message queue operations.
*/
typedef enum {
MESSAGE_QUEUE_MP_ANNOUNCE_CREATE = 0,
MESSAGE_QUEUE_MP_ANNOUNCE_DELETE = 1,
@@ -53,11 +58,10 @@ typedef enum {
MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE = 14
} Message_queue_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote message queue operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Message_queue_MP_Remote_operations operation;
@@ -70,15 +74,12 @@ typedef struct {
CORE_message_queue_Buffer Buffer;
} Message_queue_MP_Packet;
/*
* _Message_queue_MP_Send_process_packet
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Message_queue_MP_Send_process_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
@@ -86,15 +87,12 @@ void _Message_queue_MP_Send_process_packet (
Objects_Id proxy_id
);
/*
* _Message_queue_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Message_queue_MP_Send_request_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
@@ -104,76 +102,63 @@ rtems_status_code _Message_queue_MP_Send_request_packet (
Watchdog_Interval timeout
);
/*
* _Message_queue_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Message_queue_MP_Send_response_packet (
Message_queue_MP_Remote_operations operation,
Objects_Id message_queue_id,
Thread_Control *the_thread
);
/*
/**
*
* _Message_queue_MP_Process_packet
*
* DESCRIPTION:
@brief * _Message_queue_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Message_queue_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Message_queue_MP_Send_object_was_deleted
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
* the remote node must be informed of this.
*/
void _Message_queue_MP_Send_object_was_deleted (
Thread_Control *the_proxy
);
/*
* _Message_queue_MP_Send_extract_proxy
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
* the remote node must be informed of this.
*/
void _Message_queue_MP_Send_extract_proxy (
void *argument
);
/*
* _Message_queue_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief _Message_queue_MP_Get_packet
*
* This function is used to obtain a message queue mp packet.
*/
Message_queue_MP_Packet *_Message_queue_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
+12 -4
View File
@@ -1,9 +1,8 @@
/**
* @file rtems/classinfo.h
* @file rtems/rtems/object.h
*/
/*
* COPYRIGHT (c) 1989-2008.
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,6 +24,13 @@ extern "C" {
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
/**
* @defgroup ClassicClassInfo Classic API Class Information
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* This structure is used to return information to the application
* about the objects configured for a specific API/Class combination.
@@ -325,5 +331,7 @@ rtems_status_code rtems_object_get_class_information(
}
#endif
/**@}*/
#endif
/* end of include file */
+13 -9
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/options.h
*/
/*
*
* This include file contains information which defines the
* options available on many directives.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -23,18 +22,23 @@
extern "C" {
#endif
/*
/**
* @defgroup ClassicOptions Classic API Options
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following type defines the control block used to manage
* option sets.
*/
typedef uint32_t rtems_option;
/*
/**
* The following constants define the individual options which may
* be used to compose an option set.
*/
#define RTEMS_DEFAULT_OPTIONS 0x00000000
#define RTEMS_WAIT 0x00000000 /* wait on resource */
+32 -44
View File
@@ -1,8 +1,6 @@
/**
* @file rtems/rtems/part.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Partition Manager. This manager provides facilities to
* dynamically allocate memory in fixed-sized units which are returned
@@ -10,13 +8,14 @@
*
* Directives provided are:
*
* + create a partition
* + get an ID of a partition
* + delete a partition
* + get a buffer from a partition
* + return a buffer to a partition
*
* COPYRIGHT (c) 1989-2007.
* - create a partition
* - get an ID of a partition
* - delete a partition
* - get a buffer from a partition
* - return a buffer to a partition
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -44,10 +43,16 @@ extern "C" {
#include <rtems/rtems/support.h>
#include <rtems/rtems/types.h>
/*
/**
* @defgroup ClassicPart Classic API Partition
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following defines the control block used to manage each partition.
*/
typedef struct {
Objects_Control Object;
void *starting_address; /* physical address */
@@ -58,29 +63,23 @@ typedef struct {
Chain_Control Memory; /* buffer chain */
} Partition_Control;
/*
/**
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_PART_EXTERN Objects_Information _Partition_Information;
/*
* _Partition_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Partition_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Partition_Manager_initialization(
uint32_t maximum_partitions
);
/*
* rtems_partition_create
*
* DESCRIPTION:
/**
* @brief rtems_partition_create
*
* This routine implements the rtems_partition_create directive. The
* partition will have the name name. The memory area managed by
@@ -90,7 +89,6 @@ void _Partition_Manager_initialization(
* the partition is global or local. It returns the id of the
* created partition in ID.
*/
rtems_status_code rtems_partition_create(
rtems_name name,
void *starting_address,
@@ -100,10 +98,8 @@ rtems_status_code rtems_partition_create(
Objects_Id *id
);
/*
* rtems_partition_ident
*
* DESCRIPTION:
/**
* @brief rtems_partition_ident
*
* This routine implements the rtems_partition_ident directive.
* This directive returns the partition ID associated with name.
@@ -113,51 +109,41 @@ rtems_status_code rtems_partition_create(
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_partition_ident(
rtems_name name,
uint32_t node,
Objects_Id *id
);
/*
* rtems_partition_delete
*
* DESCRIPTION:
/**
* @brief rtems_partition_delete
*
* This routine implements the rtems_partition_delete directive. The
* partition indicated by ID is deleted.
*/
rtems_status_code rtems_partition_delete(
Objects_Id id
);
/*
* rtems_partition_get_buffer
*
* DESCRIPTION:
/**
* @brief rtems_partition_get_buffer
*
* This routine implements the rtems_partition_get_buffer directive. It
* attempts to allocate a buffer from the partition associated with ID.
* If a buffer is allocated, its address is returned in buffer.
*/
rtems_status_code rtems_partition_get_buffer(
Objects_Id id,
void **buffer
);
/*
* rtems_partition_return_buffer
*
* DESCRIPTION:
/**
* @brief rtems_partition_return_buffer
*
* This routine implements the rtems_partition_return_buffer directive. It
* frees the buffer to the partition associated with ID. The buffer must
* have been previously allocated from the same partition.
*/
rtems_status_code rtems_partition_return_buffer(
Objects_Id id,
void *buffer
@@ -174,5 +160,7 @@ rtems_status_code rtems_partition_return_buffer(
}
#endif
/**@}*/
#endif
/* end of include file */
+30 -43
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/partmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Partition Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -30,11 +29,17 @@ extern "C" {
#include <rtems/rtems/part.h>
/*
/**
* @defgroup ClassicPartMP Classic API Partition MP Support
*
* This encapsulates functionality which XXX
*/
/**{*/
/**
* The following enumerated type defines the list of
* remote partition operations.
*/
typedef enum {
PARTITION_MP_ANNOUNCE_CREATE = 0,
PARTITION_MP_ANNOUNCE_DELETE = 1,
@@ -45,11 +50,10 @@ typedef enum {
PARTITION_MP_RETURN_BUFFER_RESPONSE = 6
} Partition_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote partition operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Partition_MP_Remote_operations operation;
@@ -58,15 +62,12 @@ typedef struct {
Objects_Id proxy_id;
} Partition_MP_Packet;
/*
* _Partition_MP_Send_process_packet
*
* DESCRIPTION:
/**
* @brief Partition_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Partition_MP_Send_process_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
@@ -74,54 +75,43 @@ void _Partition_MP_Send_process_packet (
Objects_Id proxy_id
);
/*
* _Partition_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief Partition_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Partition_MP_Send_request_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
void *buffer
);
/*
* _Partition_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief Partition_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Partition_MP_Send_response_packet (
Partition_MP_Remote_operations operation,
Objects_Id partition_id,
Thread_Control *the_thread
);
/*
/**
*
* _Partition_MP_Process_packet
*
* DESCRIPTION:
* @brief Partition_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Partition_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Partition_MP_Send_object_was_deleted
*
* DESCRIPTION:
/**
* @brief Partition_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
@@ -130,34 +120,31 @@ void _Partition_MP_Process_packet (
* This routine is not needed by the Partition since a partition
* cannot be deleted when buffers are in use.
*/
#warning "Why is there no prototype for Partition_MP_Send_object_was_deleted"
/*
* _Partition_MP_Send_extract_proxy
*
* DESCRIPTION:
/**
* @brief Partition_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
* the remote node must be informed of this.
*/
void _Partition_MP_Send_extract_proxy (
void *argument
);
/*
* _Partition_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief Partition_MP_Get_packet
*
* This function is used to obtain a partition mp packet.
*/
Partition_MP_Packet *_Partition_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
+51 -86
View File
@@ -1,21 +1,20 @@
/**
* @file rtems/rtems/ratemon.h
*/
/*
*
* This include file contains all the constants, structures, and
* prototypes associated with the Rate Monotonic Manager. This manager
* provides facilities to implement tasks which execute in a periodic fashion.
*
* Directives provided are:
*
* + create a rate monotonic timer
* + cancel a period
* + delete a rate monotonic timer
* + conclude current and start the next period
* + obtain status information on a period
*
* COPYRIGHT (c) 1989-2007.
* - create a rate monotonic timer
* - cancel a period
* - delete a rate monotonic timer
* - conclude current and start the next period
* - obtain status information on a period
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -34,6 +33,13 @@
#include <rtems/bspIo.h>
/**
* @defgroup ClassicRateMon Classic API Rate Monotonic
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -43,7 +49,7 @@ extern "C" {
* resolution.
*/
#ifndef __RTEMS_USE_TICKS_RATE_MONOTONIC_STATISTICS__
/*
/**
* Enable the nanosecond accurate statistics
*
* When not defined, the older style tick accurate granularity
@@ -60,11 +66,10 @@ extern "C" {
#include <string.h>
/*
/**
* The following enumerated type defines the states in which a
* period may be.
*/
typedef enum {
RATE_MONOTONIC_INACTIVE, /* off chain, never initialized */
RATE_MONOTONIC_OWNER_IS_BLOCKING, /* on chain, owner is blocking on it */
@@ -75,17 +80,15 @@ typedef enum {
/* rtems_rate_monotonic_period */
} rtems_rate_monotonic_period_states;
/*
/**
* The following constant is the interval passed to the rate_monontonic_period
* directive to obtain status information.
*/
#define RTEMS_PERIOD_STATUS WATCHDOG_NO_TIMEOUT
/*
/**
* The following defines the statistics kept on each period instance.
*/
typedef struct {
uint32_t count;
uint32_t missed_count;
@@ -109,10 +112,9 @@ typedef struct {
#endif
} rtems_rate_monotonic_period_statistics;
/*
/**
* The following defines the period status structure.
*/
typedef struct {
Objects_Id owner;
rtems_rate_monotonic_period_states state;
@@ -128,11 +130,10 @@ typedef struct {
#endif
} rtems_rate_monotonic_period_status;
/*
/**
* The following structure defines the control block used to manage
* each period.
*/
typedef struct {
Objects_Control Object;
Watchdog_Control Timer;
@@ -154,109 +155,86 @@ typedef struct {
RTEMS_RATEMON_EXTERN Objects_Information _Rate_monotonic_Information;
/*
/**
* _Rate_monotonic_Manager_initialization
*
* DESCRIPTION:
*
* This routine performs the initialization necessary for this manager.
*/
void _Rate_monotonic_Manager_initialization(
uint32_t maximum_periods
);
/*
* rtems_rate_monotonic_create
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_create
*
* This routine implements the rate_monotonic_create directive. The
* period will have the name name. It returns the id of the
* created period in ID.
*/
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
Objects_Id *id
);
/*
* rtems_rate_monotonic_ident
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_ident
*
* This routine implements the rtems_rate_monotonic_ident directive.
* This directive returns the period ID associated with name.
* If more than one period is named name, then the period
* to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_rate_monotonic_cancel
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_cancel
*
* This routine implements the rtems_rate_monotonic_cancel directive. This
* directive stops the period associated with ID from continuing to
* run.
*/
rtems_status_code rtems_rate_monotonic_cancel(
Objects_Id id
);
/*
* rtems_rate_monotonic_delete
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_delete
*
* This routine implements the rtems_rate_monotonic_delete directive. The
* period indicated by ID is deleted.
*/
rtems_status_code rtems_rate_monotonic_delete(
Objects_Id id
);
/*
* rtems_rate_monotonic_get_status
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_get_status
*
* This routine implements the rtems_rate_monotonic_get_status directive.
* Information about the period indicated by ID is returned.
*
*/
rtems_status_code rtems_rate_monotonic_get_status(
Objects_Id id,
rtems_rate_monotonic_period_status *status
);
/*
* rtems_rate_monotonic_get_statistics
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_get_statistics
*
* This routine implements the rtems_rate_monotonic_get_statistics directive.
* Statistics gathered from the use of this period are returned.
*/
rtems_status_code rtems_rate_monotonic_get_statistics(
Objects_Id id,
rtems_rate_monotonic_period_statistics *statistics
);
/*
* rtems_rate_monotonic_reset_statistics
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_reset_statistics
*
* This directive allows a thread to reset the statistics information
* on a specific period instance.
@@ -265,20 +243,16 @@ rtems_status_code rtems_rate_monotonic_reset_statistics(
Objects_Id id
);
/*
* rtems_rate_monotonic_reset_all_statistics
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_reset_all_statistics
*
* This directive allows a thread to reset the statistics information
* on ALL period instances.
*/
void rtems_rate_monotonic_reset_all_statistics( void );
/*
* rtems_rate_monotonic_report_statistics
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_report_statistics
*
* This directive allows a thread to print the statistics information
* on ALL period instances which have non-zero counts using printk.
@@ -288,36 +262,29 @@ void rtems_rate_monotonic_report_statistics_with_plugin(
rtems_printk_plugin_t print
);
/*
* rtems_rate_monotonic_report_statistics
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_report_statistics
*
* This directive allows a thread to print the statistics information
* on ALL period instances which have non-zero counts using printk.
*/
void rtems_rate_monotonic_report_statistics( void );
/*
* rtems_rate_monotonic_period
*
* DESCRIPTION:
/**
* @brief rtems_rate_monotonic_period
*
* This routine implements the rtems_rate_monotonic_period directive. When
* length is non-zero, this directive initiates the period associated with
* ID from continuing for a period of length. If length is zero, then
* result is set to indicate the current state of the period.
*/
rtems_status_code rtems_rate_monotonic_period(
Objects_Id id,
rtems_interval length
);
/*
* _Rate_monotonic_Timeout
*
* DESCRIPTION:
/**
* @brief _Rate_monotonic_Timeout
*
* This routine is invoked when the period represented
* by ID expires. If the task which owns this period is blocked
@@ -326,20 +293,16 @@ rtems_status_code rtems_rate_monotonic_period(
* period to expire, then the period is placed in the EXPIRED
* state and not restarted.
*/
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
);
/*
* _Rate_monotonic_Reset_statistics
*
* DESCRIPTION:
/**
* @brief _Rate_monotonic_Reset_statistics
*
* This method resets the statistics information for a period instance.
*/
#ifdef RTEMS_ENABLE_NANOSECOND_RATE_MONOTONIC_STATISTICS
#define _Rate_monotonic_Reset_wall_time_statistics( _the_period ) \
do { \
@@ -381,5 +344,7 @@ void _Rate_monotonic_Timeout(
}
#endif
/**@}*/
#endif
/* end of include file */
+61 -81
View File
@@ -1,21 +1,20 @@
/**
* @file rtems/rtems/region.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Region Manager. This manager provides facilities to dynamically
* allocate memory in variable sized units which are returned as segments.
*
* Directives provided are:
*
* + create a region
* + get an ID of a region
* + delete a region
* + get a segment from a region
* + return a segment to a region
*
* COPYRIGHT (c) 1989-2007.
* - create a region
* - get an ID of a region
* - delete a region
* - get a segment from a region
* - return a segment to a region
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -28,14 +27,6 @@
#ifndef _RTEMS_RTEMS_REGION_H
#define _RTEMS_RTEMS_REGION_H
#ifndef RTEMS_REGION_EXTERN
#define RTEMS_REGION_EXTERN extern
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
#include <rtems/score/object.h>
@@ -48,7 +39,22 @@ extern "C" {
#include <rtems/rtems/support.h>
#include <rtems/rtems/types.h>
/*
/**
* @defgroup ClassicRegion Classic API Region
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifndef RTEMS_REGION_EXTERN
#define RTEMS_REGION_EXTERN extern
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**
* The following records define the control block used to manage
* each region.
*/
@@ -65,29 +71,23 @@ typedef struct {
Heap_Control Memory;
} Region_Control;
/*
/**
* The following defines the information control block used to
* manage this class of objects.
*/
RTEMS_REGION_EXTERN Objects_Information _Region_Information;
/*
* _Region_Manager_initialization
*
* DESCRIPTION:
/**
* @brief _Region_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Region_Manager_initialization(
uint32_t maximum_regions
);
/*
* rtems_region_create
*
* DESCRIPTION:
/**
* @brief rtems_region_create
*
* This routine implements the rtems_region_create directive. The
* region will have the name name. The memory area managed by
@@ -97,7 +97,6 @@ void _Region_Manager_initialization(
* thread queue discipline is used by the region. It returns the
* id of the created region in ID.
*/
rtems_status_code rtems_region_create(
rtems_name name,
void *starting_address,
@@ -107,86 +106,69 @@ rtems_status_code rtems_region_create(
Objects_Id *id
);
/*
* rtems_region_extend
*
* DESCRIPTION:
/**
* @brief rtems_region_extend
*
* This routine implements the rtems_region_extend directive. The
* region will have the name name. The memory area managed by
* the region will be attempted to be grown by length bytes using
* the memory starting at starting_address.
*/
rtems_status_code rtems_region_extend(
Objects_Id id,
void *starting_address,
uint32_t length
);
/*
* rtems_region_ident
*
* DESCRIPTION:
/**
* @brief rtems_region_ident
*
* This routine implements the rtems_region_ident directive.
* This directive returns the region ID associated with name.
* If more than one region is named name, then the region
* to which the ID belongs is arbitrary.
*/
rtems_status_code rtems_region_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_region_get_information
*
* DESCRIPTION:
/**
* @brief rtems_region_get_information
*
* This routine implements the rtems_region_get_information directive.
* This directive returns information about the heap associated with
* this region.
*/
rtems_status_code rtems_region_get_information(
Objects_Id id,
Heap_Information_block *the_info
);
/*
* rtems_region_get_free_information
*
* DESCRIPTION:
/**
* @brief rtems_region_get_free_information
*
* This routine implements the rtems_region_get_free_information directive.
* This directive returns information about the free blocks in the
* heap associated with this region.
*/
rtems_status_code rtems_region_get_free_information(
Objects_Id id,
Heap_Information_block *the_info
);
/*
* rtems_region_delete
*
* DESCRIPTION:
/**
* @brief rtems_region_delete
*
* This routine implements the rtems_region_delete directive. The
* region indicated by ID is deleted.
*/
rtems_status_code rtems_region_delete(
Objects_Id id
);
/*
* rtems_region_get_segment
*
* DESCRIPTION:
/**
* @brief rtems_region_get_segment
*
* This routine implements the rtems_region_get_segment directive. It
* attempts to allocate a segment from the region associated with ID.
@@ -196,7 +178,6 @@ rtems_status_code rtems_region_delete(
* timeout of timeout clock ticks. Whether the task blocks or returns
* immediately is based on the no_wait option in the option_set.
*/
rtems_status_code rtems_region_get_segment(
Objects_Id id,
uint32_t size,
@@ -205,25 +186,20 @@ rtems_status_code rtems_region_get_segment(
void **segment
);
/*
* rtems_region_get_segment_size
*
* DESCRIPTION:
/**
* @brief rtems_region_get_segment_size
*
* This routine implements the rtems_region_get_segment_size directive. It
* returns the size in bytes of the specified user memory area.
*/
rtems_status_code rtems_region_get_segment_size(
Objects_Id id,
void *segment,
size_t *size
);
/*
* rtems_region_return_segment
*
* DESCRIPTION:
/**
* @brief rtems_region_return_segment
*
* This routine implements the rtems_region_return_segment directive. It
* frees the segment to the region associated with ID. The segment must
@@ -233,16 +209,13 @@ rtems_status_code rtems_region_get_segment_size(
* many subsequent tasks as possible will be unblocked with their requests
* satisfied.
*/
rtems_status_code rtems_region_return_segment(
Objects_Id id,
void *segment
);
/*
* rtems_region_resize_segment
*
* DESCRIPTION:
/**
* @brief rtems_region_resize_segment
*
* This routine implements the rtems_region_resize_segment directive. It
* tries to resize segment in the region associated with 'id' to the new size
@@ -261,7 +234,6 @@ rtems_status_code rtems_region_return_segment(
* 'old_size' the old size in bytes of the user memory area of the specified
* segment.
*/
rtems_status_code rtems_region_resize_segment(
Objects_Id id,
void *segment,
@@ -271,21 +243,27 @@ rtems_status_code rtems_region_resize_segment(
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/region.inl>
/**
* @brief Region_Process_queue
*
* This is a helper routine which is invoked any time memory is
* freed. It looks at the set of waiting tasks and attempts to
* satisfy all outstanding requests.
*/
extern void _Region_Process_queue(Region_Control *the_region);
#endif
#if defined(RTEMS_MULTIPROCESSING)
#include <rtems/rtems/regionmp.h>
#endif
/*
* _Region_Debug_Walk
*
* DESCRIPTION:
/**
* @brief _Region_Debug_Walk
*
* This routine is invoked to verify the integrity of a heap associated
* with the_region.
*/
#ifdef RTEMS_DEBUG
#define _Region_Debug_Walk( _the_region, _source ) \
@@ -304,5 +282,7 @@ extern void _Region_Process_queue(Region_Control *the_region);
}
#endif
/**@}*/
#endif
/* end of include file */
+28 -43
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/regionmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Region Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -30,11 +29,17 @@ extern "C" {
#include <rtems/rtems/options.h>
#include <rtems/rtems/region.h>
/*
/**
* @defgroup ClassicRegionMP Classic API Region MP Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following enumerated type defines the list of
* remote region operations.
*/
typedef enum {
REGION_MP_ANNOUNCE_CREATE = 0,
REGION_MP_ANNOUNCE_DELETE = 1,
@@ -45,11 +50,10 @@ typedef enum {
REGION_MP_RETURN_SEGMENT_RESPONSE = 6
} Region_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote region operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Region_MP_Remote_operations operation;
@@ -60,15 +64,12 @@ typedef struct {
void *segment;
} Region_MP_Packet;
/*
* _Region_MP_Send_process_packet
*
* DESCRIPTION:
/**
* @brief _Region_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Region_MP_Send_process_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
@@ -76,15 +77,12 @@ void _Region_MP_Send_process_packet (
Objects_Id proxy_id
);
/*
* _Region_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief _Region_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Region_MP_Send_request_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
@@ -94,39 +92,30 @@ rtems_status_code _Region_MP_Send_request_packet (
rtems_interval timeout
);
/*
* _Region_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief _Region_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Region_MP_Send_response_packet (
Region_MP_Remote_operations operation,
Objects_Id region_id,
Thread_Control *the_thread
);
/*
*
* _Region_MP_Process_packet
*
* DESCRIPTION:
/**
* @brief _Region_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Region_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Region_MP_Send_object_was_deleted
*
* DESCRIPTION:
* @brief _Region_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
@@ -136,33 +125,29 @@ void _Region_MP_Process_packet (
* cannot be deleted when segments are in use.
*/
/*
* _Region_MP_Send_extract_proxy
*
* DESCRIPTION:
/**
* @brief _Region_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
* the remote node must be informed of this.
*/
void _Region_MP_Send_extract_proxy (
void *argument
);
/*
* _Region_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief _Region_MP_Get_packet
*
* This function is used to obtain a region mp packet.
*/
Region_MP_Packet *_Region_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
+12 -6
View File
@@ -1,11 +1,10 @@
/**
* @file rtems/rtems/rtemsapi.h
*
* RTEMS API Support
*/
/*
* RTEMS API Support
*
* COPYRIGHT (c) 1989-1999.
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -20,18 +19,25 @@
#include <rtems/config.h>
/*PAGE
/**
* @defgroup ClassicRTEMS Classic RTEMS Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* _RTEMS_API_Initialize
*
* This routine initializes the RTEMS API by invoking the initialization
* routine for each RTEMS manager with the appropriate parameters
* from the configuration_table.
*/
void _RTEMS_API_Initialize(
rtems_configuration_table *configuration_table
);
/**@}*/
#endif
/* end of include file */
+40 -112
View File
@@ -1,8 +1,6 @@
/**
* @file rtems/rtems/sem.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Semaphore Manager. This manager utilizes standard Dijkstra
* counting semaphores to provide synchronization and mutual exclusion
@@ -10,13 +8,14 @@
*
* Directives provided are:
*
* + create a semaphore
* + get an ID of a semaphore
* + delete a semaphore
* + acquire a semaphore
* + release a semaphore
*
* COPYRIGHT (c) 1989-2007.
* - create a semaphore
* - get an ID of a semaphore
* - delete a semaphore
* - acquire a semaphore
* - release a semaphore
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -45,10 +44,16 @@ extern "C" {
#include <rtems/score/object.h>
#include <rtems/score/coresem.h>
/*
/**
* @defgroup ClassicSem Classic API Semaphore
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following defines the control block used to manage each semaphore.
*/
typedef struct {
Objects_Control Object;
rtems_attribute attribute_set;
@@ -58,29 +63,23 @@ typedef struct {
} Core_control;
} Semaphore_Control;
/*
/**
* The following defines the information control block used to manage
* this class of objects.
*/
RTEMS_SEM_EXTERN Objects_Information _Semaphore_Information;
/*
* _Semaphore_Manager_initialization
*
* DESCRIPTION:
/**
* @brief Semaphore_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Semaphore_Manager_initialization(
uint32_t maximum_semaphores
);
/*
* rtems_semaphore_create
*
* DESCRIPTION:
/**
* @brief rtems_semaphore_create
*
* This routine implements the rtems_semaphore_create directive. The
* semaphore will have the name name. The starting count for
@@ -88,7 +87,6 @@ void _Semaphore_Manager_initialization(
* the semaphore is global or local and the thread queue
* discipline. It returns the id of the created semaphore in ID.
*/
rtems_status_code rtems_semaphore_create(
rtems_name name,
uint32_t count,
@@ -97,10 +95,8 @@ rtems_status_code rtems_semaphore_create(
rtems_id *id
);
/*
* rtems_semaphore_ident
*
* DESCRIPTION:
/**
* @brief rtems_semaphore_ident
*
* This routine implements the rtems_semaphore_ident directive.
* This directive returns the semaphore ID associated with name.
@@ -110,30 +106,24 @@ rtems_status_code rtems_semaphore_create(
* The search can be limited to a particular node or allowed to
* encompass all nodes.
*/
rtems_status_code rtems_semaphore_ident(
rtems_name name,
uint32_t node,
rtems_id *id
);
/*
* rtems_semaphore_delete
*
* DESCRIPTION:
/**
* @brief rtems_semaphore_delete
*
* This routine implements the rtems_semaphore_delete directive. The
* semaphore indicated by ID is deleted.
*/
rtems_status_code rtems_semaphore_delete(
rtems_id id
);
/*
* rtems_semaphore_obtain
*
* DESCRIPTION:
/**
* @brief rtems_semaphore_obtain
*
* This routine implements the rtems_semaphore_obtain directive. It
* attempts to obtain a unit from the semaphore associated with ID.
@@ -143,17 +133,14 @@ rtems_status_code rtems_semaphore_delete(
* clock ticks. Whether the task blocks or returns immediately
* is based on the RTEMS_NO_WAIT option in the option_set.
*/
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
uint32_t option_set,
rtems_interval timeout
);
/*
* rtems_semaphore_release
*
* DESCRIPTION:
/**
* @brief rtems_semaphore_release
*
* This routine implements the rtems_semaphore_release directive. It
* frees a unit to the semaphore associated with ID. If a task was
@@ -161,112 +148,51 @@ rtems_status_code rtems_semaphore_obtain(
* be readied and the unit given to that task. Otherwise, the unit
* will be returned to the semaphore.
*/
rtems_status_code rtems_semaphore_release(
rtems_id id
);
/*
* rtems_semaphore_flush
*
* This directive allows a thread to flush the threads
/**
* @brief rtems_semaphore_flush
* pending on the semaphore.
*/
rtems_status_code rtems_semaphore_flush(
rtems_id id
);
/*
* _Semaphore_Seize
*
* DESCRIPTION:
/**
* @brief _Semaphore_Seize
*
* This routine attempts to receive a unit from the_semaphore.
* If a unit is available or if the RTEMS_NO_WAIT option is enabled in
* option_set, then the routine returns. Otherwise, the calling task
* is blocked until a unit becomes available.
*/
boolean _Semaphore_Seize(
Semaphore_Control *the_semaphore,
uint32_t option_set
);
/*
* _Semaphore_Translate_core_mutex_return_code
*
* DESCRIPTION:
/**
* @brief _Semaphore_Translate_core_mutex_return_code
*
* This function returns a RTEMS status code based on the mutex
* status code specified.
*/
rtems_status_code _Semaphore_Translate_core_mutex_return_code (
uint32_t the_mutex_status
);
/*
* _Semaphore_Translate_core_semaphore_return_code
*
* DESCRIPTION:
/**
* @brief _Semaphore_Translate_core_semaphore_return_code
*
* This function returns a RTEMS status code based on the semaphore
* status code specified.
*/
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
uint32_t the_mutex_status
);
/*PAGE
*
* _Semaphore_Core_mutex_mp_support
*
* DESCRIPTION:
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core mutex. This function
* is called by the core.
*/
#if defined(RTEMS_MULTIPROCESSING)
void _Semaphore_Core_mutex_mp_support (
Thread_Control *the_thread,
rtems_id id
);
#endif
/*PAGE
*
* _Semaphore_Core_mp_support
*
* DESCRIPTION:
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core semaphore. This function
* is called by the core.
*/
void _Semaphore_Core_semaphore_mp_support (
Thread_Control *the_thread,
rtems_id id
);
/*PAGE
*
* _POSIX_Semaphore_MP_support
*
* DESCRIPTION:
*
* XXX
*/
void _POSIX_Semaphore_MP_support(
Thread_Control *the_thread,
Objects_Id id
);
#ifndef __RTEMS_APPLICATION__
#include <rtems/rtems/sem.inl>
#endif
@@ -278,5 +204,7 @@ void _POSIX_Semaphore_MP_support(
}
#endif
/**@}*/
#endif
/* end of include file */
+51 -45
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/semmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Semaphore Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -30,11 +29,17 @@ extern "C" {
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
/**
* @defgroup ClassicSEM Classic API Semaphore MP Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following enumerated type defines the list of
* remote semaphore operations.
*/
typedef enum {
SEMAPHORE_MP_ANNOUNCE_CREATE = 0,
SEMAPHORE_MP_ANNOUNCE_DELETE = 1,
@@ -45,11 +50,10 @@ typedef enum {
SEMAPHORE_MP_RELEASE_RESPONSE = 6
} Semaphore_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote semaphore operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Semaphore_MP_Remote_operations operation;
@@ -58,15 +62,12 @@ typedef struct {
Objects_Id proxy_id;
} Semaphore_MP_Packet;
/*
* _Semaphore_MP_Send_process_packet
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _Semaphore_MP_Send_process_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
@@ -74,15 +75,12 @@ void _Semaphore_MP_Send_process_packet (
Objects_Id proxy_id
);
/*
* _Semaphore_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Semaphore_MP_Send_request_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
@@ -90,73 +88,81 @@ rtems_status_code _Semaphore_MP_Send_request_packet (
rtems_interval timeout
);
/*
* _Semaphore_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Semaphore_MP_Send_response_packet (
Semaphore_MP_Remote_operations operation,
Objects_Id semaphore_id,
Thread_Control *the_thread
);
/*
*
* _Semaphore_MP_Process_packet
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Semaphore_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Semaphore_MP_Send_object_was_deleted
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
* the remote node must be informed of this.
*/
void _Semaphore_MP_Send_object_was_deleted (
Thread_Control *the_proxy
);
/*
* _Semaphore_MP_Send_extract_proxy
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
* the remote node must be informed of this.
*/
void _Semaphore_MP_Send_extract_proxy (
void *argument
);
/*
* _Semaphore_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief Semaphore_MP_Get_packet
*
* This function is used to obtain a semaphore mp packet.
*/
Semaphore_MP_Packet *_Semaphore_MP_Get_packet ( void );
/**
* @brief _Semaphore_Core_mutex_mp_support
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core mutex. This function
* is called by the core.
*/
void _Semaphore_Core_mutex_mp_support (
Thread_Control *the_thread,
rtems_id id
);
/**
* @brief Semaphore_Core_mp_support
*
* This function processes the global actions necessary for remote
* accesses to a global semaphore based on a core semaphore. This function
* is called by the core.
*/
void _Semaphore_Core_semaphore_mp_support (
Thread_Control *the_thread,
rtems_id id
);
#ifdef __cplusplus
}
#endif
+21 -23
View File
@@ -1,8 +1,6 @@
/**
* @file rtems/rtems/signal.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Signal Manager. This manager provides capabilities required
* for asynchronous communication between tasks via signal sets.
@@ -11,8 +9,9 @@
*
* + establish an asynchronous signal routine
* + send a signal set to a task
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,9 +24,12 @@
#ifndef _RTEMS_RTEMS_SIGNAL_H
#define _RTEMS_RTEMS_SIGNAL_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @defgroup ClassicSignal Classic API Signal
*
* This encapsulates functionality which XXX
*/
/**@{*/
#include <rtems/rtems/asr.h>
#include <rtems/rtems/modes.h>
@@ -35,41 +37,35 @@ extern "C" {
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
/*
* _Signal_Manager_initialization
*
* DESCRIPTION:
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief _Signal_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Signal_Manager_initialization( void );
/*
* rtems_signal_catch
*
* DESCRIPTION:
/**
* @brief rtems_signal_catch
*
* This routine implements the rtems_signal_catch directive. This directive
* is used to establish asr_handler as the Asynchronous Signal Routine
* (RTEMS_ASR) for the calling task. The asr_handler will execute with a
* mode of mode_set.
*/
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
);
/*
* rtems_signal_send
*
* DESCRIPTION:
/**
* @brief rtems_signal_send
*
* This routine implements the rtems_signal_send directive. This directive
* sends the signal_set to the task specified by ID.
*/
rtems_status_code rtems_signal_send(
Objects_Id id,
rtems_signal_set signal_set
@@ -83,5 +79,7 @@ rtems_status_code rtems_signal_send(
}
#endif
/**@}*/
#endif
/* end of include file */
+26 -39
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/signalmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the Multiprocessing Support in the Signal Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -29,21 +28,26 @@ extern "C" {
#include <rtems/score/thread.h>
#include <rtems/score/watchdog.h>
/*
/**
* @defgroup ClassicSignalMP Classic API Signal MP Support
*
* This encapsulates functionality which XXX
*/
/**{*/
/**
* The following enumerated type defines the list of
* remote signal operations.
*/
typedef enum {
SIGNAL_MP_SEND_REQUEST = 0,
SIGNAL_MP_SEND_RESPONSE = 1
} Signal_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote signal operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
Signal_MP_Remote_operations operation;
@@ -51,9 +55,7 @@ typedef struct {
} Signal_MP_Packet;
/*
* _Signal_MP_Send_process_packet
*
* DESCRIPTION:
* @brief Signal_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
@@ -62,53 +64,41 @@ typedef struct {
* packets to be sent by this manager.
*/
/*
* _Signal_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief Signal_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _Signal_MP_Send_request_packet (
Signal_MP_Remote_operations operation,
Objects_Id task_id,
rtems_signal_set signal_in
);
/*
* _Signal_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief Signal_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _Signal_MP_Send_response_packet (
Signal_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _Signal_MP_Process_packet
*
* DESCRIPTION:
/**
* @brief Signal_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _Signal_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _Signal_MP_Send_object_was_deleted
*
* DESCRIPTION:
* @brief Signal_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
@@ -119,9 +109,7 @@ void _Signal_MP_Process_packet (
*/
/*
* _Signal_MP_Send_extract_proxy
*
* DESCRIPTION:
* @brief Signal_MP_Send_extract_proxy
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
@@ -131,19 +119,18 @@ void _Signal_MP_Process_packet (
* deleted by this manager.
*/
/*
* _Signal_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief Signal_MP_Get_packet
*
* This function is used to obtain a signal mp packet.
*/
Signal_MP_Packet *_Signal_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
+13 -6
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/status.h
*/
/*
*
* This include file contains the status codes returned from the
* executive directives.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,6 +18,13 @@
#ifndef _RTEMS_RTEMS_STATUS_H
#define _RTEMS_RTEMS_STATUS_H
/**
* @defgroup ClassicStatus Classic API Status
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -77,12 +83,13 @@ rtems_status_code _Status_Object_name_errors_to_status[] = {
/*
* Applications are allowed to use the macros to compare status codes.
*/
#include <rtems/rtems/status.inl>
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of include file */
+26 -11
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/support.h
*/
/*
*
* This include file contains information about support functions for
* the RTEMS API.
*
* COPYRIGHT (c) 1989-2008.
*/
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,27 +24,39 @@ extern "C" {
#include <rtems/rtems/types.h>
/** @brief milliseconds to microseconds
/**
* @defgroup ClassicSupport Classic API Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* @brief milliseconds to microseconds
*
* This is the public milliseconds to microseconds conversion.
*/
#define RTEMS_MILLISECONDS_TO_MICROSECONDS(_ms) \
TOD_MILLISECONDS_TO_MICROSECONDS(_ms)
/** @brief milliseconds to ticks
/**
* @brief milliseconds to ticks
*
* This is the public milliseconds to ticks conversion.
*/
#define RTEMS_MILLISECONDS_TO_TICKS(_ms) \
TOD_MILLISECONDS_TO_TICKS(_ms)
/** @brief microseconds to ticks
/**
* @brief microseconds to ticks
*
* This is the public microseconds to tick conversion.
*/
#define RTEMS_MICROSECONDS_TO_TICKS(_ms) \
TOD_MICROSECONDS_TO_TICKS(_ms)
/** @brief get workspace information
/**
* @brief get workspace information
*
* This returns information about the heap that is used as
* the RTEMS Executive Workspace.
@@ -58,7 +69,8 @@ boolean rtems_workspace_get_information(
Heap_Information_block *the_info
);
/** @brief get workspace information
/**
* @brief get workspace information
*
* This returns information about the heap that is used as
* the RTEMS Executive Workspace.
@@ -73,7 +85,8 @@ boolean rtems_workspace_allocate(
void **pointer
);
/** @brief free workspace
/**
* @brief free workspace
*
* This frees the workspace that was allocated from
* the RTEMS Executive Workspace.
@@ -94,5 +107,7 @@ boolean rtems_workspace_free(
}
#endif
/**@}*/
#endif
/* end of include file */
+30 -45
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/taskmp.h
*/
/*
*
* This include file contains all the constants and structures associated
* with the multiprocessing support in the task manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,10 +18,6 @@
#ifndef _RTEMS_RTEMS_TASKMP_H
#define _RTEMS_RTEMS_TASKMP_H
#ifdef __cplusplus
extern "C" {
#endif
#include <rtems/score/mppkt.h>
#include <rtems/score/object.h>
#include <rtems/rtems/options.h>
@@ -30,11 +25,20 @@ extern "C" {
#include <rtems/rtems/tasks.h>
#include <rtems/score/thread.h>
/*
/**
* @defgroup ClassicTaskMP Classic API Task MP Support
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
/**
* The following enumerated type defines the list of
* remote task operations.
*/
typedef enum {
RTEMS_TASKS_MP_ANNOUNCE_CREATE = 0,
RTEMS_TASKS_MP_ANNOUNCE_DELETE = 1,
@@ -50,11 +54,10 @@ typedef enum {
RTEMS_TASKS_MP_SET_NOTE_RESPONSE = 11
} RTEMS_tasks_MP_Remote_operations;
/*
/**
* The following data structure defines the packet used to perform
* remote task operations.
*/
typedef struct {
rtems_packet_prefix Prefix;
RTEMS_tasks_MP_Remote_operations operation;
@@ -64,30 +67,24 @@ typedef struct {
uint32_t note;
} RTEMS_tasks_MP_Packet;
/*
* _RTEMS_tasks_MP_Send_process_packet
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Send_process_packet
*
* This routine performs a remote procedure call so that a
* process operation can be performed on another node.
*/
void _RTEMS_tasks_MP_Send_process_packet (
RTEMS_tasks_MP_Remote_operations operation,
Objects_Id task_id,
rtems_name name
);
/*
* _RTEMS_tasks_MP_Send_request_packet
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Send_request_packet
*
* This routine performs a remote procedure call so that a
* directive operation can be initiated on another node.
*/
rtems_status_code _RTEMS_tasks_MP_Send_request_packet (
RTEMS_tasks_MP_Remote_operations operation,
Objects_Id task_id,
@@ -96,38 +93,29 @@ rtems_status_code _RTEMS_tasks_MP_Send_request_packet (
uint32_t note
);
/*
* _RTEMS_tasks_MP_Send_response_packet
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Send_response_packet
*
* This routine performs a remote procedure call so that a
* directive can be performed on another node.
*/
void _RTEMS_tasks_MP_Send_response_packet (
RTEMS_tasks_MP_Remote_operations operation,
Thread_Control *the_thread
);
/*
*
* _RTEMS_tasks_MP_Process_packet
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Process_packet
*
* This routine performs the actions specific to this package for
* the request from another node.
*/
void _RTEMS_tasks_MP_Process_packet (
rtems_packet_prefix *the_packet_prefix
);
/*
* _RTEMS_tasks_MP_Send_object_was_deleted
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Send_object_was_deleted
*
* This routine is invoked indirectly by the thread queue
* when a proxy has been removed from the thread queue and
@@ -140,8 +128,6 @@ void _RTEMS_tasks_MP_Process_packet (
/*
* _RTEMS_tasks_MP_Send_extract_proxy
*
* DESCRIPTION:
*
* This routine is invoked when a task is deleted and it
* has a proxy which must be removed from a thread queue and
* the remote node must be informed of this.
@@ -151,19 +137,18 @@ void _RTEMS_tasks_MP_Process_packet (
*
*/
/*
* _RTEMS_tasks_MP_Get_packet
*
* DESCRIPTION:
/**
* @brief _RTEMS_tasks_MP_Get_packet
*
* This function is used to obtain a task mp packet.
*/
RTEMS_tasks_MP_Packet *_RTEMS_tasks_MP_Get_packet ( void );
#ifdef __cplusplus
}
#endif
/**@}*/
#endif
/* end of file */
File diff suppressed because it is too large Load Diff
+78 -96
View File
@@ -1,8 +1,6 @@
/**
* @file rtems/rtems/timer.h
*/
/*
*
* This include file contains all the constants, structures, and
* prototypes associated with the Timer Manager. This manager provides
* facilities to configure, initiate, cancel, and delete timers which will
@@ -10,20 +8,21 @@
*
* Directives provided are:
*
* + create a timer
* + get an ID of a timer
* + delete a timer
* + set timer to fire in context of clock tick
* - create a timer
* - get an ID of a timer
* - delete a timer
* - set timer to fire in context of clock tick
* - after a number of ticks have passed
* - when a specified date and time has been reached
* + initiate the timer server task
* + set timer to fire in context of the timer server task
* - initiate the timer server task
* - set timer to fire in context of the timer server task
* - after a number of ticks have passed
* - when a specified date and time has been reached
* + reset a timer
* + cancel a time
*
* COPYRIGHT (c) 1989-2007.
* - reset a timer
* - cancel a time
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -50,11 +49,17 @@ extern "C" {
#include <rtems/rtems/clock.h>
#include <rtems/rtems/attr.h>
/*
/**
* @defgroup ClassicTimer Classic API Timer
*
* This encapsulates functionality which XXX
*/
/**@{*/
/**
* The following enumerated type details the classes to which a timer
* may belong.
*/
typedef enum {
TIMER_INTERVAL,
TIMER_INTERVAL_ON_TASK,
@@ -63,10 +68,9 @@ typedef enum {
TIMER_DORMANT
} Timer_Classes;
/*
/**
* The following types define a pointer to a timer service routine.
*/
typedef void rtems_timer_service_routine;
typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )(
@@ -74,22 +78,20 @@ typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )(
void *
);
/*
/**
* The following defines the information control block used to manage
* this class of objects.
*/
RTEMS_TIMER_EXTERN Objects_Information _Timer_Information;
/*
/**
* Pointer to TCB of the Timer Server. This is NULL before the
* server is executing and task-based timers are not allowed to be
* initiated until the server is started.
*/
RTEMS_TIMER_EXTERN Thread_Control *_Timer_Server;
/*
/**
* The following chains contain the list of interval timers that are
* executed in the context of the Timer Server.
*
@@ -100,109 +102,87 @@ RTEMS_TIMER_EXTERN Thread_Control *_Timer_Server;
* do not have to be initialized until then. They are declared
* in the same file as _Timer_Server_body.
*/
extern Chain_Control _Timer_Ticks_chain;
extern Chain_Control _Timer_Seconds_chain;
/*
/**
* The following records define the control block used to manage
* each timer.
*/
typedef struct {
Objects_Control Object;
Watchdog_Control Ticker;
Timer_Classes the_class;
} Timer_Control;
/*
* _Timer_Manager_initialization
*
* DESCRIPTION:
/**
* @brief _Timer_Manager_initialization
*
* This routine performs the initialization necessary for this manager.
*/
void _Timer_Manager_initialization(
uint32_t maximum_timers
);
/*
* _Timer_Server_body
*
* DESCRIPTION:
/**
* @brief _Timer_Server_body
*
* This is the server for task based timers. This task executes whenever
* a task-based timer should fire. It services both "after" and "when"
* timers. It is not created automatically but must be created explicitly
* by the application before task-based timers may be initiated.
*/
Thread _Timer_Server_body(
uint32_t ignored
);
/*
* rtems_timer_create
*
* DESCRIPTION:
/**
* @brief rtems_timer_create
*
* 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.
*/
rtems_status_code rtems_timer_create(
rtems_name name,
Objects_Id *id
);
/*
* rtems_timer_ident
*
* DESCRIPTION:
/**
* @brief rtems_timer_ident
*
* 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.
*/
rtems_status_code rtems_timer_ident(
rtems_name name,
Objects_Id *id
);
/*
* rtems_timer_cancel
*
* DESCRIPTION:
/**
* @brief rtems_timer_cancel
*
* This routine implements the rtems_timer_cancel directive. It is used
* to stop the timer associated with ID from firing.
*/
rtems_status_code rtems_timer_cancel(
Objects_Id id
);
/*
* rtems_timer_delete
*
* DESCRIPTION:
/**
* @brief rtems_timer_delete
*
* This routine implements the rtems_timer_delete directive. The
* timer indicated by ID is deleted.
*/
rtems_status_code rtems_timer_delete(
Objects_Id id
);
/*
* rtems_timer_fire_after
*
* DESCRIPTION:
/**
* @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.
@@ -210,7 +190,6 @@ rtems_status_code rtems_timer_delete(
* of the rtems_clock_tick directive which is normally invoked as
* part of servicing a periodic interupt.
*/
rtems_status_code rtems_timer_fire_after(
Objects_Id id,
rtems_interval ticks,
@@ -218,10 +197,8 @@ rtems_status_code rtems_timer_fire_after(
void *user_data
);
/*
* rtems_timer_server_fire_after
*
* DESCRIPTION:
/**
* @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
@@ -229,7 +206,6 @@ rtems_status_code rtems_timer_fire_after(
* Timer Server in the context of a task NOT IN THE CONTEXT of the
* clock tick interrupt.
*/
rtems_status_code rtems_timer_server_fire_after(
Objects_Id id,
rtems_interval ticks,
@@ -237,10 +213,8 @@ rtems_status_code rtems_timer_server_fire_after(
void *user_data
);
/*
* rtems_timer_fire_when
*
* DESCRIPTION:
/**
* @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
@@ -248,7 +222,6 @@ rtems_status_code rtems_timer_server_fire_after(
* of the rtems_clock_tick directive which is normally invoked as
* part of servicing a periodic interupt.
*/
rtems_status_code rtems_timer_fire_when(
Objects_Id id,
rtems_time_of_day *wall_time,
@@ -256,10 +229,8 @@ rtems_status_code rtems_timer_fire_when(
void *user_data
);
/*
* rtems_timer_server_fire_when
*
* DESCRIPTION:
/**
* @brief rtems_timer_server_fire_when
*
* This routine implements the rtems_timer_server_fire_when directive. It
* initiates the timer associated with ID to fire at wall_time
@@ -267,7 +238,6 @@ rtems_status_code rtems_timer_fire_when(
* Timer Server in the context of a task NOT IN THE CONTEXT of the
* clock tick interrupt.
*/
rtems_status_code rtems_timer_server_fire_when(
Objects_Id id,
rtems_time_of_day *wall_time,
@@ -275,48 +245,42 @@ rtems_status_code rtems_timer_server_fire_when(
void *user_data
);
/*
* rtems_timer_reset
*
* DESCRIPTION:
/**
* @brief rtems_timer_reset
*
* 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.
*/
rtems_status_code rtems_timer_reset(
Objects_Id id
);
/*
* rtems_timer_initiate_server
*
* DESCRIPTION:
/**
* @brief rtems_timer_initiate_server
*
* This routine implements the rtems_timer_initiate_server directive.
* It creates and starts the server that executes task-based timers.
* It must be invoked before any task-based timers can be initiated.
*/
#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY -1
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
);
/*
* rtems_timer_get_information
*
* DESCRIPTION:
*
* This routine implements the rtems_timer_get_information directive.
* This directive returns information about the timer.
/**
* 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 -1
/**
* This is the structure filled in by the timer get information
* service.
*/
typedef struct {
Timer_Classes the_class;
Watchdog_Interval initial;
@@ -324,17 +288,22 @@ typedef struct {
Watchdog_Interval stop_time;
} rtems_timer_information;
/**
* @brief rtems_timer_get_information
*
* This routine implements the rtems_timer_get_information directive.
* This directive returns information about the timer.
*/
rtems_status_code rtems_timer_get_information(
Objects_Id id,
rtems_timer_information *the_info
);
/*
/**
* Macros and routines that expose the mechanisms required to service
* the Timer Server timer. These stop the timer, synchronize it with
* the current time, and restart it.
*/
extern Watchdog_Control _Timer_Seconds_timer;
#define _Timer_Server_stop_ticks_timer() \
@@ -343,7 +312,18 @@ extern Watchdog_Control _Timer_Seconds_timer;
#define _Timer_Server_stop_seconds_timer() \
_Watchdog_Remove( &_Timer_Seconds_timer );
/**
* This is a helper function which processes the ticks chain when
* needed. It advances time for the ticks chain which results in
* timers firing.
*/
void _Timer_Server_process_ticks_chain(void);
/**
* This is a helper function which processes the seconds chain when
* needed. It advances time for the seconds chain which results in
* timers firing.
*/
void _Timer_Server_process_seconds_chain(void);
#define _Timer_Server_reset_ticks_timer() \
@@ -370,5 +350,7 @@ void _Timer_Server_process_seconds_chain(void);
}
#endif
/**@}*/
#endif
/* end of include file */
+15 -12
View File
@@ -1,11 +1,10 @@
/**
* @file rtems/rtems/types.h
*
* This include file defines the types used by the RTEMS API.
*/
/*
* This include file defines the types used by the RTEMS API.
*
* COPYRIGHT (c) 1989-1999.
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -18,6 +17,13 @@
#ifndef _RTEMS_RTEMS_TYPES_H
#define _RTEMS_RTEMS_TYPES_H
/**
* @defgroup ClassicTypes Classic API Types
*
* This encapsulates functionality which XXX
*/
/**@{*/
#ifdef __cplusplus
extern "C" {
#endif
@@ -50,19 +56,16 @@ typedef Context_Control rtems_context;
typedef Context_Control_fp rtems_context_fp;
typedef CPU_Interrupt_frame rtems_interrupt_frame;
/*
/**
* Region information block
*/
typedef Heap_Information_block region_information_block;
/*
/**
* Time related
*/
typedef Watchdog_Interval rtems_interval;
/**
* The following record defines the time of control block. This
* control block is used to maintain the current time of day.
@@ -86,16 +89,14 @@ typedef struct {
uint32_t ticks;
} rtems_time_of_day;
/*
/**
* Define the type for an RTEMS API task mode.
*/
typedef Modes_Control rtems_mode;
/*
* MPCI related entries
*/
#if defined(RTEMS_MULTIPROCESSING)
typedef MP_packet_Classes rtems_mp_packet_classes;
typedef MP_packet_Prefix rtems_packet_prefix;
@@ -115,5 +116,7 @@ typedef MPCI_Control rtems_mpci_table;
}
#endif
/**@}*/
#endif
/* end of include file */
+20 -35
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/asr.inl
*/
/*
*
* This include file contains the implemenation of all routines
* associated with the asynchronous signal handler which are inlined.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -21,15 +20,16 @@
#include <rtems/score/isr.h>
/*PAGE
*
* _ASR_Initialize
*
* DESCRIPTION:
/**
* @addtogroup ClassicASR
* @{
*/
/**
* @brief ASR_Initialize
*
* This routine initializes the given RTEMS_ASR information record.
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
@@ -42,17 +42,13 @@ RTEMS_INLINE_ROUTINE void _ASR_Initialize (
information->nest_level = 0;
}
/*PAGE
*
* _ASR_Swap_signals
*
* DESCRIPTION:
/**
* @brief ASR_Swap_signals
*
* This routine atomically swaps the pending and posted signal
* sets. This is done when the thread alters its mode in such a
* way that the RTEMS_ASR disable/enable flag changes.
*/
RTEMS_INLINE_ROUTINE void _ASR_Swap_signals (
ASR_Information *information
)
@@ -67,16 +63,12 @@ RTEMS_INLINE_ROUTINE void _ASR_Swap_signals (
_ISR_Enable( _level );
}
/*PAGE
*
* _ASR_Is_null_handler
*
* DESCRIPTION:
/**
* @brief ASR_Is_null_handler
*
* This function returns TRUE if the given asr_handler is NULL and
* FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ASR_Is_null_handler (
rtems_asr_entry asr_handler
)
@@ -84,16 +76,12 @@ RTEMS_INLINE_ROUTINE boolean _ASR_Is_null_handler (
return asr_handler == NULL;
}
/*PAGE
*
* _ASR_Are_signals_pending
*
* DESCRIPTION:
/**
* @brief ASR_Are_signals_pending
*
* This function returns TRUE if there are signals pending in the
* given RTEMS_ASR information record and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _ASR_Are_signals_pending (
ASR_Information *information
)
@@ -101,18 +89,14 @@ RTEMS_INLINE_ROUTINE boolean _ASR_Are_signals_pending (
return information->signals_posted != 0;
}
/*PAGE
*
* _ASR_Post_signals
*
* DESCRIPTION:
/**
* @brief ASR_Post_signals
*
* This routine posts the given signals into the signal_set
* passed in. The result is returned to the user in signal_set.
*
* NOTE: This must be implemented as a macro.
*/
RTEMS_INLINE_ROUTINE void _ASR_Post_signals(
rtems_signal_set signals,
rtems_signal_set *signal_set
@@ -125,6 +109,7 @@ RTEMS_INLINE_ROUTINE void _ASR_Post_signals(
_ISR_Enable( _level );
}
/**@}*/
#endif
/* end of include file */
+35 -76
View File
@@ -1,11 +1,11 @@
/**
* @file rtems/rtems/attr.inl
*
* This include file contains all of the inlined routines associated
* with attributes.
*/
/*
* This include file contains all of the inlined routines associated
* with attributes.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
@@ -19,16 +19,17 @@
#ifndef _RTEMS_RTEMS_ATTR_INL
#define _RTEMS_RTEMS_ATTR_INL
/*PAGE
*
* _Attributes_Set
*
* DESCRIPTION:
/**
* @addtogroup ClassicAttributes
* @{
*/
/**
* @brief Attributes_Set
*
* This function sets the requested new_attributes in the attribute_set
* passed in. The result is returned to the user.
*/
RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Set (
rtems_attribute new_attributes,
rtems_attribute attribute_set
@@ -37,16 +38,12 @@ RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Set (
return attribute_set | new_attributes;
}
/*PAGE
*
* _Attributes_Clear
*
* DESCRIPTION:
/**
* @brief Attributes_Clear
*
* This function clears the requested new_attributes in the attribute_set
* passed in. The result is returned to the user.
*/
RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Clear (
rtems_attribute attribute_set,
rtems_attribute mask
@@ -55,16 +52,12 @@ RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Clear (
return attribute_set & ~mask;
}
/*PAGE
*
* _Attributes_Is_floating_point
*
* DESCRIPTION:
/**
* @brief Attributes_Is_floating_point
*
* This function returns TRUE if the floating point attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_floating_point(
rtems_attribute attribute_set
)
@@ -72,17 +65,13 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_floating_point(
return ( attribute_set & RTEMS_FLOATING_POINT );
}
/*PAGE
*
* _Attributes_Is_global
*
* DESCRIPTION:
#if defined(RTEMS_MULTIPROCESSING)
/**
* @brief Attributes_Is_global
*
* This function returns TRUE if the global object attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
#if defined(RTEMS_MULTIPROCESSING)
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_global(
rtems_attribute attribute_set
)
@@ -91,16 +80,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_global(
}
#endif
/*PAGE
*
* _Attributes_Is_priority
*
* DESCRIPTION:
/**
* @brief Attributes_Is_priority
*
* This function returns TRUE if the priority attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority(
rtems_attribute attribute_set
)
@@ -108,16 +93,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority(
return ( attribute_set & RTEMS_PRIORITY );
}
/*PAGE
*
* _Attributes_Is_binary_semaphore
*
* DESCRIPTION:
/**
* @brief Attributes_Is_binary_semaphore
*
* This function returns TRUE if the binary semaphore attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
@@ -125,16 +106,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_binary_semaphore(
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
}
/*PAGE
*
* _Attributes_Is_simple_binary_semaphore
*
* DESCRIPTION:
/**
* @brief Attributes_Is_simple_binary_semaphore
*
* This function returns TRUE if the simple binary semaphore attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_simple_binary_semaphore(
rtems_attribute attribute_set
)
@@ -143,16 +120,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_simple_binary_semaphore(
((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_SIMPLE_BINARY_SEMAPHORE);
}
/*PAGE
*
* _Attributes_Is_counting_semaphore
*
* DESCRIPTION:
/**
* @brief Attributes_Is_counting_semaphore
*
* This function returns TRUE if the counting semaphore attribute is
* enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_counting_semaphore(
rtems_attribute attribute_set
)
@@ -160,16 +133,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_counting_semaphore(
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
}
/*PAGE
*
* _Attributes_Is_inherit_priority
*
* DESCRIPTION:
/**
* @brief Attributes_Is_inherit_priority
*
* This function returns TRUE if the priority inheritance attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_inherit_priority(
rtems_attribute attribute_set
)
@@ -177,16 +146,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_inherit_priority(
return ( attribute_set & RTEMS_INHERIT_PRIORITY );
}
/*PAGE
*
* _Attributes_Is_priority_ceiling
*
* DESCRIPTION:
/**
* @brief Attributes_Is_priority_ceiling
*
* This function returns TRUE if the priority ceiling attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority_ceiling(
rtems_attribute attribute_set
)
@@ -194,16 +159,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_priority_ceiling(
return ( attribute_set & RTEMS_PRIORITY_CEILING );
}
/*PAGE
*
* _Attributes_Is_barrier_automatic
*
* DESCRIPTION:
/**
* @brief Attributes_Is_barrier_automatic
*
* This function returns TRUE if the barrier automatic release
* attribute is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_barrier_automatic(
rtems_attribute attribute_set
)
@@ -211,16 +172,12 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_barrier_automatic(
return ( attribute_set & RTEMS_BARRIER_AUTOMATIC_RELEASE );
}
/*PAGE
*
* _Attributes_Is_system_task
*
* DESCRIPTION:
/**
* @brief Attributes_Is_system_task
*
* This function returns TRUE if the system task attribute
* is enabled in the attribute_set and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Attributes_Is_system_task(
rtems_attribute attribute_set
)
@@ -228,5 +185,7 @@ RTEMS_INLINE_ROUTINE boolean _Attributes_Is_system_task(
return ( attribute_set & RTEMS_SYSTEM_TASK );
}
/**@}*/
#endif
/* end of include file */
+11 -5
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/barrier.inl
*/
/*
*
* This file contains the static inlin implementation of the inlined
* routines from the Barrier Manager.
*
* COPYRIGHT (c) 1989-2006.
*/
/* COPYRIGHT (c) 1989-2006.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,6 +18,11 @@
#ifndef _RTEMS_RTEMS_BARRIER_INL
#define _RTEMS_RTEMS_BARRIER_INL
/**
* @addtogroup ClassicBarrier
* @{
*/
/**
* @brief _Barrier_Allocate
*
@@ -75,5 +79,7 @@ RTEMS_INLINE_ROUTINE boolean _Barrier_Is_null (
return ( the_barrier == NULL );
}
/**@}*/
#endif
/* end of include file */
+18 -29
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/dpmem.inl
*/
/*
*
* This include file contains the inline routine used in conjunction
* with the Dual Ported Memory Manager
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,17 +18,17 @@
#ifndef _RTEMS_RTEMS_DPMEM_INL
#define _RTEMS_RTEMS_DPMEM_INL
/**
* @addtogroup ClassicDPMEM
* @{
*/
/*PAGE
*
* _Dual_ported_memory_Allocate
*
* DESCRIPTION:
/**
* @brief Dual_ported_memory_Allocate
*
* This routine allocates a port control block from the inactive chain
* of free port control blocks.
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
*_Dual_ported_memory_Allocate ( void )
{
@@ -37,16 +36,12 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
_Objects_Allocate( &_Dual_ported_memory_Information );
}
/*PAGE
*
* _Dual_ported_memory_Free
*
* DESCRIPTION:
/**
* @brief Dual_ported_memory_Free
*
* This routine frees a port control block to the inactive chain
* of free port control blocks.
*/
RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
Dual_ported_memory_Control *the_port
)
@@ -54,11 +49,8 @@ RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
_Objects_Free( &_Dual_ported_memory_Information, &the_port->Object );
}
/*PAGE
*
* _Dual_ported_memory_Get
*
* DESCRIPTION:
/**
* @brief Dual_ported_memory_Get
*
* This function maps port IDs to port control blocks. If ID
* corresponds to a local port, then it returns the_port control
@@ -67,7 +59,6 @@ RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
* local port, location is set to OBJECTS_ERROR and the_port is
* undefined.
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get (
Objects_Id id,
Objects_Locations *location
@@ -77,15 +68,11 @@ RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get (
_Objects_Get( &_Dual_ported_memory_Information, id, location );
}
/*PAGE
*
* _Dual_ported_memory_Is_null
*
* DESCRIPTION:
/**
* @brief Dual_ported_memory_Is_null
*
* This function returns TRUE if the_port is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Dual_ported_memory_Is_null(
Dual_ported_memory_Control *the_port
)
@@ -93,5 +80,7 @@ RTEMS_INLINE_ROUTINE boolean _Dual_ported_memory_Is_null(
return ( the_port == NULL );
}
/**@}*/
#endif
/* end of include file */
+11 -5
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/event.inl
*/
/*
*
* This include file contains the static inline implementation of
* macros for the Event Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,5 +18,12 @@
#ifndef _RTEMS_RTEMS_EVENT_INL
#define _RTEMS_RTEMS_EVENT_INL
/**
* @addtogroup ClassicEvent
* @{
*/
/**@}*/
#endif
/* end of include file */
+18 -28
View File
@@ -1,11 +1,10 @@
/**
* @file rtems/rtems/eventset.inl
*
* This include file contains the information pertaining to event sets.
*/
/*
* This include file contains the information pertaining to event sets.
*
* COPYRIGHT (c) 1989-2008.
/* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -18,16 +17,17 @@
#ifndef _RTEMS_RTEMS_EVENTSET_INL
#define _RTEMS_RTEMS_EVENTSET_INL
/*PAGE
*
* _Event_sets_Is_empty
*
* DESCRIPTION:
/**
* @addtogroup ClassicEventSet
* @{
*/
/**
* @brief Event_sets_Is_empty
*
* This function returns TRUE if on events are posted in the event_set,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Event_sets_Is_empty(
rtems_event_set the_event_set
)
@@ -35,16 +35,12 @@ RTEMS_INLINE_ROUTINE boolean _Event_sets_Is_empty(
return ( the_event_set == 0 );
}
/*PAGE
*
* _Event_sets_Post
*
* DESCRIPTION:
/**
* @brief Event_sets_Post
*
* This routine posts the given new_events into the event_set
* passed in. The result is returned to the user in event_set.
*/
RTEMS_INLINE_ROUTINE void _Event_sets_Post(
rtems_event_set the_new_events,
rtems_event_set *the_event_set
@@ -57,16 +53,12 @@ RTEMS_INLINE_ROUTINE void _Event_sets_Post(
_ISR_Enable( level );
}
/*PAGE
*
* _Event_sets_Get
*
* DESCRIPTION:
/**
* @brief Event_sets_Get
*
* This function returns the events in event_condition which are
* set in event_set.
*/
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
rtems_event_set the_event_set,
rtems_event_set the_event_condition
@@ -75,16 +67,12 @@ RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
return ( the_event_set & the_event_condition );
}
/*PAGE
*
* _Event_sets_Clear
*
* DESCRIPTION:
/**
* @brief Event_sets_Clear
*
* This function removes the events in mask from the event_set
* passed in. The result is returned to the user in event_set.
*/
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
rtems_event_set the_event_set,
rtems_event_set the_mask
@@ -93,5 +81,7 @@ RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
return ( the_event_set & ~(the_mask) );
}
/**@}*/
#endif
/* end of include file */
+17 -23
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/message.inl
*/
/*
*
* This include file contains the static inline implementation of all
* inlined routines in the Message Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -21,16 +20,17 @@
#include <rtems/score/wkspace.h>
/*PAGE
*
* _Message_queue_Is_null
*
* DESCRIPTION:
/**
* @addtogroup ClassicMessageQueue
* @{
*/
/**
* @brief Message_queue_Is_null
*
* This function places the_message at the rear of the outstanding
* messages on the_message_queue.
*/
RTEMS_INLINE_ROUTINE boolean _Message_queue_Is_null (
Message_queue_Control *the_message_queue
)
@@ -39,16 +39,12 @@ RTEMS_INLINE_ROUTINE boolean _Message_queue_Is_null (
}
/*PAGE
*
* _Message_queue_Free
*
* DESCRIPTION:
/**
* @brief Message_queue_Free
*
* This routine deallocates a message queue control block into
* the inactive chain of free message queue control blocks.
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
@@ -56,11 +52,8 @@ RTEMS_INLINE_ROUTINE void _Message_queue_Free (
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
}
/*PAGE
*
* _Message_queue_Get
*
* DESCRIPTION:
/**
* @brief Message_queue_Get
*
* This function maps message queue IDs to message queue control
* blocks. If ID corresponds to a local message queue, then it
@@ -71,7 +64,6 @@ RTEMS_INLINE_ROUTINE void _Message_queue_Free (
* Otherwise, location is set to OBJECTS_ERROR and
* the_message_queue is undefined.
*/
RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get (
Objects_Id id,
Objects_Locations *location
@@ -81,5 +73,7 @@ RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get (
_Objects_Get( &_Message_queue_Information, id, location );
}
/**@}*/
#endif
/* end of include file */
+25 -47
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/modes.inl
*/
/*
*
* This include file contains the static inline implementation of the
* inlined routines in the Mode Handler
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,16 +18,17 @@
#ifndef _RTEMS_RTEMS_MODES_INL
#define _RTEMS_RTEMS_MODES_INL
/*PAGE
*
* _Modes_Mask_changed
*
* DESCRIPTION:
/**
* @addtogroup ClassicModes
* @{
*/
/**
* @brief Modes_Mask_changed
*
* This function returns TRUE if any of the mode flags in mask
* are set in mode_set, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Mask_changed (
Modes_Control mode_set,
Modes_Control masks
@@ -37,16 +37,12 @@ RTEMS_INLINE_ROUTINE boolean _Modes_Mask_changed (
return ( mode_set & masks );
}
/*PAGE
*
* _Modes_Is_asr_disabled
*
* DESCRIPTION:
/**
* @brief Modes_Is_asr_disabled
*
* This function returns TRUE if mode_set indicates that Asynchronous
* Signal Processing is disabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_asr_disabled (
Modes_Control mode_set
)
@@ -54,16 +50,12 @@ RTEMS_INLINE_ROUTINE boolean _Modes_Is_asr_disabled (
return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;
}
/*PAGE
*
* _Modes_Is_preempt
*
* DESCRIPTION:
/**
* @brief Modes_Is_preempt
*
* This function returns TRUE if mode_set indicates that preemption
* is enabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_preempt (
Modes_Control mode_set
)
@@ -71,16 +63,12 @@ RTEMS_INLINE_ROUTINE boolean _Modes_Is_preempt (
return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;
}
/*PAGE
*
* _Modes_Is_timeslice
*
* DESCRIPTION:
/**
* @brief Modes_Is_timeslice
*
* This function returns TRUE if mode_set indicates that timeslicing
* is enabled, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Modes_Is_timeslice (
Modes_Control mode_set
)
@@ -88,15 +76,11 @@ RTEMS_INLINE_ROUTINE boolean _Modes_Is_timeslice (
return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;
}
/*PAGE
*
* _Modes_Get_interrupt_level
*
* DESCRIPTION:
/**
* @brief Modes_Get_interrupt_level
*
* This function returns the interrupt level portion of the mode_set.
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
@@ -104,16 +88,12 @@ RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
return ( mode_set & RTEMS_INTERRUPT_MASK );
}
/*PAGE
*
* _Modes_Set_interrupt_level
*
* DESCRIPTION:
/**
* @brief Modes_Set_interrupt_level
*
* This routine sets the current interrupt level to that specified
* in the mode_set.
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
@@ -121,18 +101,14 @@ RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
}
/*PAGE
*
* _Modes_Change
*
* DESCRIPTION:
/**
* @brief Modes_Change
*
* This routine changes the modes in old_mode_set indicated by
* mask to the requested values in new_mode_set. The resulting
* mode set is returned in out_mode_set and the modes that changed
* is returned in changed.
*/
RTEMS_INLINE_ROUTINE void _Modes_Change (
Modes_Control old_mode_set,
Modes_Control new_mode_set,
@@ -150,5 +126,7 @@ RTEMS_INLINE_ROUTINE void _Modes_Change (
*out_mode_set = _out_mode;
}
/**@}*/
#endif
/* end of include file */
+15 -17
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/options.inl
*/
/*
*
* This file contains the static inline implementation of the inlined
* routines from the Options Handler.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,16 +18,17 @@
#ifndef _RTEMS_RTEMS_OPTIONS_INL
#define _RTEMS_RTEMS_OPTIONS_INL
/*PAGE
*
* _Options_Is_no_wait
*
* DESCRIPTION:
/**
* @addtogroup ClassicOptions
* @{
*/
/**
* @brief Options_Is_no_wait
*
* This function returns TRUE if the RTEMS_NO_WAIT option is enabled in
* option_set, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Options_Is_no_wait (
rtems_option option_set
)
@@ -36,16 +36,12 @@ RTEMS_INLINE_ROUTINE boolean _Options_Is_no_wait (
return (option_set & RTEMS_NO_WAIT);
}
/*PAGE
*
* _Options_Is_any
*
* DESCRIPTION:
/**
* @brief Options_Is_any
*
* This function returns TRUE if the RTEMS_EVENT_ANY option is enabled in
* OPTION_SET, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Options_Is_any (
rtems_option option_set
)
@@ -53,5 +49,7 @@ RTEMS_INLINE_ROUTINE boolean _Options_Is_any (
return (option_set & RTEMS_EVENT_ANY);
}
/**@}*/
#endif
/* end of include file */
+29 -59
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/part.inl
*/
/*
*
* This file contains the macro implementation of all inlined routines
* in the Partition Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,17 +18,18 @@
#ifndef _RTEMS_RTEMS_PART_INL
#define _RTEMS_RTEMS_PART_INL
/*PAGE
*
* _Partition_Allocate_buffer
*
* DESCRIPTION:
/**
* @addtogroup ClassicPart
* @{
*/
/**
* @brief Partition_Allocate_buffer
*
* This function attempts to allocate a buffer from the_partition.
* If successful, it returns the address of the allocated buffer.
* Otherwise, it returns NULL.
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
@@ -37,15 +37,11 @@ RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
return _Chain_Get( &the_partition->Memory );
}
/*PAGE
*
* _Partition_Free_buffer
*
* DESCRIPTION:
/**
* @brief Partition_Free_buffer
*
* This routine frees the_buffer to the_partition.
*/
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
@@ -54,16 +50,12 @@ RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
_Chain_Append( &the_partition->Memory, the_buffer );
}
/*PAGE
*
* _Partition_Is_buffer_on_boundary
*
* DESCRIPTION:
/**
* @brief Partition_Is_buffer_on_boundary
*
* This function returns TRUE if the_buffer is on a valid buffer
* boundary for the_partition, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_on_boundary (
void *the_buffer,
Partition_Control *the_partition
@@ -79,16 +71,12 @@ RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_on_boundary (
return ((offset % the_partition->buffer_size) == 0);
}
/*PAGE
*
* _Partition_Is_buffer_valid
*
* DESCRIPTION:
/**
* @brief Partition_Is_buffer_valid
*
* This function returns TRUE if the_buffer is a valid buffer from
* the_partition, otherwise FALSE is returned.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_valid (
Chain_Node *the_buffer,
Partition_Control *the_partition
@@ -106,17 +94,13 @@ RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_valid (
);
}
/*PAGE
*
* _Partition_Is_buffer_size_aligned
*
* DESCRIPTION:
/**
* @brief Partition_Is_buffer_size_aligned
*
* This function returns TRUE if the use of the specified buffer_size
* will result in the allocation of buffers whose first byte is
* properly aligned, and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_size_aligned (
uint32_t buffer_size
)
@@ -124,31 +108,23 @@ RTEMS_INLINE_ROUTINE boolean _Partition_Is_buffer_size_aligned (
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
}
/*PAGE
*
* _Partition_Allocate
*
* DESCRIPTION:
/**
* @brief Partition_Allocate
*
* This function allocates a partition control block from
* the inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )
{
return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
}
/*PAGE
*
* _Partition_Free
*
* DESCRIPTION:
/**
* @brief Partition_Free
*
* This routine frees a partition control block to the
* inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
@@ -156,11 +132,8 @@ RTEMS_INLINE_ROUTINE void _Partition_Free (
_Objects_Free( &_Partition_Information, &the_partition->Object );
}
/*PAGE
*
* _Partition_Get
*
* DESCRIPTION:
/**
* @brief Partition_Get
*
* This function maps partition IDs to partition control blocks.
* If ID corresponds to a local partition, then it returns
@@ -170,7 +143,6 @@ RTEMS_INLINE_ROUTINE void _Partition_Free (
* and the_partition is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_partition is undefined.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (
Objects_Id id,
Objects_Locations *location
@@ -180,16 +152,12 @@ RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (
_Objects_Get( &_Partition_Information, id, location );
}
/*PAGE
*
* _Partition_Is_null
*
* DESCRIPTION:
/**
* @brief Partition_Is_null
*
* This function returns TRUE if the_partition is NULL
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Partition_Is_null (
Partition_Control *the_partition
)
@@ -197,5 +165,7 @@ RTEMS_INLINE_ROUTINE boolean _Partition_Is_null (
return ( the_partition == NULL );
}
/**@}*/
#endif
/* end of include file */
+25 -47
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/ratemon.inl
*/
/*
*
* This file contains the static inline implementation of the inlined
* routines in the Rate Monotonic Manager.
*
* COPYRIGHT (c) 1989-2007.
*/
/* COPYRIGHT (c) 1989-2007.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,32 +18,29 @@
#ifndef _RTEMS_RTEMS_RATEMON_INL
#define _RTEMS_RTEMS_RATEMON_INL
/*PAGE
*
* _Rate_monotonic_Allocate
*
* DESCRIPTION:
/**
* @addtogroup ClassicRateMon
* @{
*/
/**
* @brief Rate_monotonic_Allocate
*
* This function allocates a period control block from
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void )
{
return (Rate_monotonic_Control *)
_Objects_Allocate( &_Rate_monotonic_Information );
}
/*PAGE
*
* _Rate_monotonic_Free
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Free
*
* This routine allocates a period control block from
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
Rate_monotonic_Control *the_period
)
@@ -52,11 +48,8 @@ RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
_Objects_Free( &_Rate_monotonic_Information, &the_period->Object );
}
/*PAGE
*
* _Rate_monotonic_Get
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Get
*
* This function maps period IDs to period control blocks.
* If ID corresponds to a local period, then it returns
@@ -64,7 +57,6 @@ RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
* is set to OBJECTS_LOCAL. Otherwise, location is set
* to OBJECTS_ERROR and the_period is undefined.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get (
Objects_Id id,
Objects_Locations *location
@@ -74,16 +66,12 @@ RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get (
_Objects_Get( &_Rate_monotonic_Information, id, location );
}
/*PAGE
*
* _Rate_monotonic_Is_active
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Is_active
*
* This function returns TRUE if the_period is in the ACTIVE state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_active (
Rate_monotonic_Control *the_period
)
@@ -91,16 +79,12 @@ RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_active (
return (the_period->state == RATE_MONOTONIC_ACTIVE);
}
/*PAGE
*
* _Rate_monotonic_Is_inactive
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Is_inactive
*
* This function returns TRUE if the_period is in the ACTIVE state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_inactive (
Rate_monotonic_Control *the_period
)
@@ -108,16 +92,12 @@ RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_inactive (
return (the_period->state == RATE_MONOTONIC_INACTIVE);
}
/*PAGE
*
* _Rate_monotonic_Is_expired
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Is_expired
*
* This function returns TRUE if the_period is in the EXPIRED state,
* and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_expired (
Rate_monotonic_Control *the_period
)
@@ -125,15 +105,11 @@ RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_expired (
return (the_period->state == RATE_MONOTONIC_EXPIRED);
}
/*PAGE
*
* _Rate_monotonic_Is_null
*
* DESCRIPTION:
/**
* @brief Rate_monotonic_Is_null
*
* This function returns TRUE if the_period is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_null (
Rate_monotonic_Control *the_period
)
@@ -141,5 +117,7 @@ RTEMS_INLINE_ROUTINE boolean _Rate_monotonic_Is_null (
return (the_period == NULL);
}
/**@}*/
#endif
/* end of include file */
+21 -41
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/region.inl
*/
/*
*
* This file contains the macro implementation of the inlined
* routines from the Region Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,31 +18,28 @@
#ifndef _RTEMS_RTEMS_REGION_INL
#define _RTEMS_RTEMS_REGION_INL
/*PAGE
*
* _Region_Allocate
*
* DESCRIPTION:
/**
* @addtogroup ClassicRegion
* @{
*/
/**
* @brief Region_Allocate
*
* This function allocates a region control block from
* the inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void )
{
return (Region_Control *) _Objects_Allocate( &_Region_Information );
}
/*PAGE
*
* _Region_Free
*
* DESCRIPTION:
/**
* @brief Region_Free
*
* This routine frees a region control block to the
* inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
@@ -51,11 +47,8 @@ RTEMS_INLINE_ROUTINE void _Region_Free (
_Objects_Free( &_Region_Information, &the_region->Object );
}
/*PAGE
*
* _Region_Get
*
* DESCRIPTION:
/**
* @brief Region_Get
*
* This function maps region IDs to region control blocks.
* If ID corresponds to a local region, then it returns
@@ -63,7 +56,6 @@ RTEMS_INLINE_ROUTINE void _Region_Free (
* is set to OBJECTS_LOCAL. Otherwise, location is set
* to OBJECTS_ERROR and the_region is undefined.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Get (
Objects_Id id,
Objects_Locations *location
@@ -73,17 +65,13 @@ RTEMS_INLINE_ROUTINE Region_Control *_Region_Get (
_Objects_Get_no_protection( &_Region_Information, id, location );
}
/*PAGE
*
* _Region_Allocate_segment
*
* DESCRIPTION:
/**
* @brief Region_Allocate_segment
*
* This function attempts to allocate a segment from the_region.
* If successful, it returns the address of the allocated segment.
* Otherwise, it returns NULL.
*/
RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
Region_Control *the_region,
uint32_t size
@@ -92,15 +80,11 @@ RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
return _Heap_Allocate( &the_region->Memory, size );
}
/*PAGE
*
* _Region_Free_segment
*
* DESCRIPTION:
/**
* @brief Region_Free_segment
*
* This function frees the_segment to the_region.
*/
RTEMS_INLINE_ROUTINE boolean _Region_Free_segment (
Region_Control *the_region,
void *the_segment
@@ -109,15 +93,11 @@ RTEMS_INLINE_ROUTINE boolean _Region_Free_segment (
return _Heap_Free( &the_region->Memory, the_segment );
}
/*PAGE
*
* _Region_Is_null
*
* DESCRIPTION:
/**
* @brief Region_Is_null
*
* This function returns TRUE if the_region is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Region_Is_null (
Region_Control *the_region
)
+19 -29
View File
@@ -1,12 +1,11 @@
/**
* @file rtems/rtems/sem.inl
*/
/*
*
* This file contains the static inlin implementation of the inlined
* routines from the Semaphore Manager.
*
* COPYRIGHT (c) 1989-1999.
*/
/* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -19,31 +18,28 @@
#ifndef _RTEMS_RTEMS_SEM_INL
#define _RTEMS_RTEMS_SEM_INL
/*PAGE
*
* _Semaphore_Allocate
*
* DESCRIPTION:
/**
* @addtogroup ClassicSem
* @{
*/
/**
* @brief Semaphore_Allocate
*
* This function allocates a semaphore control block from
* the inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )
{
return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
}
/*PAGE
*
* _Semaphore_Free
*
* DESCRIPTION:
/**
* @brief Semaphore_Free
*
* This routine frees a semaphore control block to the
* inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
@@ -51,11 +47,8 @@ RTEMS_INLINE_ROUTINE void _Semaphore_Free (
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
}
/*PAGE
*
* _Semaphore_Get
*
* DESCRIPTION:
/**
* @brief Semaphore_Get
*
* This function maps semaphore IDs to semaphore control blocks.
* If ID corresponds to a local semaphore, then it returns
@@ -65,7 +58,6 @@ RTEMS_INLINE_ROUTINE void _Semaphore_Free (
* and the_semaphore is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_semaphore is undefined.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get (
Objects_Id id,
Objects_Locations *location
@@ -85,15 +77,11 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get_interrupt_disable (
_Objects_Get_isr_disable( &_Semaphore_Information, id, location, level );
}
/*PAGE
*
* _Semaphore_Is_null
*
* DESCRIPTION:
/**
* @brief Semaphore_Is_null
*
* This function returns TRUE if the_semaphore is NULL and FALSE otherwise.
*/
RTEMS_INLINE_ROUTINE boolean _Semaphore_Is_null (
Semaphore_Control *the_semaphore
)
@@ -101,5 +89,7 @@ RTEMS_INLINE_ROUTINE boolean _Semaphore_Is_null (
return ( the_semaphore == NULL );
}
/**@}*/
#endif
/* end of include file */

Some files were not shown because too many files have changed in this diff Show More