diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-08-14 01:10:23 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-08-14 01:10:23 +0000 |
commit | 146301d36b24674457d8243a6b20b9ebe44919bc (patch) | |
tree | 0609d000b84ab1a2c020659ae6f915c9bddc2a06 /testsuites/sptests/sp65/init.c | |
parent | 2009-08-13 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-146301d36b24674457d8243a6b20b9ebe44919bc.tar.bz2 |
2009-08-13 Santosh G Vattam <vattam.santosh@gmail.com>
* sp65/init.c, sp65/sp65.doc, sp65/sp65.scn: Add new test case to
verify that obtaining a priority ceiling mutex when the calling
task's priority is the same as the priority ceiling is handled
correctly.
Diffstat (limited to 'testsuites/sptests/sp65/init.c')
-rw-r--r-- | testsuites/sptests/sp65/init.c | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/testsuites/sptests/sp65/init.c b/testsuites/sptests/sp65/init.c index fbe7020331..6ce8632032 100644 --- a/testsuites/sptests/sp65/init.c +++ b/testsuites/sptests/sp65/init.c @@ -11,8 +11,8 @@ #include <tmacros.h> -void* Task_1( - void *argument +rtems_task Task_1( + rtems_task_argument arg ); rtems_task Init( @@ -20,7 +20,7 @@ rtems_task Init( ) { int status, ceiling, old_ceiling; - rtems_id Mutex_id; + rtems_id Mutex_id, Task_id; puts( "\n\n*** TEST 65 ***" ); @@ -28,6 +28,8 @@ rtems_task Init( * Create binary semaphore (a.k.a. Mutex) with Priority Ceiling * attribute. */ + + puts( "Creating semaphore" ); status = rtems_semaphore_create( rtems_build_name( 's','e','m','1' ), 1, @@ -37,17 +39,56 @@ rtems_task Init( ); directive_failed( status, "rtems_semaphore_create" ); + puts( "Calling rtems_semaphore_obtain" ); + status = rtems_semaphore_obtain( Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 ); + directive_failed( status, "rtems_semaphore_obtain" ); + + puts( "Calling rtems_task_create" ); + status = rtems_task_create( rtems_build_name( 'T', 'A', 'S', '1' ), + 1, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Task_id + ); + directive_failed( status, "rtems_task_create" ); + + puts( "Calling rtems_task_start" ); + status = rtems_task_start( Task_id, Task_1, (rtems_task_argument)&Mutex_id ); + directive_failed( status, "rtems_task_start" ); + + sleep(1); + + puts( "Calling semaphore release" ); + status = rtems_semaphore_release( Mutex_id ); + directive_failed( status, "rtems_semaphore_release" ); + + puts( "*** END OF TEST 65 ***" ); rtems_test_exit(0); } +rtems_task Task_1( + rtems_task_argument arg +) +{ + int status_in_task; + rtems_id *Mutex_id = (rtems_id *)arg; + + puts( "Init Task_1: Obtaining semaphore" ); + status_in_task = rtems_semaphore_obtain( *Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 ); + printf( "status_in_task:%d\n", status_in_task ); + directive_failed( status_in_task, "Task_1 rtems_semaphore_obtain" ); + return; +} + /* configuration information */ #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER -#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_TASKS 2 #define CONFIGURE_MAXIMUM_SEMAPHORES 1 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE |