mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-08-31 04:38:04 +08:00
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:
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 )
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user