diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-03-28 13:44:18 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-03 11:13:25 +0200 |
commit | 3f5f2ce22903c1e1f15fee75938b34987d894916 (patch) | |
tree | b241a719942581e9e15226b380d027ae18f51b4d /testsuites/sptests/spsem02/init.c | |
parent | score: Move __log2table to separate file (diff) | |
download | rtems-3f5f2ce22903c1e1f15fee75938b34987d894916.tar.bz2 |
score: PR788: Add INTERNAL_ERROR_RESOURCE_IN_USE
Issue a fatal error in case a thread is deleted which still owns
resources (e.g. a binary semaphore with priority inheritance or ceiling
protocol). The resource count must be checked quite late since RTEMS
task variable destructors, POSIX key destructors, POSIX cleanup handler,
the Newlib thread termination extension or other thread termination
extensions may release resources. In this context it would be quite
difficult to return an error status to the caller.
An alternative would be to place threads with a non-zero resource count
not on the zombie chain. Thus we have a resource leak instead of a
fatal error. The terminator thread can see this error if we return an
RTEMS_RESOURCE_IN_USE status for the rtems_task_delete() for example.
Diffstat (limited to 'testsuites/sptests/spsem02/init.c')
-rw-r--r-- | testsuites/sptests/spsem02/init.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/testsuites/sptests/spsem02/init.c b/testsuites/sptests/spsem02/init.c index c88e9adffb..d5fb47b255 100644 --- a/testsuites/sptests/spsem02/init.c +++ b/testsuites/sptests/spsem02/init.c @@ -168,9 +168,9 @@ rtems_task Task02(rtems_task_argument ignored) directive_failed( status, " rtems_semaphore_obtain S1"); printf("TA02: priority %d, holding S1\n", getprio()); - printf("TA02: exiting\n"); - status = rtems_task_delete( RTEMS_SELF); - directive_failed( status, "rtems_task_delete TA02"); + printf("TA02: suspending\n"); + status = rtems_task_suspend( RTEMS_SELF); + directive_failed( status, "rtems_task_suspend TA02"); } /* Task03 starts with priority 32 */ |