diff options
Diffstat (limited to 'testsuites/sptests/sp36/strict_order_mut.c')
-rw-r--r-- | testsuites/sptests/sp36/strict_order_mut.c | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/testsuites/sptests/sp36/strict_order_mut.c b/testsuites/sptests/sp36/strict_order_mut.c deleted file mode 100644 index 7720837ba2..0000000000 --- a/testsuites/sptests/sp36/strict_order_mut.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Simple test program to demonstrate strict order mutex - * - * $Id$ - */ - -#define CONFIGURE_INIT - -#include <bsp.h> -#include <stdio.h> -#include "tmacros.h" -#include <rtems/score/coremutex.h> - -#define BACK_TYPE(_type_in_ptr,_type_out,_type_in_name) \ - ((_type_out *)((unsigned int)_type_in_ptr - (unsigned int)(&((_type_out *)0)->_type_in_name))) - - -/* configuration information */ - -#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER - -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE - -#define CONFIGURE_EXTRA_TASK_STACKS (RTEMS_MINIMUM_STACK_SIZE * 3) - -#define CONFIGURE_MAXIMUM_TASKS 10 -#define CONFIGURE_MAXIMUM_SEMAPHORES 10 - - -void p_mutex_chain(Thread_Control *the_thread); -rtems_task Task0(rtems_task_argument ignored); -rtems_task Task1(rtems_task_argument ignored); -rtems_task Init(rtems_task_argument ignored); -rtems_task_priority Get_current_pri(void); - - -#include <rtems/confdefs.h> - - - -rtems_id Task_id[4]; -rtems_name Task_name[4]; - -rtems_id Mutex_id[4]; -rtems_name Mutex_name[4]; - -rtems_task Init(rtems_task_argument ignored) -{ - rtems_status_code status; - printf("\n----------------TEST 36 ------------\n"); - - Mutex_name[0] = rtems_build_name( 'S','0',' ',' '); - status = rtems_semaphore_create( - Mutex_name[0], - 1, - RTEMS_LOCAL| - RTEMS_SIMPLE_BINARY_SEMAPHORE| - RTEMS_PRIORITY, - 0, - &Mutex_id[0]); - directive_failed( status, "rtems_semaphore_create of S0"); - printf("Create S0, Inherit_priority\n"); - - Mutex_name[1] = rtems_build_name( 'S','1',' ',' '); - status = rtems_semaphore_create( - Mutex_name[1], - 1, - RTEMS_LOCAL| - RTEMS_SIMPLE_BINARY_SEMAPHORE| - RTEMS_PRIORITY, - 1, - &Mutex_id[1]); - directive_failed( status, "rtems_semaphore_create of S1"); - printf("Create S1, Priority_celling is 1\n"); - - Mutex_name[2] = rtems_build_name( 'S','Y','N','C'); - - - Task_name[0] = rtems_build_name( 'T','0',' ',' '); - status = rtems_task_create( - Task_name[0], - 4, - RTEMS_MINIMUM_STACK_SIZE *2, - RTEMS_DEFAULT_MODES, - RTEMS_DEFAULT_ATTRIBUTES, - &Task_id[0] - ); - directive_failed( status,"rtems_task_create of T0"); - printf("Create T0,priority is 4\n"); - - - - status = rtems_task_start( Task_id[0],Task0, 0); - directive_failed( status,"rtems_task_start of T0"); - - status = rtems_task_delete( RTEMS_SELF); - directive_failed( status,"rtems_task_delete of INIT"); -} - - -rtems_task Task0(rtems_task_argument ignored) -{ - rtems_status_code status; - - - status = rtems_semaphore_obtain( - Mutex_id[0], - RTEMS_WAIT, - 0); - printf("T0 rtems_semaphore_obtain - S0\n"); - directive_failed( status,"rtems_semaphore_obtain of S0\n"); - printf("The current priority of T0 is %d\n",Get_current_pri()); - - status = rtems_semaphore_obtain( - Mutex_id[1], - RTEMS_WAIT, - 0); - printf("T0 rtems_semaphore_obtain - S1\n"); - directive_failed( status,"rtems_semaphore_obtain of S1"); - printf("The current priority of T0 is %d\n",Get_current_pri()); - -#ifdef __RTEMS_STRICT_ORDER_MUTEX__ - status = rtems_semaphore_release( Mutex_id[0] ); - printf("T0 - rtems_semaphore_release - S0\n"); - if(status == CORE_MUTEX_RELEASE_NOT_ORDER) - printf("T0 releasing S0 not in order\n"); -#endif - - status = rtems_semaphore_release(Mutex_id[1]); - printf("T0 - rtems_semaphore_release - S1\n"); - directive_failed( status,"rtems_semaphore_release of S1\n"); - printf("The current priority of T0 is %d\n",Get_current_pri()); - - - Task_name[1] = rtems_build_name( 'T','1',' ',' '); - status = rtems_task_create( - Task_name[1], - 1, - RTEMS_MINIMUM_STACK_SIZE *2, - RTEMS_DEFAULT_MODES, - RTEMS_DEFAULT_ATTRIBUTES, - &Task_id[1] - ); - directive_failed( status , "rtems_task_create of T1\n"); - printf("Create S1,priority is 1\n"); - - - status = rtems_task_start( Task_id[1],Task1, 0); - directive_failed( status, "rtems_task_start of T1\n"); - - printf("The current priority of T0 is %d\n",Get_current_pri()); - - status = rtems_semaphore_release(Mutex_id[0]); - printf("T0 - rtems_semaphore_release - S0\n"); - directive_failed( status, "rtems_semaphore_release of S0\n"); - -} - - -rtems_task Task1(rtems_task_argument ignored) -{ - - rtems_status_code status; - status = rtems_semaphore_obtain( - Mutex_id[0], - RTEMS_WAIT, - 0); - printf("T1 - rtems_semaphore_obtain - S0"); - directive_failed( status," rtems_semaphore_obtain S0"); -} - - -rtems_task_priority Get_current_pri(void) -{ - rtems_status_code status; - rtems_task_priority pri; - status = rtems_task_set_priority(RTEMS_SELF, - RTEMS_CURRENT_PRIORITY, - &pri); - directive_failed( status, " rtems_task_set_priority "); - return pri; -} - -/*void p_mutex_chain(Thread_Control *the_thread) -{ - Chain_Control *con = &the_thread->lock_mutex; - Chain_Node * node = con->first; - CORE_mutex_Control * p_mutex ; - - if(!_Chain_Is_empty(&the_thread->lock_mutex)){ - while(node != _Chain_Tail(con)){ - p_mutex = BACK_TYPE(node,CORE_mutex_Control,queue); - printf("node:Id=%p,priority_before=%d," - "holder_id=%d,holder's current priority=%d\n",node, - ((CORE_mutex_order_list *)node)->priority_before,p_mutex->holder_id,p_mutex->holder->current_priority); - node = node->next; - } - } - else - printf("the Chain is empty\n"); -} -*/ |