summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2006-11-17 23:04:31 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2006-11-17 23:04:31 +0000
commit0c2a6a12c0345289480364166901a27f4bcd4618 (patch)
tree159b2be21f4ad1c3a5585716a314253f697d9f7a
parent2006-11-17 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-0c2a6a12c0345289480364166901a27f4bcd4618.tar.bz2
2006-11-17 Joel Sherrill <joel@OARcorp.com>
* psxsem01/init.c: Account for change in POSIX semaphore time handling. Previously the timeout was not absolute time and checked BEFORE attempting to lock semaphore.
-rw-r--r--testsuites/psxtests/ChangeLog6
-rw-r--r--testsuites/psxtests/psxsem01/init.c15
2 files changed, 19 insertions, 2 deletions
diff --git a/testsuites/psxtests/ChangeLog b/testsuites/psxtests/ChangeLog
index 1bf6f6bf8e..2dd6c40ec8 100644
--- a/testsuites/psxtests/ChangeLog
+++ b/testsuites/psxtests/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-17 Joel Sherrill <joel@OARcorp.com>
+
+ * psxsem01/init.c: Account for change in POSIX semaphore time handling.
+ Previously the timeout was not absolute time and checked BEFORE
+ attempting to lock semaphore.
+
2006-11-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* psxbarrier01/main.c: New file.
diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c
index 71b48e372f..3d8b43f97a 100644
--- a/testsuites/psxtests/psxsem01/init.c
+++ b/testsuites/psxtests/psxsem01/init.c
@@ -61,6 +61,7 @@ void *POSIX_Init(
puts( "Init: sem_wait - SUCCESSFUL" );
status = sem_wait(&sems[1]);
fatal_posix_service_status( status, 0, "sem_wait semaphore 1");
+ /* sem[1].count = 0 */
puts( "Init: sem_wait - UNSUCCESSFUL (EINVAL)" );
status = sem_wait(&sem2);
@@ -70,33 +71,43 @@ void *POSIX_Init(
puts( "Init: sem_post - SUCCESSFUL" );
status = sem_post(&sems[1]);
fatal_posix_service_status( status, 0, "sem_post semaphore 1");
+ /* sem[1].count = 1 */
puts( "Init: sem_wait - SUCCESSFUL (after a sem_post)" );
status = sem_wait(&sems[1]);
fatal_posix_service_status( status, 0, "sem_wait semaphore 1");
+ /* sem[1].count = 0 */
puts( "Init: sem_trywait - SUCCESSFUL" );
status = sem_trywait(&sems[2]);
fatal_posix_service_status( status, 0, "sem_trywait semaphore 2");
+ /* sem[2].count = 1 */
puts( "Init: sem_trywait - UNSUCCESSFUL (EAGAIN)" );
status = sem_trywait(&sems[1]);
fatal_posix_service_status( status, -1, "sem_trywait error return status");
fatal_posix_service_status( errno, EAGAIN, "sem_trywait errno EAGAIN");
+ /* sem[1].count = 0 */
puts( "Init: sem_trywait - UNSUCCESSFUL (EINVAL)" );
status = sem_trywait(&sem2);
fatal_posix_service_status( status, -1, "sem_trywait error return status");
fatal_posix_service_status( errno, EINVAL, "sem_trywait errno EINVAL");
+#if 0
status = sem_post(&sems[2]);
fatal_posix_service_status( status, 0, "sem_post semaphore 2");
+ /* sem[2].count = 2 */
+#else
+ /* sem[2].count = 1 */
+#endif
puts( "Init: sem_timedwait - SUCCESSFUL" );
- waittime.tv_sec = 0;
+ waittime.tv_sec = time(NULL) + 1;
waittime.tv_nsec = 100;
status = sem_timedwait(&sems[2], &waittime);
fatal_posix_service_status( status, 0, "sem_timedwait semaphore 2");
+ /* sem[2].count = 0 */
puts( "Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)" );
status = sem_timedwait(&sems[2], &waittime);
@@ -105,7 +116,7 @@ void *POSIX_Init(
puts( "Init: sem_timedwait - UNSUCCESSFUL (EINVAL)" );
waittime.tv_sec = 0;
- waittime.tv_nsec = 0x40000000;
+ waittime.tv_nsec = 0x7FFFFFFF;
status = sem_timedwait(&sems[2], &waittime);
fatal_posix_service_status( status, -1, "sem_timedwait error return status");
fatal_posix_service_status( errno, EINVAL, "sem_init errno EINVAL");