summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-14 01:10:23 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-14 01:10:23 +0000
commit146301d36b24674457d8243a6b20b9ebe44919bc (patch)
tree0609d000b84ab1a2c020659ae6f915c9bddc2a06 /testsuites
parent2009-08-13 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-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')
-rw-r--r--testsuites/sptests/ChangeLog7
-rw-r--r--testsuites/sptests/sp65/init.c51
-rw-r--r--testsuites/sptests/sp65/sp65.doc8
-rw-r--r--testsuites/sptests/sp65/sp65.scn8
4 files changed, 65 insertions, 9 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog
index 50091e88e0..a65e626c68 100644
--- a/testsuites/sptests/ChangeLog
+++ b/testsuites/sptests/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2009-08-12 Joel Sherrill <joel.sherrill@oarcorp.com>
* sp02/task1.c, sp02/task2.c, sp02/task3.c, sp03/task2.c, sp05/task1.c,
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 ***