From cc366ec8c9ecaab838a745175a0d53a7a5db437e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 24 Apr 2015 12:02:20 +0200 Subject: score: New thread queue implementation Use thread wait flags for synchronization. The enqueue operation is now part of the initial critical section. This is the key change and enables fine grained locking on SMP for objects using a thread queue like semaphores and message queues. Update #2273. --- cpukit/score/src/threadtimeout.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'cpukit/score/src/threadtimeout.c') diff --git a/cpukit/score/src/threadtimeout.c b/cpukit/score/src/threadtimeout.c index 300beb5219..f69bc35ea2 100644 --- a/cpukit/score/src/threadtimeout.c +++ b/cpukit/score/src/threadtimeout.c @@ -76,5 +76,11 @@ void _Thread_Timeout( Objects_Id id, void *arg ) if ( unblock ) { _Thread_Unblock( the_thread ); + +#if defined(RTEMS_MULTIPROCESSING) + if ( !_Objects_Is_local_id( the_thread->Object.id ) ) { + _Thread_MP_Free_proxy( the_thread ); + } +#endif } } -- cgit v1.2.3