From ed24ed4e0ad3494bfa4d070c52fb2c24fb0fb784 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 8 Feb 2018 10:47:16 +0100 Subject: Use _Thread_Dispatch_direct() Use _Thread_Dispatch_direct() for operations that block the executing thread. This ensures that we get a fatal error (INTERNAL_ERROR_BAD_THREAD_DISPATCH_DISABLE_LEVEL) if we try to block in an invalid context, e.g. during system start or an interrupt handler. --- cpukit/posix/src/pthreadexit.c | 2 +- cpukit/posix/src/pthreadjoin.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'cpukit/posix') diff --git a/cpukit/posix/src/pthreadexit.c b/cpukit/posix/src/pthreadexit.c index 53c42ff3d0..1d041bfe98 100644 --- a/cpukit/posix/src/pthreadexit.c +++ b/cpukit/posix/src/pthreadexit.c @@ -34,6 +34,6 @@ void pthread_exit( void *value_ptr ) _Thread_Exit( executing, THREAD_LIFE_TERMINATING, value_ptr ); - _Thread_Dispatch_enable( cpu_self ); + _Thread_Dispatch_direct( cpu_self ); RTEMS_UNREACHABLE(); } diff --git a/cpukit/posix/src/pthreadjoin.c b/cpukit/posix/src/pthreadjoin.c index ce4bf0d049..3fc52d7c1f 100644 --- a/cpukit/posix/src/pthreadjoin.c +++ b/cpukit/posix/src/pthreadjoin.c @@ -72,7 +72,7 @@ static int _POSIX_Threads_Join( pthread_t thread, void **value_ptr ) &queue_context.Lock_context.Lock_context ); _Thread_State_release( the_thread, &queue_context.Lock_context.Lock_context ); - _Thread_Dispatch_enable( cpu_self ); + _Thread_Dispatch_direct( cpu_self ); } else { _Thread_Join( the_thread, -- cgit v1.2.3