diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-03-04 08:02:19 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-03-05 11:36:45 +0100 |
commit | 7d6e94b12ab94f13d3e769702d50f91be7d5884b (patch) | |
tree | 2e2db2c1bb80c1f287f2c4c25f819ffa8b958704 /cpukit/rtems/include/rtems/rtems/eventimpl.h | |
parent | score: Add thread wait flags (diff) | |
download | rtems-7d6e94b12ab94f13d3e769702d50f91be7d5884b.tar.bz2 |
score: Implement fine-grained locking for events
Use the ISR lock of the thread object to protect the event state and
use the Giant lock only for the blocking operations.
Update #2273.
Diffstat (limited to 'cpukit/rtems/include/rtems/rtems/eventimpl.h')
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/eventimpl.h | 49 |
1 files changed, 14 insertions, 35 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/eventimpl.h b/cpukit/rtems/include/rtems/rtems/eventimpl.h index 60b6b51c62..460b7ce90d 100644 --- a/cpukit/rtems/include/rtems/rtems/eventimpl.h +++ b/cpukit/rtems/include/rtems/rtems/eventimpl.h @@ -33,16 +33,6 @@ extern "C" { */ /** - * 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. */ @@ -54,10 +44,6 @@ extern "C" { */ #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 * @@ -71,30 +57,23 @@ RTEMS_EVENT_EXTERN Thread_blocking_operation_States _System_event_Sync_state; 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 + rtems_event_set event_in, + rtems_option option_set, + rtems_interval ticks, + rtems_event_set *event_out, + Thread_Control *executing, + Event_Control *event, + Thread_Wait_flags wait_class, + States_Control block_state, + ISR_lock_Context *lock_context ); -/** - * @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 + Thread_Control *the_thread, + rtems_event_set event_in, + Event_Control *event, + Thread_Wait_flags wait_class, + ISR_lock_Context *lock_context ); /** |