2008-07-18 Joel Sherrill <joel.sherrill@oarcorp.com>

PR 1291/cpukit
	* psx05/init.c, psxmsgq01/init.c: As part of addressing timeouts and
	POSIX services taking relative instead of absolute time for timeouts,
	these tests were updated.
This commit is contained in:
Joel Sherrill
2008-07-18 18:47:30 +00:00
parent acb4bed0e9
commit f5119be40a
3 changed files with 50 additions and 26 deletions

View File

@@ -1,5 +1,5 @@
/*
* COPYRIGHT (c) 1989-1999.
* COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -72,6 +72,27 @@ void Print_mutexattr(
}
}
void calculate_abstimeout(
struct timespec *times,
uint32_t seconds,
uint32_t nanoseconds
)
{
struct timeval tv1;
struct timezone tz1;
gettimeofday( &tv1, &tz1 );
times->tv_sec = seconds + tv1.tv_sec;
times->tv_nsec = nanoseconds + (tv1.tv_usec * 1000);
while ( times->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
times->tv_sec++;
times->tv_nsec - TOD_NANOSECONDS_PER_SECOND;
}
}
void *POSIX_Init(
void *argument
)
@@ -343,13 +364,13 @@ void *POSIX_Init(
printf( "status = %d\n", status );
assert( status == EPERM );
times.tv_sec = 0;
times.tv_nsec = 500000000;
puts( "Init: pthread_mutex_timedlock - time out in 1/2 second" );
calculate_abstimeout( &times, 0, (TOD_NANOSECONDS_PER_SECOND / 2) );
status = pthread_mutex_timedlock( &Mutex_id, &times );
if ( status != EAGAIN )
if ( status != ETIMEDOUT )
printf( "status = %d\n", status );
assert( status == EAGAIN );
assert( status == ETIMEDOUT );
/* switch to idle */