score: Add and use _Objects_Put()

Add and use _Objects_Put_without_thread_dispatch().  These two functions
pair with the _Objects_Get() function.  This helps to introduce object
specific SMP locks to avoid lock contention.
This commit is contained in:
Sebastian Huber
2013-06-05 11:48:57 +02:00
parent 54e9216a0e
commit 2d2352bab9
114 changed files with 252 additions and 208 deletions

View File

@@ -74,14 +74,16 @@ static rtems_id pipe_semaphore = RTEMS_ID_NONE;
/* Set barriers to be interruptible by signals. */
static void pipe_interruptible(pipe_control_t *pipe)
{
Objects_Locations location;
Objects_Locations location;
Barrier_Control *the_barrier;
_Barrier_Get(pipe->readBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
_Barrier_Get(pipe->writeBarrier, &location)->Barrier.Wait_queue.state
|= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Thread_Enable_dispatch();
the_barrier = _Barrier_Get(pipe->readBarrier, &location);
the_barrier->Barrier.Wait_queue.state |= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Objects_Put( &the_barrier->Object );
the_barrier = _Barrier_Get(pipe->writeBarrier, &location);
the_barrier->Barrier.Wait_queue.state |= STATES_INTERRUPTIBLE_BY_SIGNAL;
_Objects_Put( &the_barrier->Object );
}
#endif