diff options
Diffstat (limited to 'cpukit/posix/src/testcancel.c')
-rw-r--r-- | cpukit/posix/src/testcancel.c | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/cpukit/posix/src/testcancel.c b/cpukit/posix/src/testcancel.c index c78f26a62b..f50c7782ed 100644 --- a/cpukit/posix/src/testcancel.c +++ b/cpukit/posix/src/testcancel.c @@ -9,6 +9,8 @@ * COPYRIGHT (c) 1989-2008. * On-Line Applications Research Corporation (OAR). * + * Copyright (c) 2016 embedded brains GmbH. + * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.org/license/LICENSE. @@ -19,16 +21,9 @@ #endif #include <pthread.h> -#include <errno.h> -#include <rtems/system.h> -#include <rtems/score/chain.h> #include <rtems/score/isr.h> -#include <rtems/score/thread.h> -#include <rtems/score/wkspace.h> -#include <rtems/posix/cancel.h> -#include <rtems/posix/pthreadimpl.h> -#include <rtems/posix/threadsup.h> +#include <rtems/score/threadimpl.h> /* * 18.2.2 Setting Cancelability State, P1003.1c/Draft 10, p. 183 @@ -36,28 +31,9 @@ void pthread_testcancel( void ) { - POSIX_API_Control *thread_support; - Thread_Control *executing; - bool cancel = false; - - /* - * Don't even think about deleting a resource from an ISR. - * Besides this request is supposed to be for _Thread_Executing - * and the ISR context is not a thread. - */ - - if ( _ISR_Is_in_progress() ) + if ( _ISR_Is_in_progress() ) { return; + } - _Thread_Disable_dispatch(); - executing = _Thread_Executing; - thread_support = executing->API_Extensions[ THREAD_API_POSIX ]; - - if ( thread_support->cancelability_state == PTHREAD_CANCEL_ENABLE && - thread_support->cancelation_requested ) - cancel = true; - _Thread_Enable_dispatch(); - - if ( cancel ) - _POSIX_Thread_Exit( executing, PTHREAD_CANCELED ); + _Thread_Change_life( 0, 0, THREAD_LIFE_CHANGE_DEFERRED ); } |