diff options
Diffstat (limited to 'cpukit/rtems/include/rtems/rtems')
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/event.h | 185 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/eventimpl.h | 179 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/eventmp.h | 5 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/eventset.h | 146 |
4 files changed, 277 insertions, 238 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/event.h b/cpukit/rtems/include/rtems/rtems/event.h index 6a27c91aee..b2a215b0d2 100644 --- a/cpukit/rtems/include/rtems/rtems/event.h +++ b/cpukit/rtems/include/rtems/rtems/event.h @@ -28,28 +28,99 @@ #ifndef _RTEMS_RTEMS_EVENT_H #define _RTEMS_RTEMS_EVENT_H -/** - * This constant is defined to extern most of the time when using - * this header file. However by defining it to nothing, the data - * declared in this header file can be instantiated. This is done - * in a single per manager file. - */ -#ifndef RTEMS_EVENT_EXTERN -#define RTEMS_EVENT_EXTERN extern -#endif +#include <rtems/rtems/status.h> +#include <rtems/rtems/types.h> +#include <rtems/rtems/options.h> #ifdef __cplusplus extern "C" { #endif -#include <rtems/score/object.h> -#include <rtems/rtems/status.h> -#include <rtems/rtems/types.h> -#include <rtems/rtems/options.h> -#include <rtems/score/thread.h> -#include <rtems/score/threadsync.h> -#include <rtems/score/watchdog.h> -#include <rtems/rtems/eventset.h> +/** + * @defgroup ClassicEventSet Event Set + * + * @ingroup ClassicEvent + * + * @{ + */ + +/** + * @brief Integer type to hold an event set of up to 32 events represented as + * a bit field. + */ +typedef uint32_t rtems_event_set; + +/** + * @brief Constant used to send or receive all events. + */ +#define RTEMS_ALL_EVENTS 0xFFFFFFFF + +/** @brief Defines the bit in the event set associated with event 0. */ +#define RTEMS_EVENT_0 0x00000001 +/** @brief Defines the bit in the event set associated with event 1. */ +#define RTEMS_EVENT_1 0x00000002 +/** @brief Defines the bit in the event set associated with event 2. */ +#define RTEMS_EVENT_2 0x00000004 +/** @brief Defines the bit in the event set associated with event 3. */ +#define RTEMS_EVENT_3 0x00000008 +/** @brief Defines the bit in the event set associated with event 4. */ +#define RTEMS_EVENT_4 0x00000010 +/** @brief Defines the bit in the event set associated with event 5. */ +#define RTEMS_EVENT_5 0x00000020 +/** @brief Defines the bit in the event set associated with event 6. */ +#define RTEMS_EVENT_6 0x00000040 +/** @brief Defines the bit in the event set associated with event 7. */ +#define RTEMS_EVENT_7 0x00000080 +/** @brief Defines the bit in the event set associated with event 8. */ +#define RTEMS_EVENT_8 0x00000100 +/** @brief Defines the bit in the event set associated with event 9. */ +#define RTEMS_EVENT_9 0x00000200 +/** @brief Defines the bit in the event set associated with event 10. */ +#define RTEMS_EVENT_10 0x00000400 +/** @brief Defines the bit in the event set associated with event 11. */ +#define RTEMS_EVENT_11 0x00000800 +/** @brief Defines the bit in the event set associated with event 12. */ +#define RTEMS_EVENT_12 0x00001000 +/** @brief Defines the bit in the event set associated with event 13. */ +#define RTEMS_EVENT_13 0x00002000 +/** @brief Defines the bit in the event set associated with event 14. */ +#define RTEMS_EVENT_14 0x00004000 +/** @brief Defines the bit in the event set associated with event 15. */ +#define RTEMS_EVENT_15 0x00008000 +/** @brief Defines the bit in the event set associated with event 16. */ +#define RTEMS_EVENT_16 0x00010000 +/** @brief Defines the bit in the event set associated with event 17. */ +#define RTEMS_EVENT_17 0x00020000 +/** @brief Defines the bit in the event set associated with event 18. */ +#define RTEMS_EVENT_18 0x00040000 +/** @brief Defines the bit in the event set associated with event 19. */ +#define RTEMS_EVENT_19 0x00080000 +/** @brief Defines the bit in the event set associated with event 20. */ +#define RTEMS_EVENT_20 0x00100000 +/** @brief Defines the bit in the event set associated with event 21. */ +#define RTEMS_EVENT_21 0x00200000 +/** @brief Defines the bit in the event set associated with event 22. */ +#define RTEMS_EVENT_22 0x00400000 +/** @brief Defines the bit in the event set associated with event 23. */ +#define RTEMS_EVENT_23 0x00800000 +/** @brief Defines the bit in the event set associated with event 24. */ +#define RTEMS_EVENT_24 0x01000000 +/** @brief Defines the bit in the event set associated with event 25. */ +#define RTEMS_EVENT_25 0x02000000 +/** @brief Defines the bit in the event set associated with event 26. */ +#define RTEMS_EVENT_26 0x04000000 +/** @brief Defines the bit in the event set associated with event 27. */ +#define RTEMS_EVENT_27 0x08000000 +/** @brief Defines the bit in the event set associated with event 29. */ +#define RTEMS_EVENT_28 0x10000000 +/** @brief Defines the bit in the event set associated with event 29. */ +#define RTEMS_EVENT_29 0x20000000 +/** @brief Defines the bit in the event set associated with event 30. */ +#define RTEMS_EVENT_30 0x40000000 +/** @brief Defines the bit in the event set associated with event 31. */ +#define RTEMS_EVENT_31 0x80000000 + +/** @} */ /** * @defgroup ClassicEvent Events @@ -103,6 +174,12 @@ extern "C" { */ /** + * @brief Constant used to receive the set of currently pending events in + * rtems_event_receive(). + */ +#define RTEMS_PENDING_EVENTS 0 + +/** * @brief Sends an Event Set to the Target Task * * This directive sends an event set @a event_in to the task specified by @@ -420,84 +497,10 @@ RTEMS_INLINE_ROUTINE void rtems_event_transient_clear( void ) /** @} */ -/** - * @defgroup ScoreEvent Event Handler - * - * @ingroup Score - * - * @{ - */ - typedef struct { rtems_event_set pending_events; } Event_Control; -/** - * This constant is passed as the event_in to the - * rtems_event_receive directive to determine which events are pending. - */ -#define EVENT_CURRENT 0 - -/** - * @brief Event Manager Initialization - * - * Event Manager - * - * This routine performs the initialization necessary for this manager. - * - * - INTERRUPT LATENCY: - * + single case - */ -void _Event_Manager_initialization( void ); - -void _Event_Seize( - rtems_event_set event_in, - rtems_option option_set, - rtems_interval ticks, - rtems_event_set *event_out, - Thread_Control *executing, - Event_Control *event, - Thread_blocking_operation_States *sync_state, - States_Control wait_state -); - -/** - * @brief Surrender Event - * - * - INTERRUPT LATENCY: - * + before flash - * + after flash - * + check sync - */ -void _Event_Surrender( - Thread_Control *the_thread, - rtems_event_set event_in, - Event_Control *event, - Thread_blocking_operation_States *sync_state, - States_Control wait_state -); - -/** - * @brief Timeout Event - */ -void _Event_Timeout( - Objects_Id id, - void *arg -); - -RTEMS_EVENT_EXTERN Thread_blocking_operation_States _Event_Sync_state; - -RTEMS_EVENT_EXTERN Thread_blocking_operation_States _System_event_Sync_state; - -/** @} */ - -#if defined(RTEMS_MULTIPROCESSING) -#include <rtems/rtems/eventmp.h> -#endif -#ifndef __RTEMS_APPLICATION__ -#include <rtems/rtems/event.inl> -#endif - #ifdef __cplusplus } #endif diff --git a/cpukit/rtems/include/rtems/rtems/eventimpl.h b/cpukit/rtems/include/rtems/rtems/eventimpl.h new file mode 100644 index 0000000000..1c46a7acbf --- /dev/null +++ b/cpukit/rtems/include/rtems/rtems/eventimpl.h @@ -0,0 +1,179 @@ +/** + * @file + * + * @ingroup ClassicEventImpl + * + * @brief Classic Event Implementation + */ + +/* COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef _RTEMS_RTEMS_EVENT_INL +#define _RTEMS_RTEMS_EVENT_INL + +#include <rtems/rtems/event.h> +#include <rtems/score/thread.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup ClassicEventImpl Classic Event Implementation + * + * @ingroup ClassicEvent + * + * @{ + */ + +/** + * This constant is defined to extern most of the time when using + * this header file. However by defining it to nothing, the data + * declared in this header file can be instantiated. This is done + * in a single per manager file. + */ +#ifndef RTEMS_EVENT_EXTERN +#define RTEMS_EVENT_EXTERN extern +#endif + +/** + * This constant is passed as the event_in to the + * rtems_event_receive directive to determine which events are pending. + */ +#define EVENT_CURRENT 0 + +/** + * The following constant is the value of an event set which + * has no events pending. + */ +#define EVENT_SETS_NONE_PENDING 0 + +RTEMS_EVENT_EXTERN Thread_blocking_operation_States _Event_Sync_state; + +RTEMS_EVENT_EXTERN Thread_blocking_operation_States _System_event_Sync_state; + +/** + * @brief Event Manager Initialization + * + * Event Manager + * + * This routine performs the initialization necessary for this manager. + * + * - INTERRUPT LATENCY: + * + single case + */ +void _Event_Manager_initialization( void ); + +void _Event_Seize( + rtems_event_set event_in, + rtems_option option_set, + rtems_interval ticks, + rtems_event_set *event_out, + Thread_Control *executing, + Event_Control *event, + Thread_blocking_operation_States *sync_state, + States_Control wait_state +); + +/** + * @brief Surrender Event + * + * - INTERRUPT LATENCY: + * + before flash + * + after flash + * + check sync + */ +void _Event_Surrender( + Thread_Control *the_thread, + rtems_event_set event_in, + Event_Control *event, + Thread_blocking_operation_States *sync_state, + States_Control wait_state +); + +/** + * @brief Timeout Event + */ +void _Event_Timeout( + Objects_Id id, + void *arg +); + +RTEMS_INLINE_ROUTINE void _Event_Initialize( Event_Control *event ) +{ + event->pending_events = EVENT_SETS_NONE_PENDING; +} + +/** + * @brief Checks if on events are posted in the event_set. + * + * This function returns TRUE if on events are posted in the event_set, + * and FALSE otherwise. + */ +RTEMS_INLINE_ROUTINE bool _Event_sets_Is_empty( + rtems_event_set the_event_set +) +{ + return ( the_event_set == 0 ); +} + +/** + * @brief Posts the given new_events into the event_set passed in. + * + * 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 +) +{ + *the_event_set |= the_new_events; +} + +/** + * @brief Returns the events in event_condition that are set in event_set. + * + * 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 +) +{ + return ( the_event_set & the_event_condition ); +} + +/** + * @brief Removes the events in mask from the event_set passed in. + * + * 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 +) +{ + return ( the_event_set & ~(the_mask) ); +} + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#if defined(RTEMS_MULTIPROCESSING) +#include <rtems/rtems/eventmp.h> +#endif + +#endif +/* end of include file */ diff --git a/cpukit/rtems/include/rtems/rtems/eventmp.h b/cpukit/rtems/include/rtems/rtems/eventmp.h index 45f60b67b7..128cc4e377 100644 --- a/cpukit/rtems/include/rtems/rtems/eventmp.h +++ b/cpukit/rtems/include/rtems/rtems/eventmp.h @@ -21,11 +21,14 @@ #ifndef _RTEMS_RTEMS_EVENTMP_H #define _RTEMS_RTEMS_EVENTMP_H +#ifndef _RTEMS_RTEMS_EVENTIMPL_H +# error "Never use <rtems/rtems/eventmp.h> directly; include <rtems/rtems/eventimpl.h> instead." +#endif + #ifdef __cplusplus extern "C" { #endif -#include <rtems/rtems/event.h> #include <rtems/score/mppkt.h> #include <rtems/score/object.h> #include <rtems/score/thread.h> diff --git a/cpukit/rtems/include/rtems/rtems/eventset.h b/cpukit/rtems/include/rtems/rtems/eventset.h deleted file mode 100644 index 4d2bff8a89..0000000000 --- a/cpukit/rtems/include/rtems/rtems/eventset.h +++ /dev/null @@ -1,146 +0,0 @@ -/** - * @file rtems/rtems/eventset.h - * - * @defgroup ClassicEventSet Event Set - * - * @ingroup ClassicRTEMS - * @brief Event Sets Handler - * - * 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-2008. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.com/license/LICENSE. - */ - -#ifndef _RTEMS_RTEMS_EVENTSET_H -#define _RTEMS_RTEMS_EVENTSET_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup ClassicEventSet Event Set - * - * @ingroup ClassicEvent - * - * @{ - */ - -/** - * @brief Integer type to hold an event set of up to 32 events represented as - * a bit field. - */ -typedef uint32_t rtems_event_set; - -/** - * @brief Constant used to send or receive all events. - */ -#define RTEMS_ALL_EVENTS 0xFFFFFFFF - -/** @brief Defines the bit in the event set associated with event 0. */ -#define RTEMS_EVENT_0 0x00000001 -/** @brief Defines the bit in the event set associated with event 1. */ -#define RTEMS_EVENT_1 0x00000002 -/** @brief Defines the bit in the event set associated with event 2. */ -#define RTEMS_EVENT_2 0x00000004 -/** @brief Defines the bit in the event set associated with event 3. */ -#define RTEMS_EVENT_3 0x00000008 -/** @brief Defines the bit in the event set associated with event 4. */ -#define RTEMS_EVENT_4 0x00000010 -/** @brief Defines the bit in the event set associated with event 5. */ -#define RTEMS_EVENT_5 0x00000020 -/** @brief Defines the bit in the event set associated with event 6. */ -#define RTEMS_EVENT_6 0x00000040 -/** @brief Defines the bit in the event set associated with event 7. */ -#define RTEMS_EVENT_7 0x00000080 -/** @brief Defines the bit in the event set associated with event 8. */ -#define RTEMS_EVENT_8 0x00000100 -/** @brief Defines the bit in the event set associated with event 9. */ -#define RTEMS_EVENT_9 0x00000200 -/** @brief Defines the bit in the event set associated with event 10. */ -#define RTEMS_EVENT_10 0x00000400 -/** @brief Defines the bit in the event set associated with event 11. */ -#define RTEMS_EVENT_11 0x00000800 -/** @brief Defines the bit in the event set associated with event 12. */ -#define RTEMS_EVENT_12 0x00001000 -/** @brief Defines the bit in the event set associated with event 13. */ -#define RTEMS_EVENT_13 0x00002000 -/** @brief Defines the bit in the event set associated with event 14. */ -#define RTEMS_EVENT_14 0x00004000 -/** @brief Defines the bit in the event set associated with event 15. */ -#define RTEMS_EVENT_15 0x00008000 -/** @brief Defines the bit in the event set associated with event 16. */ -#define RTEMS_EVENT_16 0x00010000 -/** @brief Defines the bit in the event set associated with event 17. */ -#define RTEMS_EVENT_17 0x00020000 -/** @brief Defines the bit in the event set associated with event 18. */ -#define RTEMS_EVENT_18 0x00040000 -/** @brief Defines the bit in the event set associated with event 19. */ -#define RTEMS_EVENT_19 0x00080000 -/** @brief Defines the bit in the event set associated with event 20. */ -#define RTEMS_EVENT_20 0x00100000 -/** @brief Defines the bit in the event set associated with event 21. */ -#define RTEMS_EVENT_21 0x00200000 -/** @brief Defines the bit in the event set associated with event 22. */ -#define RTEMS_EVENT_22 0x00400000 -/** @brief Defines the bit in the event set associated with event 23. */ -#define RTEMS_EVENT_23 0x00800000 -/** @brief Defines the bit in the event set associated with event 24. */ -#define RTEMS_EVENT_24 0x01000000 -/** @brief Defines the bit in the event set associated with event 25. */ -#define RTEMS_EVENT_25 0x02000000 -/** @brief Defines the bit in the event set associated with event 26. */ -#define RTEMS_EVENT_26 0x04000000 -/** @brief Defines the bit in the event set associated with event 27. */ -#define RTEMS_EVENT_27 0x08000000 -/** @brief Defines the bit in the event set associated with event 29. */ -#define RTEMS_EVENT_28 0x10000000 -/** @brief Defines the bit in the event set associated with event 29. */ -#define RTEMS_EVENT_29 0x20000000 -/** @brief Defines the bit in the event set associated with event 30. */ -#define RTEMS_EVENT_30 0x40000000 -/** @brief Defines the bit in the event set associated with event 31. */ -#define RTEMS_EVENT_31 0x80000000 - -/** @} */ - -/** - * @brief Constant used to receive the set of currently pending events in - * rtems_event_receive(). - * - * @ingroup ClassicEvent - */ -#define RTEMS_PENDING_EVENTS 0 - -/** - * @addtogroup ScoreEvent - * - * @{ - */ - -/** - * The following constant is the value of an event set which - * has no events pending. - */ -#define EVENT_SETS_NONE_PENDING 0 - -/** @} */ - -#ifndef __RTEMS_APPLICATION__ -#include <rtems/rtems/eventset.inl> -#endif - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ |