diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-11-17 23:04:38 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2006-11-17 23:04:38 +0000 |
commit | 91cee2ef87ae57102a297006061afa63b6671cca (patch) | |
tree | 6fddcdb56972ea719a5962d6acb6d43f5efebdd2 /testsuites/psxtests/psxsem01/init.c | |
parent | 2006-11-17 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-91cee2ef87ae57102a297006061afa63b6671cca.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.
Diffstat (limited to '')
-rw-r--r-- | testsuites/psxtests/psxsem01/init.c | 15 |
1 files changed, 13 insertions, 2 deletions
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"); |