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 | |
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')
-rw-r--r-- | testsuites/sptests/sp65/init.c | 51 | ||||
-rw-r--r-- | testsuites/sptests/sp65/sp65.doc | 8 | ||||
-rw-r--r-- | testsuites/sptests/sp65/sp65.scn | 8 |
3 files changed, 58 insertions, 9 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 diff --git a/testsuites/sptests/sp65/sp65.doc b/testsuites/sptests/sp65/sp65.doc index d6390f914d..711601bddc 100644 --- a/testsuites/sptests/sp65/sp65.doc +++ b/testsuites/sptests/sp65/sp65.doc @@ -15,10 +15,10 @@ test set name: sp65 directives: - rtems_region_create - really _Objects_Extend_information when unlimited extension fails + rtems_semaphore_create + rtems_semaphore_obtain concepts: -+ Ensure that being unable to allocate memory when extending an object class - works as expected. ++ Verify that obtaining a priority ceiling mutex when the calling task's + priority is the same as the priority ceiling is handled correctly. diff --git a/testsuites/sptests/sp65/sp65.scn b/testsuites/sptests/sp65/sp65.scn index e69de29bb2..18e5a20df0 100644 --- a/testsuites/sptests/sp65/sp65.scn +++ b/testsuites/sptests/sp65/sp65.scn @@ -0,0 +1,8 @@ +*** TEST 65 *** +Creating semaphore +Calling rtems_semaphore_obtain +Calling rtems_task_create +Calling rtems_task_start +Init Task_1: Obtaining semaphore +Calling semaphore release +*** END OF TEST 65 *** |