diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-10-30 16:18:36 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-10-30 18:00:33 +0100 |
commit | 990575c57f82b8b8ad5c2b8abc53796830fee59a (patch) | |
tree | 70f48369e6882c4ca231534e4143b80d2994cef5 /cpukit/rtems/include/rtems | |
parent | rtems: Remove unused event_condition member (diff) | |
download | rtems-990575c57f82b8b8ad5c2b8abc53796830fee59a.tar.bz2 |
rtems: Reusable event implementation
Change event implementation to enable reuse for system events.
Diffstat (limited to 'cpukit/rtems/include/rtems')
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/event.h | 62 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/tasks.h | 6 |
2 files changed, 24 insertions, 44 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/event.h b/cpukit/rtems/include/rtems/rtems/event.h index 5280c94750..381b328de2 100644 --- a/cpukit/rtems/include/rtems/rtems/event.h +++ b/cpukit/rtems/include/rtems/rtems/event.h @@ -214,63 +214,43 @@ rtems_status_code rtems_event_receive ( * @{ */ +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 - * - * This routine performs the initialization necessary for this manager. - */ void _Event_Manager_initialization( void ); -/** - * @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, - * then the procedure returns immediately. If neither of these - * 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, - rtems_interval ticks, - rtems_event_set *event_out +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 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 +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 Event_Timeout - * - * This routine is invoked when a task's event receive request - * has not been satisfied after the specified timeout interval. - * The task represented by ID will be unblocked and its status - * code will be set in it's control block to indicate that a timeout - * has occurred. - */ -void _Event_Timeout ( +void _Event_Timeout( Objects_Id id, void *ignored ); -/** - * @brief he following defines the synchronization flag used by the - */ -RTEMS_EVENT_EXTERN volatile Thread_blocking_operation_States _Event_Sync_state; +RTEMS_EVENT_EXTERN Thread_blocking_operation_States _Event_Sync_state; /** @} */ diff --git a/cpukit/rtems/include/rtems/rtems/tasks.h b/cpukit/rtems/include/rtems/rtems/tasks.h index 2bd7236a80..d11e0bc522 100644 --- a/cpukit/rtems/include/rtems/rtems/tasks.h +++ b/cpukit/rtems/include/rtems/rtems/tasks.h @@ -38,7 +38,7 @@ #include <rtems/score/states.h> #include <rtems/score/thread.h> #include <rtems/rtems/types.h> -#include <rtems/rtems/eventset.h> +#include <rtems/rtems/event.h> #include <rtems/rtems/asr.h> #include <rtems/rtems/attr.h> #include <rtems/rtems/status.h> @@ -210,8 +210,8 @@ typedef struct { * notespads are disabled by the application configuration. */ typedef struct { - /** This field contains the pending events for this task. */ - rtems_event_set pending_events; + /** This field contains the event control for this task. */ + Event_Control Event; /** This field contains the Classic API Signal information for this task. */ ASR_Information Signal; /** |