mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-21 17:36:15 +08:00
2009-12-08 Joel Sherrill <joel.sherrill@oarcorp.com>
* include/pmacros.h, psx01/task.c, psx02/init.c, psx02/task.c, psx03/init.c, psx03/task.c, psx04/init.c, psx04/task1.c, psx04/task2.c, psx04/task3.c, psx05/init.c, psx05/task.c, psx05/task2.c, psx05/task3.c, psx06/init.c, psx06/task.c, psx06/task2.c, psx07/init.c, psx08/init.c, psx08/task2.c, psx08/task3.c, psx09/init.c, psx10/init.c, psx10/task.c, psx10/task2.c, psx10/task3.c, psx11/init.c, psx11/task.c, psx12/init.c, psxalarm01/init.c, psxbarrier01/test.c, psxcancel01/init.c, psxchroot01/test.c, psxclock/init.c, psxfile01/test.c, psxfile01/test_cat.c, psxfile01/test_extend.c, psxfile01/test_write.c, psxitimer/init.c, psxkey01/task.c, psxkey02/init.c, psxkey03/init.c, psxmount/test.c, psxmsgq01/init.c, psxmsgq03/init.c, psxmsgq04/init.c, psxreaddir/test.c, psxrwlock01/test.c, psxsem01/init.c, psxsignal01/init.c, psxsignal01/task1.c, psxsignal02/init.c, psxsignal03/init.c, psxsignal05/init.c, psxspin01/test.c, psxspin02/test.c, psxstack01/init.c, psxstat/test.c, psxtime/test.c, psxualarm/init.c: Use rtems_test_assert() consistently instead of system assert(). rtems_test_assert() is designed to integrate into the RTEMS test suite infrastructure.
This commit is contained in:
@@ -1,3 +1,26 @@
|
||||
2009-12-08 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* include/pmacros.h, psx01/task.c, psx02/init.c, psx02/task.c,
|
||||
psx03/init.c, psx03/task.c, psx04/init.c, psx04/task1.c,
|
||||
psx04/task2.c, psx04/task3.c, psx05/init.c, psx05/task.c,
|
||||
psx05/task2.c, psx05/task3.c, psx06/init.c, psx06/task.c,
|
||||
psx06/task2.c, psx07/init.c, psx08/init.c, psx08/task2.c,
|
||||
psx08/task3.c, psx09/init.c, psx10/init.c, psx10/task.c,
|
||||
psx10/task2.c, psx10/task3.c, psx11/init.c, psx11/task.c,
|
||||
psx12/init.c, psxalarm01/init.c, psxbarrier01/test.c,
|
||||
psxcancel01/init.c, psxchroot01/test.c, psxclock/init.c,
|
||||
psxfile01/test.c, psxfile01/test_cat.c, psxfile01/test_extend.c,
|
||||
psxfile01/test_write.c, psxitimer/init.c, psxkey01/task.c,
|
||||
psxkey02/init.c, psxkey03/init.c, psxmount/test.c, psxmsgq01/init.c,
|
||||
psxmsgq03/init.c, psxmsgq04/init.c, psxreaddir/test.c,
|
||||
psxrwlock01/test.c, psxsem01/init.c, psxsignal01/init.c,
|
||||
psxsignal01/task1.c, psxsignal02/init.c, psxsignal03/init.c,
|
||||
psxsignal05/init.c, psxspin01/test.c, psxspin02/test.c,
|
||||
psxstack01/init.c, psxstat/test.c, psxtime/test.c, psxualarm/init.c:
|
||||
Use rtems_test_assert() consistently instead of system assert().
|
||||
rtems_test_assert() is designed to integrate into the RTEMS test
|
||||
suite infrastructure.
|
||||
|
||||
2009-12-03 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* Makefile.am, configure.ac: New test to exercise getgrnam and getpwnam
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
/*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
@@ -9,7 +16,6 @@
|
||||
#include <bsp.h>
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
@@ -64,10 +70,10 @@
|
||||
\
|
||||
tv.tv_sec = mktime( &tm ); \
|
||||
tv.tv_nsec = 0; \
|
||||
assert( tv.tv_sec != -1 ); \
|
||||
rtems_test_assert( tv.tv_sec != -1 ); \
|
||||
\
|
||||
status = clock_settime( CLOCK_REALTIME, &tv ); \
|
||||
assert( !status ); \
|
||||
rtems_test_assert( !status ); \
|
||||
} while ( 0 )
|
||||
|
||||
#define print_current_time(s1, s2) \
|
||||
@@ -77,7 +83,7 @@
|
||||
struct timespec _tv; \
|
||||
\
|
||||
_status = clock_gettime( CLOCK_REALTIME, &_tv ); \
|
||||
assert( !_status ); \
|
||||
rtems_test_assert( !_status ); \
|
||||
\
|
||||
(void) ctime_r( &_tv.tv_sec, _time_buffer ); \
|
||||
_time_buffer[ strlen( _time_buffer ) - 1 ] = 0; \
|
||||
|
||||
@@ -37,7 +37,7 @@ void *Task_1_through_3(
|
||||
|
||||
puts( "Task_1: sched_yield to Init" );
|
||||
status = sched_yield();
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to Task_1 */
|
||||
|
||||
@@ -55,38 +55,38 @@ void *Task_1_through_3(
|
||||
status = pthread_equal( Task_id, Task_id );
|
||||
if ( status )
|
||||
puts( "Task_1: pthread_equal - match case passed" );
|
||||
assert( status );
|
||||
rtems_test_assert( status );
|
||||
|
||||
status = pthread_equal( Init_id, Task_id );
|
||||
if ( !status )
|
||||
puts( "Task_1: pthread_equal - different case passed" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: pthread_equal - first id bad" );
|
||||
status = pthread_equal( (pthread_t) -1, Task_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: pthread_equal - second id bad" );
|
||||
status = pthread_equal( Init_id, (pthread_t) -1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* exercise pthread_once */
|
||||
|
||||
puts( "Task_1: pthread_once - EINVAL (NULL once_control)" );
|
||||
status = pthread_once( NULL, Test_init_routine );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Task_1: pthread_once - EINVAL (NULL init_routine)" );
|
||||
status = pthread_once( &once, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Task_1: pthread_once - SUCCESSFUL (init_routine executes)" );
|
||||
status = pthread_once( &once, Test_init_routine );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: pthread_once - SUCCESSFUL (init_routine does not execute)" );
|
||||
status = pthread_once( &once, Test_init_routine );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "*** END OF POSIX TEST 1 ***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
@@ -56,7 +56,7 @@ void *POSIX_Init(
|
||||
/* install a signal handler */
|
||||
|
||||
status = sigemptyset( &act.sa_mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
act.sa_handler = Signal_handler;
|
||||
act.sa_flags = 0;
|
||||
@@ -69,43 +69,43 @@ void *POSIX_Init(
|
||||
Signal_occurred = 0;
|
||||
|
||||
status = pthread_kill( Init_id, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
Signal_occurred = 0;
|
||||
|
||||
/* now block the signal, send it, see if it is pending, and unblock it */
|
||||
|
||||
status = sigemptyset( &mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &mask, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Init: Block SIGUSR1\n" );
|
||||
status = sigprocmask( SIG_BLOCK, &mask, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigpending( &pending_set );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Init: Signals pending 0x%08x\n", (unsigned int) pending_set );
|
||||
|
||||
|
||||
printf( "Init: send SIGUSR1 to self\n" );
|
||||
status = pthread_kill( Init_id, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigpending( &pending_set );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Init: Signals pending 0x%08x\n", (unsigned int) pending_set );
|
||||
|
||||
printf( "Init: Unblock SIGUSR1\n" );
|
||||
status = sigprocmask( SIG_UNBLOCK, &mask, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a thread */
|
||||
|
||||
status = pthread_create( &Task_id, NULL, Task_1_through_3, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/*
|
||||
* Loop for 5 seconds seeing how many signals we catch
|
||||
@@ -122,10 +122,10 @@ void *POSIX_Init(
|
||||
status = nanosleep ( &tv, &tr );
|
||||
|
||||
if ( status == -1 ) {
|
||||
assert( errno == EINTR );
|
||||
assert( tr.tv_nsec || tr.tv_sec );
|
||||
rtems_test_assert( errno == EINTR );
|
||||
rtems_test_assert( tr.tv_nsec || tr.tv_sec );
|
||||
} else if ( !status ) {
|
||||
assert( !tr.tv_nsec && !tr.tv_sec );
|
||||
rtems_test_assert( !tr.tv_nsec && !tr.tv_sec );
|
||||
}
|
||||
|
||||
printf(
|
||||
|
||||
@@ -32,10 +32,10 @@ void *Task_1_through_3(
|
||||
for ( i=0 ; i<5 ; i++ ) {
|
||||
print_current_time( "Task1: ", "" );
|
||||
status = pthread_kill( Init_id, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
seconds = sleep( 1 );
|
||||
assert( !seconds );
|
||||
rtems_test_assert( !seconds );
|
||||
}
|
||||
puts( "*** END OF POSIX TEST 2 ***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
@@ -58,7 +58,7 @@ void *POSIX_Init(
|
||||
/* install a signal handler */
|
||||
|
||||
status = sigemptyset( &act.sa_mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
act.sa_handler = Signal_handler;
|
||||
act.sa_flags = 0;
|
||||
@@ -77,17 +77,17 @@ void *POSIX_Init(
|
||||
/* initialize the signal set we will wait for to SIGUSR1 */
|
||||
|
||||
status = sigemptyset( &waitset );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &waitset, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
timeout.tv_sec = 3;
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
puts( "Init: waiting on any signal for 3 seconds." );
|
||||
signo = sigtimedwait( &waitset, &siginfo, &timeout );
|
||||
assert( signo == -1 );
|
||||
rtems_test_assert( signo == -1 );
|
||||
|
||||
if ( errno == EAGAIN )
|
||||
puts( "Init: correctly timed out waiting for SIGUSR1." );
|
||||
@@ -105,19 +105,19 @@ void *POSIX_Init(
|
||||
/* initialize a mask to block SIGUSR2 */
|
||||
|
||||
status = sigemptyset( &mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &mask, SIGUSR2 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Init: Block SIGUSR2\n" );
|
||||
status = sigprocmask( SIG_BLOCK, &mask, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a thread */
|
||||
|
||||
status = pthread_create( &Task_id, NULL, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* signal handler is still installed, waitset is still set for SIGUSR1 */
|
||||
|
||||
@@ -133,7 +133,7 @@ void *POSIX_Init(
|
||||
puts( "Init: correctly timed out waiting for SIGUSR1." );
|
||||
else
|
||||
printf( "sigtimedwait returned wrong errno - %d\n", errno );
|
||||
assert( signo == -1 );
|
||||
rtems_test_assert( signo == -1 );
|
||||
|
||||
/*
|
||||
* wait on SIGUSR1 for 3 seconds, Task_2 will send it to us
|
||||
@@ -144,7 +144,7 @@ void *POSIX_Init(
|
||||
/* create a thread */
|
||||
|
||||
status = pthread_create( &Task_id, NULL, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* signal handler is still installed, waitset is still set for SIGUSR1 */
|
||||
|
||||
@@ -162,38 +162,38 @@ void *POSIX_Init(
|
||||
puts( "Init: waiting on any signal for 3 seconds." );
|
||||
signo = sigtimedwait( &waitset, &siginfo, &timeout );
|
||||
printf( "Init: received (%d) SIGUSR1=%d\n", siginfo.si_signo, SIGUSR1 );
|
||||
assert( signo == SIGUSR1 );
|
||||
assert( siginfo.si_signo == SIGUSR1 );
|
||||
assert( siginfo.si_code == SI_USER );
|
||||
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
|
||||
rtems_test_assert( signo == SIGUSR1 );
|
||||
rtems_test_assert( siginfo.si_signo == SIGUSR1 );
|
||||
rtems_test_assert( siginfo.si_code == SI_USER );
|
||||
rtems_test_assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
|
||||
|
||||
/* try out a process signal */
|
||||
|
||||
empty_line();
|
||||
puts( "Init: kill with SIGUSR2." );
|
||||
status = kill( getpid(), SIGUSR2 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
siginfo.si_code = -1;
|
||||
siginfo.si_signo = -1;
|
||||
siginfo.si_value.sival_int = -1;
|
||||
|
||||
status = sigemptyset( &waitset );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &waitset, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &waitset, SIGUSR2 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: waiting on any signal for 3 seconds." );
|
||||
signo = sigtimedwait( &waitset, &siginfo, &timeout );
|
||||
printf( "Init: received (%d) SIGUSR2=%d\n", siginfo.si_signo, SIGUSR2 );
|
||||
assert( signo == SIGUSR2 );
|
||||
assert( siginfo.si_signo == SIGUSR2 );
|
||||
assert( siginfo.si_code == SI_USER );
|
||||
assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
|
||||
rtems_test_assert( signo == SIGUSR2 );
|
||||
rtems_test_assert( siginfo.si_signo == SIGUSR2 );
|
||||
rtems_test_assert( siginfo.si_code == SI_USER );
|
||||
rtems_test_assert( siginfo.si_value.sival_int != -1 ); /* rtems does always set this */
|
||||
|
||||
/* exit this thread */
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -33,7 +33,7 @@ void *Task_1(
|
||||
|
||||
puts( "Task_1: pthread_kill - SIGUSR2 to Init" );
|
||||
status = pthread_kill( Init_id, SIGUSR2 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -54,7 +54,7 @@ void *Task_2(
|
||||
|
||||
puts( "Task_1: pthread_kill - SIGUSR1 to Init" );
|
||||
status = pthread_kill( Init_id, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
pthread_exit( NULL );
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -30,7 +30,7 @@ void *Task_1(
|
||||
|
||||
seconds = sleep( 5 );
|
||||
printf( "Task_1: %d seconds left\n", seconds );
|
||||
assert( seconds );
|
||||
rtems_test_assert( seconds );
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -28,7 +28,7 @@ void *Task_2(
|
||||
|
||||
printf( "Task_2: sending SIGUSR1\n" );
|
||||
status = pthread_kill( Init_id, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
|
||||
@@ -35,24 +35,24 @@ void *Task_3(
|
||||
|
||||
printf( "Task_3: sigqueue SIGUSR1 with value= %d\n", value.sival_int );
|
||||
status = sigqueue( getpid(), SIGUSR1, value );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* catch signal with sigwaitinfo */
|
||||
|
||||
empty_line();
|
||||
|
||||
status = sigemptyset( &mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &mask, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task_3: sigwaitinfo SIGUSR1 with value= %d\n", value.sival_int );
|
||||
status = sigwaitinfo( &mask, &info );
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
assert( !(status==-1) );
|
||||
rtems_test_assert( !(status==-1) );
|
||||
printf(
|
||||
"Task_3: si_signo= %d si_code= %d value= %d\n",
|
||||
info.si_signo,
|
||||
@@ -65,17 +65,17 @@ void *Task_3(
|
||||
empty_line();
|
||||
|
||||
status = sigemptyset( &mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &mask, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task_3: sigwait SIGUSR1\n" );
|
||||
status = sigwait( &mask, &sig );
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Task_3: signo= %d\n", sig );
|
||||
|
||||
/* catch signal with pause */
|
||||
@@ -83,17 +83,17 @@ void *Task_3(
|
||||
empty_line();
|
||||
|
||||
status = sigemptyset( &mask );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( &mask, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task_3: pause\n" );
|
||||
status = pause( );
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
assert( !(status==-1) );
|
||||
rtems_test_assert( !(status==-1) );
|
||||
printf( "Task_3: pause= %d\n", status );
|
||||
|
||||
|
||||
@@ -103,11 +103,11 @@ void *Task_3(
|
||||
|
||||
printf( "Task_3: sending SIGUSR2\n" );
|
||||
status = pthread_kill( Init_id, SIGUSR2 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task_3: sleep so the Init task can reguest a signal\n" );
|
||||
remaining = sleep( 1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* end of task 3 */
|
||||
printf( "Task_3: exit\n" );
|
||||
|
||||
+100
-100
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -31,13 +31,13 @@ void *Task_1(
|
||||
status = pthread_mutex_trylock( &Mutex_id );
|
||||
if ( status != EBUSY )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
|
||||
printf( "Task: pthread_mutex_lock unavailable\n" );
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to init */
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -30,14 +30,14 @@ void *Task_2(
|
||||
status = pthread_mutex_lock( &Mutex2_id );
|
||||
if ( status )
|
||||
printf( "status =%d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Task 2: mutex acquired\n" );
|
||||
|
||||
/* switch to init */
|
||||
|
||||
printf( "Task 2: unlock Mutex 2\n" );
|
||||
status = pthread_mutex_unlock( &Mutex2_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task 2: exit\n" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -31,14 +31,14 @@ void *Task_3(
|
||||
printf( "Task 3: pthread_mutex_lock unavailable (inherit case)\n" );
|
||||
status = pthread_mutex_lock( &Mutex2_id );
|
||||
printf( "Task 3: mutex acquired\n" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Task 3: unlock Mutex 2\n" );
|
||||
status = pthread_mutex_unlock( &Mutex2_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &policy, ¶m );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Task 3: pthread_getschedparam priority = %d\n", param.sched_priority );
|
||||
|
||||
printf( "Task 3: exit\n" );
|
||||
|
||||
@@ -52,10 +52,10 @@ void *POSIX_Init(
|
||||
/* create a couple of threads */
|
||||
|
||||
status = pthread_create( &Task_id, NULL, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_create( &Task2_id, NULL, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a key */
|
||||
|
||||
@@ -66,31 +66,31 @@ void *POSIX_Init(
|
||||
status = pthread_key_create( &Key_id, Key_destructor );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Destructor invoked %d times\n", Destructor_invoked );
|
||||
|
||||
puts( "Init: pthread_key_create - EAGAIN (too many keys)" );
|
||||
status = pthread_key_create( &Key_id, Key_destructor );
|
||||
assert( status == EAGAIN );
|
||||
rtems_test_assert( status == EAGAIN );
|
||||
|
||||
puts( "Init: pthread_setspecific - EINVAL (invalid key)" );
|
||||
status = pthread_setspecific( (pthread_t) -1, &Data_array[ 0 ] );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Init: pthread_getspecific - EINVAL (invalid key)" );
|
||||
key_data = pthread_getspecific( (pthread_t) -1 );
|
||||
assert( !key_data );
|
||||
rtems_test_assert( !key_data );
|
||||
|
||||
puts( "Init: pthread_key_delete - EINVAL (invalid key)" );
|
||||
status = pthread_key_delete( (pthread_t) -1 );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
printf( "Init: Setting the key to %d\n", 0 );
|
||||
status = pthread_setspecific( Key_id, &Data_array[ 0 ] );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to task 1 */
|
||||
|
||||
@@ -101,7 +101,7 @@ void *POSIX_Init(
|
||||
remaining = sleep( 3 );
|
||||
if ( remaining )
|
||||
printf( "seconds remaining = %d\n", remaining );
|
||||
assert( !remaining );
|
||||
rtems_test_assert( !remaining );
|
||||
|
||||
/* switch to task 1 */
|
||||
|
||||
@@ -111,7 +111,7 @@ void *POSIX_Init(
|
||||
status = pthread_key_delete( Key_id );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "Destructor invoked %d times\n", Destructor_invoked );
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -32,14 +32,14 @@ void *Task_1(
|
||||
status = pthread_setspecific( Key_id, &Data_array[ 1 ] );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
key_data = pthread_getspecific( Key_id );
|
||||
printf( "Task_1: Got the key value of %ld\n",
|
||||
(unsigned long) ((uint32_t *)key_data - Data_array) );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: exitting" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -33,14 +33,14 @@ void *Task_2(
|
||||
status = pthread_setspecific( Key_id, &Data_array[ 2 ] );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
key_data = pthread_getspecific( Key_id );
|
||||
printf( "Task_2: Got the key value of %ld\n",
|
||||
(unsigned long) ((uint32_t *)key_data - Data_array) );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task2: exitting" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -582,7 +582,7 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init - pthread_attr_setinheritsched - EXPLICIT - SUCCESSFUL" );
|
||||
status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
schedparam.ss_replenish_period.tv_sec = 3;
|
||||
schedparam.ss_replenish_period.tv_nsec = 3;
|
||||
@@ -599,7 +599,7 @@ void *POSIX_Init(
|
||||
posix_service_failed( status, "pthread_attr_setschedparam");
|
||||
|
||||
status = pthread_create( &Task2_id, &attr, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_join( Task2_id, NULL );
|
||||
posix_service_failed( status, " pthread_join");
|
||||
|
||||
@@ -33,22 +33,22 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_detach - ESRCH (invalid id)" );
|
||||
status = pthread_detach( (pthread_t) -1 );
|
||||
assert( status == ESRCH );
|
||||
rtems_test_assert( status == ESRCH );
|
||||
|
||||
/* detach this thread */
|
||||
|
||||
puts( "Init: pthread_detach self" );
|
||||
status = pthread_detach( pthread_self() );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create thread */
|
||||
|
||||
status = pthread_create( &Task1_id, NULL, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_join - ESRCH (invalid id)" );
|
||||
status = pthread_join( (pthread_t) -1, &return_pointer );
|
||||
assert( status == ESRCH );
|
||||
rtems_test_assert( status == ESRCH );
|
||||
|
||||
puts( "Init: pthread_join - SUCCESSFUL" );
|
||||
status = pthread_join( Task1_id, &return_pointer );
|
||||
@@ -56,7 +56,7 @@ void *POSIX_Init(
|
||||
puts( "Init: returned from pthread_join through return" );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( return_pointer == &Task1_id )
|
||||
puts( "Init: pthread_join returned correct pointer" );
|
||||
@@ -69,10 +69,10 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: creating two pthreads" );
|
||||
status = pthread_create( &Task2_id, NULL, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_create( &Task3_id, NULL, Task_3, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_join - SUCCESSFUL" );
|
||||
status = pthread_join( Task2_id, &return_pointer );
|
||||
@@ -81,7 +81,7 @@ void *POSIX_Init(
|
||||
puts( "Init: returned from pthread_join through pthread_exit" );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( return_pointer == &Task2_id )
|
||||
puts( "Init: pthread_join returned correct pointer" );
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -37,13 +37,13 @@ void *Task_2(
|
||||
status = pthread_join( Init_id, NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Task_2: join to self task (Init) -- EDEADLK" );
|
||||
status = pthread_join( pthread_self(), NULL );
|
||||
if ( status != EDEADLK )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EDEADLK );
|
||||
rtems_test_assert( status == EDEADLK );
|
||||
|
||||
puts( "Task_2: exitting" );
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -33,7 +33,7 @@ void *Task_3(
|
||||
puts( "Task_3: returned from pthread_join" );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( return_pointer == &Task2_id )
|
||||
puts( "Task_3: pthread_join returned correct pointer" );
|
||||
|
||||
@@ -72,7 +72,7 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_getschedparam - SUCCESSFUL" );
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - current priority = %d", priority );
|
||||
@@ -88,10 +88,10 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_setschedparam - SUCCESSFUL (sporadic server)" );
|
||||
status = pthread_setschedparam( pthread_self(), SCHED_SPORADIC, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - new priority = %d", priority );
|
||||
@@ -101,7 +101,7 @@ void *POSIX_Init(
|
||||
|
||||
for ( passes=0 ; passes <= 3 ; ) {
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( priority != schedparam.sched_priority ) {
|
||||
priority = schedparam.sched_priority;
|
||||
@@ -116,7 +116,7 @@ void *POSIX_Init(
|
||||
empty_line();
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
schedparam.ss_replenish_period.tv_sec = 0;
|
||||
schedparam.ss_replenish_period.tv_nsec = 500000000; /* 1/2 second */
|
||||
@@ -132,23 +132,23 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_setschedparam - SUCCESSFUL (sporadic server)" );
|
||||
status = pthread_setschedparam( pthread_self(), SCHED_SPORADIC, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: Initializing mutex attributes for priority ceiling" );
|
||||
status = pthread_mutexattr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: Creating a mutex" );
|
||||
status = pthread_mutex_init( &Mutex_id, &attr );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - new priority = %d", priority );
|
||||
@@ -162,11 +162,11 @@ void *POSIX_Init(
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
if ( status )
|
||||
printf( "status = %d %s\n", status, strerror(status) );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
for ( ; ; ) {
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( schedparam.sched_priority == LOW_PRIORITY ) {
|
||||
puts( "ERROR - Init's priority lowered while holding mutex" );
|
||||
@@ -182,7 +182,7 @@ void *POSIX_Init(
|
||||
print_current_time( "Init: ", buffer );
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - new priority = %d", priority );
|
||||
@@ -197,10 +197,10 @@ void *POSIX_Init(
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - new priority = %d", priority );
|
||||
@@ -208,14 +208,14 @@ void *POSIX_Init(
|
||||
|
||||
for ( ; ; ) {
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
if ( schedparam.sched_priority == LOW_PRIORITY )
|
||||
break;
|
||||
}
|
||||
|
||||
status = pthread_getschedparam( pthread_self(), &schedpolicy, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
priority = schedparam.sched_priority;
|
||||
sprintf( buffer, " - new priority = %d", priority );
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -29,61 +29,61 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_condattr_init" );
|
||||
status = pthread_condattr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_condattr_init - EINVAL (attribute invalid)" );
|
||||
status = pthread_condattr_init( NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Init: pthread_condattr_destroy" );
|
||||
status = pthread_condattr_destroy( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_condattr_destroy - EINVAL (attribute invalid)" );
|
||||
status = pthread_condattr_destroy( NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "Init: pthread_condattr_init" );
|
||||
status = pthread_condattr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_condattr_setpshared - PTHREAD_PROCESS_SHARED" );
|
||||
status = pthread_condattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_condattr_setpshared - PTHREAD_PROCESS_PRIVATE" );
|
||||
status = pthread_condattr_setpshared( &attr, PTHREAD_PROCESS_PRIVATE );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_condattr_setpshared( NULL, PTHREAD_PROCESS_PRIVATE );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_condattr_setpshared - EINVAL (attribute invalid)" );
|
||||
|
||||
status = pthread_condattr_setpshared( &attr, 0x7FFF );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_condattr_setpshared - EINVAL (pshared invalid)" );
|
||||
|
||||
status = pthread_condattr_getpshared( &attr, &pshared );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
printf( "Init: pthread_condattr_getpshared - %d\n", pshared );
|
||||
|
||||
status = pthread_condattr_getpshared( NULL, &pshared );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_condattr_getpshared - EINVAL (attribute invalid)" );
|
||||
|
||||
puts( "Init: pthread_cond_init - NULL attr" );
|
||||
status = pthread_cond_init( &cond, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* error for attribute not initialized */
|
||||
|
||||
@@ -91,39 +91,39 @@ void *POSIX_Init(
|
||||
status = pthread_cond_init( &cond, &attr_error );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_init - EINVAL (attr not initialized)" );
|
||||
|
||||
status = pthread_cond_init( &cond, NULL );
|
||||
if ( status != ENOMEM )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == ENOMEM );
|
||||
rtems_test_assert( status == ENOMEM );
|
||||
puts( "Init: pthread_cond_init - ENOMEM (too many conds)" );
|
||||
|
||||
puts( "Init: pthread_cond_destroy" );
|
||||
status = pthread_cond_destroy( &cond );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* error for bad condition variable passed */
|
||||
|
||||
status = pthread_cond_destroy( NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_destroy - EINVAL (cond invalid)" );
|
||||
|
||||
/* initiailize the attribute for the rest of the test */
|
||||
|
||||
puts( "Init: pthread_cond_init - attr" );
|
||||
status = pthread_cond_init( &Cond1_id, &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* signal task1 with a condition variable */
|
||||
|
||||
empty_line();
|
||||
|
||||
status = pthread_create( &Task_id, NULL, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to task1 to allow it to wait for a condition variable */
|
||||
|
||||
@@ -133,17 +133,17 @@ void *POSIX_Init(
|
||||
status = pthread_cond_destroy( &Cond1_id );
|
||||
if ( status != EBUSY )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
puts( "Init: pthread_cond_destroy - EBUSY (task1 waiting)" );
|
||||
|
||||
puts( "Init: pthread_cond_signal" );
|
||||
status = pthread_cond_signal( &Cond1_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
empty_line();
|
||||
|
||||
status = pthread_create( &Task2_id, NULL, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to task1 and task2 to allow them to wait for broadcast signal */
|
||||
|
||||
@@ -154,7 +154,7 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_cond_broadcast" );
|
||||
status = pthread_cond_broadcast( &Cond1_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: sleep - switch to Task_1" );
|
||||
sleep( 0 );
|
||||
@@ -162,12 +162,12 @@ void *POSIX_Init(
|
||||
/* timedwait case - timeout */
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* set timeout to 3 seconds */
|
||||
|
||||
status = clock_gettime( CLOCK_REALTIME, &timeout );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
timeout.tv_sec += 3;
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
@@ -175,11 +175,11 @@ void *POSIX_Init(
|
||||
status = pthread_cond_timedwait( &Cond1_id, &Mutex_id, &timeout );
|
||||
if ( status != ETIMEDOUT )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
puts( "Init: pthread_cond_timedwait - ETIMEDOUT - (mutex not acquired)" );
|
||||
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* remaining error messages */
|
||||
|
||||
@@ -190,78 +190,78 @@ void *POSIX_Init(
|
||||
status = pthread_cond_signal( NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_signal - EINVAL (cond invalid)" );
|
||||
|
||||
status = pthread_cond_broadcast( NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_broadcast - EINVAL (cond invalid)" );
|
||||
|
||||
/* acquire mutex so errors will occur */
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_cond_wait( NULL, &Mutex_id );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_wait - EINVAL (cond invalid)" );
|
||||
|
||||
status = pthread_cond_timedwait( NULL, &Mutex_id, &timeout );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_timedwait - EINVAL (cond invalid)" );
|
||||
|
||||
status = pthread_cond_wait( &Cond1_id, NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_wait - EINVAL (mutex invalid)" );
|
||||
|
||||
status = pthread_cond_timedwait( &Cond1_id, NULL, &timeout );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_timedwait - EINVAL (mutex invalid)" );
|
||||
|
||||
status = pthread_cond_timedwait( &Cond1_id, &Mutex_id, NULL );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Init: pthread_cond_timedwait - EINVAL (abstime NULL)" );
|
||||
|
||||
status = clock_gettime( CLOCK_REALTIME, &timeout );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
timeout.tv_sec -= 1;
|
||||
status = pthread_cond_timedwait( &Cond1_id, &Mutex_id, &timeout );
|
||||
if ( status != ETIMEDOUT )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
puts( "Init: pthread_cond_timedwait - ETIMEDOUT (abstime->tv_sec < current time)" );
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* ensure we do not catch a 0 nanosecond boundary */
|
||||
do {
|
||||
status = clock_gettime( CLOCK_REALTIME, &timeout );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
timeout.tv_nsec -= 1;
|
||||
} while ( timeout.tv_nsec < 0);
|
||||
|
||||
status = pthread_cond_timedwait( &Cond1_id, &Mutex_id, &timeout );
|
||||
if ( status != ETIMEDOUT )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
puts( "Init: pthread_cond_timedwait - ETIMEDOUT (abstime->tv_nsec < current time)" );
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* wait and timedwait without mutex */
|
||||
|
||||
@@ -270,26 +270,26 @@ void *POSIX_Init(
|
||||
* status = pthread_cond_wait( &Cond1_id, &Mutex_id );
|
||||
* if ( status != EINVAL )
|
||||
* printf( "status = %d\n", status );
|
||||
* assert( status == EINVAL );
|
||||
* rtems_test_assert( status == EINVAL );
|
||||
*/
|
||||
puts( "Init: pthread_cond_wait - EINVAL (mutex not locked before call)" );
|
||||
|
||||
/* XXX - this case is commented out in the code pending review
|
||||
*
|
||||
* status = clock_gettime( CLOCK_REALTIME, &timeout );
|
||||
* assert( !status );
|
||||
* rtems_test_assert( !status );
|
||||
* timeout.tv_sec += 1;
|
||||
* status = pthread_cond_timedwait( &Cond1_id, &Mutex_id, &timeout );
|
||||
* if ( status != EINVAL )
|
||||
* printf( "status = %d\n", status );
|
||||
* assert( status == EINVAL );
|
||||
* rtems_test_assert( status == EINVAL );
|
||||
*/
|
||||
puts( "Init: pthread_cond_timedwait - EINVAL (mutex not locked before call)");
|
||||
|
||||
empty_line();
|
||||
|
||||
status = pthread_create( &Task3_id, NULL, Task_3, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* switch to task3 to allow it to wait for broadcast signal */
|
||||
|
||||
@@ -299,7 +299,7 @@ void *POSIX_Init(
|
||||
/* destroy the mutex so Task3 can not acguire at the end of Wait_support */
|
||||
|
||||
status = pthread_mutex_destroy( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* signal a condition variable to task3 */
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -31,31 +31,31 @@ void *Task_1(
|
||||
printf( "Task_1: ID is 0x%08" PRIxpthread_t "\n", Task_id );
|
||||
|
||||
status = pthread_mutex_init( &Mutex_id, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: pthread_cond_wait" );
|
||||
status = pthread_cond_wait( &Cond1_id, &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: back from pthread_cond_wait release mutex" );
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* wait for a condition variable broadcast from Init */
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: pthread_cond_wait" );
|
||||
status = pthread_cond_wait( &Cond1_id, &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: back from pthread_cond_wait release mutex" );
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: task exit" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -29,15 +29,15 @@ void *Task_2(
|
||||
printf( "Task_2: ID is 0x%08" PRIxpthread_t "\n", Task_id );
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_2: pthread_cond_wait" );
|
||||
status = pthread_cond_wait( &Cond1_id, &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_2: back from pthread_cond_wait release mutex" );
|
||||
status = pthread_mutex_unlock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_2: task exit" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -29,13 +29,13 @@ void *Task_3(
|
||||
printf( "Task_3: ID is 0x%08" PRIxpthread_t "\n", Task_id );
|
||||
|
||||
status = pthread_mutex_lock( &Mutex_id );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_3: pthread_cond_wait" );
|
||||
status = pthread_cond_wait( &Cond1_id, &Mutex_id );
|
||||
if ( status != EINVAL )
|
||||
printf( "status = %d\n", status );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
puts( "Task_3: pthread_cond_wait - EINVAL (mutex not locked after signal)");
|
||||
|
||||
puts( "Task_3: task exit" );
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* COPYRIGHT (c) 1989-2008.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -52,7 +52,7 @@ void *POSIX_Init(
|
||||
priority_1
|
||||
);
|
||||
status = pthread_setschedparam( Init_id, SCHED_FIFO, ¶m );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
param.sched_priority = priority_2;
|
||||
|
||||
@@ -61,7 +61,7 @@ void *POSIX_Init(
|
||||
priority_2
|
||||
);
|
||||
status = pthread_setschedparam( Init_id, SCHED_RR, ¶m );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
param.sched_priority = priority_3;
|
||||
|
||||
@@ -70,59 +70,59 @@ void *POSIX_Init(
|
||||
priority_3
|
||||
);
|
||||
status = pthread_setschedparam( Init_id, SCHED_OTHER, ¶m );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a thread as SCHED_FIFO */
|
||||
|
||||
printf(
|
||||
"Init: create a thread of SCHED_FIFO with priority %d\n", priority_4 );
|
||||
status = pthread_attr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
attr.schedpolicy = SCHED_FIFO;
|
||||
attr.schedparam.sched_priority = priority_4;
|
||||
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: join with the other thread" );
|
||||
status = pthread_join( Task_id, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a thread as SCHED_RR */
|
||||
|
||||
printf( "Init: create a thread of SCHED_RR with priority %d\n", priority_4 );
|
||||
status = pthread_attr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
attr.schedpolicy = SCHED_RR;
|
||||
attr.schedparam.sched_priority = priority_4;
|
||||
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: join with the other thread" );
|
||||
status = pthread_join( Task_id, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* create a thread as SCHED_OTHER */
|
||||
|
||||
printf(
|
||||
"Init: create a thread of SCHED_OTHER with priority %d\n", priority_4 );
|
||||
status = pthread_attr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
attr.schedpolicy = SCHED_OTHER;
|
||||
attr.schedparam.sched_priority = priority_4;
|
||||
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: join with the other thread" );
|
||||
status = pthread_join( Task_id, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "*** END OF POSIX TEST 11 ***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
@@ -50,10 +50,10 @@ void *Task_1(
|
||||
struct timespec delay;
|
||||
|
||||
status = clock_gettime( CLOCK_REALTIME, &start );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sched_rr_get_interval( getpid(), &delay );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* double the rr interval for confidence */
|
||||
|
||||
@@ -69,7 +69,7 @@ void *Task_1(
|
||||
for ( ; ; ) {
|
||||
|
||||
status = clock_gettime( CLOCK_REALTIME, ¤t );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
diff_timespec( &start, ¤t, &difference );
|
||||
|
||||
|
||||
@@ -62,25 +62,25 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: pthread_attr_init - SUCCESSFUL" );
|
||||
status = pthread_attr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
attr.schedpolicy = -1;
|
||||
|
||||
puts( "Init: pthread_create - EINVAL (invalid scheduling policy)" );
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* replenish period < budget error */
|
||||
|
||||
puts( "Init: pthread_attr_init - SUCCESSFUL" );
|
||||
status = pthread_attr_init( &attr );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: set scheduling parameter attributes for sporadic server" );
|
||||
status = pthread_attr_setschedpolicy( &attr, SCHED_SPORADIC );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
schedparam.ss_replenish_period.tv_sec = 1;
|
||||
schedparam.ss_replenish_period.tv_nsec = 0;
|
||||
@@ -91,14 +91,14 @@ void *POSIX_Init(
|
||||
schedparam.ss_low_priority = 100;
|
||||
|
||||
status = pthread_attr_setschedparam( &attr, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_create - EINVAL (replenish < budget)" );
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* invalid ss_low_priority error */
|
||||
|
||||
@@ -111,11 +111,11 @@ void *POSIX_Init(
|
||||
schedparam.ss_low_priority = -1;
|
||||
|
||||
status = pthread_attr_setschedparam( &attr, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_create - EINVAL (invalid ss_low_priority)" );
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* create a thread as a sporadic server */
|
||||
|
||||
@@ -128,14 +128,14 @@ void *POSIX_Init(
|
||||
schedparam.ss_low_priority = sched_get_priority_max( SCHED_FIFO ) - 6;
|
||||
|
||||
status = pthread_attr_setschedparam( &attr, &schedparam );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Init: pthread_create - SUCCESSFUL" );
|
||||
status = pthread_create( &Task_id, &attr, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = pthread_join( Task_id, NULL );
|
||||
assert( status );
|
||||
rtems_test_assert( status );
|
||||
|
||||
/* switch to Task_1 */
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ void *POSIX_Init(
|
||||
/* install a signal handler for SIGALRM and unblock it */
|
||||
|
||||
sc = sigemptyset( &act.sa_mask );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
act.sa_handler = Signal_handler;
|
||||
act.sa_flags = 0;
|
||||
@@ -78,21 +78,21 @@ void *POSIX_Init(
|
||||
sigaction( SIGALRM, &act, NULL );
|
||||
|
||||
sc = sigemptyset( &mask );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
sc = sigaddset( &mask, SIGALRM );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init: Unblock SIGALRM" );
|
||||
sc = sigprocmask( SIG_UNBLOCK, &mask, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
/* schedule the alarm */
|
||||
|
||||
puts( "Init: Firing alarm in 1 second" );
|
||||
remaining = alarm( 1 );
|
||||
printf( "Init: %d seconds left on previous alarm\n", sc );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init: Wait for alarm" );
|
||||
sleep( 2 );
|
||||
@@ -100,7 +100,7 @@ void *POSIX_Init(
|
||||
puts( "Init: Cancel alarm" );
|
||||
remaining = alarm( 0 );
|
||||
printf( "Init: %d seconds left on previous alarm\n", remaining );
|
||||
assert( remaining == 0 );
|
||||
rtems_test_assert( remaining == 0 );
|
||||
|
||||
puts( "*** END OF POSIX ALARM TEST 01***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
@@ -34,7 +33,7 @@ void *BarrierThread(void *arg)
|
||||
printf( "pthread_barrier_wait( &Barrier ) for thread 0x%08" PRIxpthread_t "\n", id );
|
||||
status = pthread_barrier_wait( &Barrier );
|
||||
printf( "pthread_barrier_wait - 0x%08" PRIxpthread_t " released\n", id );
|
||||
assert( (status == 0) || (status == PTHREAD_BARRIER_SERIAL_THREAD) );
|
||||
rtems_test_assert( (status == 0) || (status == PTHREAD_BARRIER_SERIAL_THREAD) );
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -66,155 +65,155 @@ int main(
|
||||
/*************** NULL POINTER CHECKS *****************/
|
||||
puts( "pthread_barrierattr_init( NULL ) -- EINVAL" );
|
||||
status = pthread_barrierattr_init( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_setpshared( NULL, private ) -- EINVAL" );
|
||||
status = pthread_barrierattr_setpshared( NULL, PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_setpshared( NULL, shared ) -- EINVAL" );
|
||||
status = pthread_barrierattr_setpshared( NULL, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_getpshared( NULL, &p ) -- EINVAL" );
|
||||
status = pthread_barrierattr_getpshared( NULL, &p );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_destroy( NULL ) -- EINVAL" );
|
||||
status = pthread_barrierattr_destroy( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** NOT INITIALIZED CHECKS *****************/
|
||||
/* cheat visibility */
|
||||
attr.is_initialized = 0;
|
||||
puts( "pthread_barrierattr_setpshared( &attr, shared ) -- EINVAL" );
|
||||
status = pthread_barrierattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_getpshared( &attr, NULL ) -- EINVAL" );
|
||||
status = pthread_barrierattr_getpshared( &attr, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrierattr_destroy( &attr ) -- EINVAL" );
|
||||
status = pthread_barrierattr_destroy( &attr );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
|
||||
/*************** ACTUALLY WORK THIS TIME *****************/
|
||||
|
||||
puts( "pthread_barrierattr_init( &attr ) -- OK" );
|
||||
status = pthread_barrierattr_init( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrierattr_setpshared( &attr, private ) -- OK" );
|
||||
status = pthread_barrierattr_setpshared( &attr, PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrierattr_getpshared( &attr, &p ) -- OK" );
|
||||
status = pthread_barrierattr_getpshared( &attr, &p );
|
||||
assert( status == 0 );
|
||||
assert( p == PTHREAD_PROCESS_PRIVATE );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( p == PTHREAD_PROCESS_PRIVATE );
|
||||
|
||||
puts( "pthread_barrierattr_setpshared( &attr, shared ) -- OK" );
|
||||
status = pthread_barrierattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrierattr_getpshared( &attr, &p ) -- OK" );
|
||||
status = pthread_barrierattr_getpshared( &attr, &p );
|
||||
assert( status == 0 );
|
||||
assert( p == PTHREAD_PROCESS_SHARED );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( p == PTHREAD_PROCESS_SHARED );
|
||||
|
||||
/*************** BAD PSHARED CHECK *****************/
|
||||
puts( "pthread_barrierattr_setpshared( &attr, private ) -- EINVAL" );
|
||||
status = pthread_barrierattr_setpshared( &attr, ~PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** DESTROY/REUSE CHECK *****************/
|
||||
puts( "pthread_barrierattr_destroy( &attr ) -- OK" );
|
||||
status = pthread_barrierattr_destroy( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrierattr_getpshared( &attr, &p ) destroyed -- EINVAL" );
|
||||
status = pthread_barrierattr_getpshared( &attr, &p );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** pthread_barrier_init ERROR CHECKs *********/
|
||||
/* NULL barrier argument */
|
||||
puts( "pthread_barrier_init( NULL, NULL, 2 ) -- EINVAL" );
|
||||
status = pthread_barrier_init( NULL, NULL, 2 );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* uninitialized attr argument */
|
||||
puts( "pthread_barrier_init( &barrier, &attr, 2 ) -- EINVAL" );
|
||||
status = pthread_barrier_init( &barrier, &attr, 2 );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* zero count argument */
|
||||
puts( "pthread_barrierattr_init( &attr ) -- OK" );
|
||||
status = pthread_barrierattr_init( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrier_init( &barrier, &attr, 0 ) -- EINVAL" );
|
||||
status = pthread_barrier_init( &barrier, &attr, 0 );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/* allocating too many */
|
||||
puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- OK" );
|
||||
status = pthread_barrier_init( &barrier, NULL, 1 );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- EAGAIN" );
|
||||
status = pthread_barrier_init( &barrier, NULL, 1 );
|
||||
assert( status == EAGAIN );
|
||||
rtems_test_assert( status == EAGAIN );
|
||||
|
||||
/* clean up */
|
||||
puts( "pthread_barrier_destroy( &barrier ) -- OK" );
|
||||
status = pthread_barrier_destroy( &barrier );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrierattr_destroy( &attr ) -- OK" );
|
||||
status = pthread_barrierattr_destroy( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** pthread_barrier_destroy ERROR CHECKs *********/
|
||||
/* NULL barrier argument */
|
||||
puts( "pthread_barrier_destroy( NULL ) -- EINVAL" );
|
||||
status = pthread_barrier_destroy( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrier_destroy( &bad_barrier ) -- EINVAL" );
|
||||
status = pthread_barrier_destroy( &bad_barrier );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** pthread_barrier_wait ERROR CHECKs *********/
|
||||
/* NULL barrier argument */
|
||||
puts( "pthread_barrier_wait( NULL ) -- EINVAL" );
|
||||
status = pthread_barrier_wait( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_barrier_wait( &bad_barrier ) -- EINVAL" );
|
||||
status = pthread_barrier_wait( &bad_barrier );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** ACTUALLY CREATE ONE CHECK *****************/
|
||||
puts( "pthread_barrierattr_init( &attr ) -- OK" );
|
||||
status = pthread_barrierattr_init( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_barrier_init( &barrier, &attr, 2 ) -- OK" );
|
||||
status = pthread_barrier_init( &barrier, &attr, 2 );
|
||||
assert( status == 0 );
|
||||
assert( barrier != 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( barrier != 0 );
|
||||
|
||||
puts( "pthread_barrier_destroy( &barrier ) -- OK" );
|
||||
status = pthread_barrier_destroy( &barrier );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** CREATE THREADS AND LET THEM RELEASE *****************/
|
||||
puts( "pthread_barrier_init( &Barrier, &attr, NUMBER_THREADS ) -- OK" );
|
||||
status = pthread_barrier_init( &Barrier, &attr, NUMBER_THREADS );
|
||||
assert( status == 0 );
|
||||
assert( barrier != 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( barrier != 0 );
|
||||
|
||||
for (i=0 ; i<NUMBER_THREADS ; i++ ) {
|
||||
|
||||
@@ -222,13 +221,13 @@ int main(
|
||||
if (i == NUMBER_THREADS - 1) {
|
||||
puts( "pthread_barrier_destroy( &Barrier ) -- EBUSY" );
|
||||
status = pthread_barrier_destroy( &Barrier );
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
}
|
||||
|
||||
/* create a thread to block on the barrier */
|
||||
printf( "Init: pthread_create - thread %d OK\n", i+1 );
|
||||
status = pthread_create(&ThreadIds[i], NULL, BarrierThread, &ThreadIds[i]);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -63,7 +63,7 @@ void doit(
|
||||
TSR_status = 0;
|
||||
|
||||
status = rtems_timer_fire_after( timer_id, 10, TSR, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
start = rtems_clock_get_ticks_since_boot();
|
||||
do {
|
||||
@@ -94,7 +94,7 @@ void *POSIX_Init(
|
||||
rtems_build_name( 'T', 'M', '1', ' ' ),
|
||||
&timer_id
|
||||
);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
doit( Cancel_duringISR_TSR, "pthread_cancel" );
|
||||
doit( SetState_duringISR_TSR, "pthread_setcancelstate" );
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
* implementation of this appears to seek to the ((off/DIRENT_SIZE) + 1)
|
||||
* record where DIRENT_SIZE seems to be 12 bytes.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
@@ -24,7 +29,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <rtems/libio.h>
|
||||
@@ -35,10 +39,10 @@ void touch( char *file )
|
||||
{
|
||||
int fd;
|
||||
|
||||
assert( file );
|
||||
rtems_test_assert( file );
|
||||
|
||||
fd = open( file, O_RDWR|O_CREAT, 0777 );
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
close( fd );
|
||||
}
|
||||
|
||||
@@ -47,7 +51,7 @@ int fileexists( char *file )
|
||||
int status;
|
||||
struct stat statbuf;
|
||||
|
||||
assert( file );
|
||||
rtems_test_assert( file );
|
||||
|
||||
status = stat( file, &statbuf );
|
||||
|
||||
@@ -86,19 +90,19 @@ int main(
|
||||
printf( "\n\n*** CHROOT01 TEST ***\n" );
|
||||
|
||||
status = mkdir( "/one", 0777);
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
status = mkdir( "/one/one", 0777);
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
status = mkdir( "/one/two", 0777);
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
touch( "/one/one.test" );
|
||||
touch( "/one/two/two.test" );
|
||||
|
||||
status = chroot( "/one" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
status = fileexists( "/one/one.test" );
|
||||
printf( "%s on /one/one.test\n", (!status) ? "SUCCESS" : "FAILURE" );
|
||||
|
||||
@@ -210,7 +210,7 @@ rtems_task Init(
|
||||
delay_request.tv_sec = 1;
|
||||
delay_request.tv_nsec = 35000000;
|
||||
sc = nanosleep( &delay_request, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
/* print the current real time again */
|
||||
sc = clock_gettime( CLOCK_REALTIME, &tv );
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <rtems.h>
|
||||
#include <rtems/libio.h>
|
||||
|
||||
@@ -100,7 +99,7 @@ void stat_a_file(
|
||||
int status;
|
||||
struct stat statbuf;
|
||||
|
||||
assert( file );
|
||||
rtems_test_assert( file );
|
||||
|
||||
printf( "stat( %s ) returned ", file );
|
||||
fflush( stdout );
|
||||
@@ -169,7 +168,7 @@ int main(
|
||||
|
||||
puts( "stat of /dev/console" );
|
||||
status = stat( "/dev/console", &buf );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
dump_statbuf( &buf );
|
||||
|
||||
@@ -180,47 +179,47 @@ int main(
|
||||
puts( "" );
|
||||
puts( "mkdir /dev/tty" );
|
||||
status = mkdir( "/dev/tty", S_IRWXU );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "" );
|
||||
puts( "mkdir /usr" );
|
||||
status = mkdir( "/usr", S_IRWXU );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "mkdir /etc" );
|
||||
status = mkdir( "/etc", S_IRWXU );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "mkdir /tmp" );
|
||||
status = mkdir( "/tmp", S_IRWXU );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* this tests the ".." path in path name evaluation */
|
||||
puts( "mkdir /tmp/.." );
|
||||
status = mkdir( "/tmp/..", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
assert( errno == EEXIST );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EEXIST );
|
||||
|
||||
/* now check out trailing separators */
|
||||
puts( "mkdir /tmp/" );
|
||||
status = mkdir( "/tmp/", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
assert( errno == EEXIST );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EEXIST );
|
||||
|
||||
/* try to make a directory under a non-existent subdirectory */
|
||||
puts( "mkdir /j/j1" );
|
||||
status = mkdir( "/j/j1", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
assert( errno == ENOENT );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == ENOENT );
|
||||
|
||||
/* this tests the ability to make a directory in the current one */
|
||||
puts( "mkdir tmp" );
|
||||
status = mkdir( "tmp", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
assert( errno == EEXIST );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EEXIST );
|
||||
|
||||
/* test rtems_filesystem_evaluate_path by sending NULL path */
|
||||
status = chdir( NULL );
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
|
||||
/*
|
||||
* Now switch gears and exercise rmdir().
|
||||
@@ -229,37 +228,37 @@ int main(
|
||||
puts( "" );
|
||||
puts( "rmdir /usr" );
|
||||
status = rmdir( "/usr" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "rmdir /dev" );
|
||||
status = rmdir( "/dev" );
|
||||
assert( status == -1 );
|
||||
assert( errno == ENOTEMPTY);
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == ENOTEMPTY);
|
||||
|
||||
puts( "rmdir /fred" );
|
||||
status = rmdir ("/fred");
|
||||
assert (status == -1);
|
||||
assert( errno == ENOENT );
|
||||
rtems_test_assert (status == -1);
|
||||
rtems_test_assert( errno == ENOENT );
|
||||
|
||||
puts( "mknod /dev/test_console" );
|
||||
status = mknod( "/dev/test_console", S_IFCHR, 0LL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "mknod /dev/tty/S3" );
|
||||
status = mknod( "/dev/tty/S3", S_IFCHR, 0xFF00000080LL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts ("mknod /etc/passwd");
|
||||
status = mknod( "/etc/passwd", (S_IFREG | S_IRWXU), 0LL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "mkdir /tmp/my_dir");
|
||||
status = mkdir( "/tmp/my_dir", S_IRWXU );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts("mkfifo /c/my_dir" );
|
||||
status = mkfifo( "/c/my_dir", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
|
||||
/*
|
||||
* Try to make a directory under a file -- ERROR
|
||||
@@ -267,8 +266,8 @@ int main(
|
||||
|
||||
puts( "mkdir /etc/passwd/j" );
|
||||
status = mkdir( "/etc/passwd/j", S_IRWXU );
|
||||
assert( status == -1 );
|
||||
assert( errno == ENOTDIR );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == ENOTDIR );
|
||||
|
||||
/*
|
||||
* Simple open failure case on non-existent file
|
||||
@@ -276,8 +275,8 @@ int main(
|
||||
|
||||
puts( "open /tmp/joel - should fail with ENOENT" );
|
||||
fd = open( "/tmp/joel", O_RDONLY );
|
||||
assert( fd == -1 );
|
||||
assert( errno == ENOENT );
|
||||
rtems_test_assert( fd == -1 );
|
||||
rtems_test_assert( errno == ENOENT );
|
||||
|
||||
/*
|
||||
* Simple open case where the file is created.
|
||||
@@ -285,24 +284,24 @@ int main(
|
||||
|
||||
puts( "open /tmp/j" );
|
||||
fd = open( "/tmp/j", O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO );
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
printf( "open returned file descriptor %d\n", fd );
|
||||
|
||||
puts( "close /tmp/j" );
|
||||
status = close( fd );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "close /tmp/j again" );
|
||||
status = close( fd );
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
|
||||
puts( "unlink /tmp/j" );
|
||||
status = unlink( "/tmp/j" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "unlink /tmp" );
|
||||
status = unlink( "/tmp" );
|
||||
assert( status );
|
||||
rtems_test_assert( status );
|
||||
|
||||
/*
|
||||
* Simple open failure. Trying to create an existing file.
|
||||
@@ -310,22 +309,22 @@ int main(
|
||||
|
||||
puts("create and close /tmp/tom");
|
||||
fd = open( "/tmp/tom", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO );
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
status = close( fd );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts("Attempt to recreate /tmp/tom");
|
||||
fd = open( "/tmp/tom", O_CREAT | O_EXCL, S_IRWXU|S_IRWXG|S_IRWXO );
|
||||
assert( fd == -1 );
|
||||
assert( errno == EEXIST );
|
||||
rtems_test_assert( fd == -1 );
|
||||
rtems_test_assert( errno == EEXIST );
|
||||
|
||||
puts("create /tmp/john");
|
||||
fd = open( "/tmp/john", O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO );
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
|
||||
puts("tcdrain /tmp/john" );
|
||||
status = tcdrain( fd );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Test simple write to a file at offset 0
|
||||
@@ -341,10 +340,10 @@ int main(
|
||||
*/
|
||||
|
||||
status = unlink( "/tmp/joel" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = mknod( "/tmp/joel", (S_IFREG | S_IRWXU), 0LL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
test_write( "/tmp/joel", 10, "the first write!!!\n" );
|
||||
test_cat( "/tmp/joel", 0, 0 );
|
||||
@@ -357,17 +356,17 @@ int main(
|
||||
|
||||
puts("unlink /tmp/joel");
|
||||
status = unlink( "/tmp/joel" );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/* Test a failure path */
|
||||
|
||||
puts( "unlink /tmp/joel" );
|
||||
status = unlink( "/tmp/joel" );
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
|
||||
puts( "mknod /tmp/joel");
|
||||
status = mknod( "/tmp/joel", (S_IFREG | S_IRWXU), 0LL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
test_write( "/tmp/joel", 514, "the first write!!!\n" );
|
||||
test_write( "/tmp/joel", 1, test_write_buffer );
|
||||
@@ -410,19 +409,19 @@ int main(
|
||||
|
||||
puts( "fopen of /tmp/j" );
|
||||
file = fopen( "/tmp/j", "w+" );
|
||||
assert( file );
|
||||
rtems_test_assert( file );
|
||||
|
||||
puts( "fprintf to /tmp/j" );
|
||||
for (i=1 ; i<=5 ; i++) {
|
||||
status = fprintf( file, "This is call %d to fprintf\n", i );
|
||||
assert( status );
|
||||
rtems_test_assert( status );
|
||||
printf( "(%d) %d characters written to the file\n", i, status );
|
||||
}
|
||||
|
||||
fflush( file );
|
||||
|
||||
status = stat( "/tmp/j", &buf );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
dump_statbuf( &buf );
|
||||
atime2 = buf.st_atime;
|
||||
mtime2 = buf.st_mtime;
|
||||
@@ -438,14 +437,14 @@ int main(
|
||||
* Verify only atime changed for a read.
|
||||
*/
|
||||
status = stat( "/tmp/j", &buf );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
dump_statbuf( &buf );
|
||||
atime1 = buf.st_atime;
|
||||
mtime1 = buf.st_mtime;
|
||||
ctime1 = buf.st_ctime;
|
||||
assert( atime1 != atime2);
|
||||
assert( mtime1 == mtime2);
|
||||
assert( ctime1 == ctime2);
|
||||
rtems_test_assert( atime1 != atime2);
|
||||
rtems_test_assert( mtime1 == mtime2);
|
||||
rtems_test_assert( ctime1 == ctime2);
|
||||
|
||||
IMFS_dump();
|
||||
|
||||
@@ -458,41 +457,41 @@ int main(
|
||||
status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() );
|
||||
puts( "truncate /tmp/j to length of 40" );
|
||||
status = truncate( "/tmp/j", 40 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
/*
|
||||
* Verify truncate changed only atime.
|
||||
*/
|
||||
status = stat( "/tmp/j", &buf );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
dump_statbuf( &buf );
|
||||
atime2 = buf.st_atime;
|
||||
mtime2 = buf.st_mtime;
|
||||
ctime2 = buf.st_ctime;
|
||||
assert( atime1 != atime2);
|
||||
assert( mtime1 == mtime2);
|
||||
assert( ctime1 == ctime2);
|
||||
rtems_test_assert( atime1 != atime2);
|
||||
rtems_test_assert( mtime1 == mtime2);
|
||||
rtems_test_assert( ctime1 == ctime2);
|
||||
|
||||
IMFS_dump();
|
||||
|
||||
/* try to truncate the console and see what happens */
|
||||
status = truncate( "/dev/console", 40 );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "truncate /tmp/j to length of 0" );
|
||||
status = truncate( "/tmp/j", 0 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "truncate /tmp to length of 0 should fail with EISDIR\n");
|
||||
status = truncate( "/tmp", 0 );
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
printf( "%d: %s\n", errno, strerror( errno ) );
|
||||
assert( errno == EISDIR );
|
||||
rtems_test_assert( errno == EISDIR );
|
||||
|
||||
IMFS_dump();
|
||||
|
||||
status = truncate( "/tmp/fred", 10 );
|
||||
assert( status == -1);
|
||||
rtems_test_assert( status == -1);
|
||||
|
||||
rtems_status = rtems_io_register_name( "/dev/console", 0, 0 );
|
||||
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
* A test support function which performs a crude version of
|
||||
* "cat" so you can look at specific parts of a file.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
@@ -15,8 +23,6 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <pmacros.h>
|
||||
|
||||
/*
|
||||
@@ -41,7 +47,7 @@ void test_cat(
|
||||
off_t offset = (off_t)offset_arg;
|
||||
|
||||
my_length = (length) ? length : sizeof( test_cat_buffer );
|
||||
assert( my_length <= sizeof( test_cat_buffer ) );
|
||||
rtems_test_assert( my_length <= sizeof( test_cat_buffer ) );
|
||||
|
||||
fd = open( file, O_RDONLY );
|
||||
if ( fd == -1 ) {
|
||||
@@ -51,7 +57,7 @@ void test_cat(
|
||||
|
||||
for ( ;; ) {
|
||||
status = lseek( fd, offset, SEEK_SET );
|
||||
assert( status != -1 );
|
||||
rtems_test_assert( status != -1 );
|
||||
|
||||
status = read( fd, test_cat_buffer, sizeof(test_cat_buffer) );
|
||||
if ( status <= 0 ) {
|
||||
@@ -79,5 +85,5 @@ void test_cat(
|
||||
}
|
||||
|
||||
status = close( fd );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
}
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
* The defined behavior is a seek() followed by a write() extends the file
|
||||
* and zero fills the new length part.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
@@ -19,8 +26,6 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <pmacros.h>
|
||||
|
||||
/*
|
||||
@@ -43,7 +48,7 @@ void test_extend(
|
||||
}
|
||||
|
||||
status = lseek( fd, offset - 1, SEEK_SET );
|
||||
assert( status != -1 );
|
||||
rtems_test_assert( status != -1 );
|
||||
|
||||
status = write( fd, &c, 1 );
|
||||
if ( status == -1 ) {
|
||||
@@ -58,5 +63,5 @@ void test_extend(
|
||||
}
|
||||
|
||||
status = close( fd );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
}
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
* A test support function which performs a write() and
|
||||
* handles implied open(), lseek(), write(), and close() operations.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
@@ -14,8 +21,6 @@
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <pmacros.h>
|
||||
|
||||
/*
|
||||
@@ -42,7 +47,7 @@ void test_write(
|
||||
}
|
||||
|
||||
status = lseek( fd, offset, SEEK_SET );
|
||||
assert( status != -1 );
|
||||
rtems_test_assert( status != -1 );
|
||||
|
||||
status = write( fd, buffer, length );
|
||||
if ( status == -1 ) {
|
||||
@@ -57,5 +62,5 @@ void test_write(
|
||||
}
|
||||
|
||||
status = close( fd );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
}
|
||||
|
||||
@@ -26,48 +26,48 @@ void *POSIX_Init(
|
||||
/* test getitimer stub */
|
||||
puts( "getitimer -- bad which - EINVAL " );
|
||||
status = getitimer( 1234, &itimer );
|
||||
assert( status == -1 && errno == EINVAL );
|
||||
rtems_test_assert( status == -1 && errno == EINVAL );
|
||||
|
||||
puts( "getitimer -- NULL pointer - EFAULT " );
|
||||
status = getitimer( ITIMER_REAL, NULL );
|
||||
assert( status == -1 && errno == EFAULT );
|
||||
rtems_test_assert( status == -1 && errno == EFAULT );
|
||||
|
||||
puts( "getitimer -- ITIMER_REAL - ENOSYS " );
|
||||
status = getitimer( ITIMER_REAL, &itimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
puts( "getitimer -- ITIMER_VIRTUAL - ENOSYS " );
|
||||
status = getitimer( ITIMER_VIRTUAL, &itimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
puts( "getitimer -- ITIMER_PROF - ENOSYS " );
|
||||
status = getitimer( ITIMER_PROF, &itimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
/* test setitimer stub */
|
||||
puts( "setitimer -- bad which - EINVAL " );
|
||||
status = setitimer( 1234, &itimer, &otimer );
|
||||
assert( status == -1 && errno == EINVAL );
|
||||
rtems_test_assert( status == -1 && errno == EINVAL );
|
||||
|
||||
puts( "setitimer -- NULL value pointer - EFAULT " );
|
||||
status = setitimer( ITIMER_REAL, NULL, &otimer );
|
||||
assert( status == -1 && errno == EFAULT );
|
||||
rtems_test_assert( status == -1 && errno == EFAULT );
|
||||
|
||||
puts( "setitimer -- NULL value pointer - EFAULT " );
|
||||
status = setitimer( ITIMER_REAL, &itimer, NULL );
|
||||
assert( status == -1 && errno == EFAULT );
|
||||
rtems_test_assert( status == -1 && errno == EFAULT );
|
||||
|
||||
puts( "setitimer -- ITIMER_REAL - ENOSYS " );
|
||||
status = setitimer( ITIMER_REAL, &itimer, &otimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
puts( "setitimer -- ITIMER_VIRTUAL - ENOSYS " );
|
||||
status = setitimer( ITIMER_VIRTUAL, &itimer, &otimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
puts( "setitimer -- ITIMER_PROF - ENOSYS " );
|
||||
status = setitimer( ITIMER_PROF, &itimer, &otimer );
|
||||
assert( status == -1 && errno == ENOSYS );
|
||||
rtems_test_assert( status == -1 && errno == ENOSYS );
|
||||
|
||||
puts( "*** END OF POSIX TEST ITIMER ***" );
|
||||
rtems_test_exit(0);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -34,14 +34,14 @@ void *Task_1(
|
||||
status = pthread_setspecific( Key_id[0], (void *)&Data_array[ 1 ] );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
key_data = pthread_getspecific( Key_id[0] );
|
||||
printf( "Task_1: Got the key value of %ld\n",
|
||||
(unsigned long) ((uint32_t *)key_data - Data_array) );
|
||||
if ( status )
|
||||
printf( "status = %d\n", status );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "Task_1: exitting" );
|
||||
pthread_exit( NULL );
|
||||
|
||||
@@ -30,13 +30,13 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init - rtems_workspace_get_information - OK" );
|
||||
sb = rtems_workspace_get_information( &start );
|
||||
assert( sb );
|
||||
rtems_test_assert( sb );
|
||||
|
||||
#if 0
|
||||
printf( "Init - workspace free = %d\n", start.Free.largest );
|
||||
printf( "Init - workspace free blocks = %d\n", start.Free.number );
|
||||
#endif
|
||||
assert( start.Free.number == 1 );
|
||||
rtems_test_assert( start.Free.number == 1 );
|
||||
to_alloc = start.Free.largest;
|
||||
|
||||
/* find the largest we can actually allocate */
|
||||
@@ -57,15 +57,15 @@ void *POSIX_Init(
|
||||
* Verify heap is still in same shape if we couldn't allocate a task
|
||||
*/
|
||||
sb = rtems_workspace_get_information( &info );
|
||||
assert( sb );
|
||||
assert( info.Free.largest == start.Free.largest );
|
||||
assert( info.Free.number == start.Free.number );
|
||||
rtems_test_assert( sb );
|
||||
rtems_test_assert( info.Free.largest == start.Free.largest );
|
||||
rtems_test_assert( info.Free.number == start.Free.number );
|
||||
|
||||
puts( "Init - pthread_key_create - ENOMEM" );
|
||||
while (1) {
|
||||
|
||||
sb = rtems_workspace_allocate( to_alloc, &alloced );
|
||||
assert( sb );
|
||||
rtems_test_assert( sb );
|
||||
|
||||
sc = pthread_key_create( &key, NULL );
|
||||
|
||||
@@ -88,9 +88,9 @@ void *POSIX_Init(
|
||||
printf( "Init - workspace free/blocks = %d/%d\n",
|
||||
info.Free.largest, info.Free.number );
|
||||
#endif
|
||||
assert( sb );
|
||||
assert( info.Free.largest == start.Free.largest );
|
||||
assert( info.Free.number == start.Free.number );
|
||||
rtems_test_assert( sb );
|
||||
rtems_test_assert( info.Free.largest == start.Free.largest );
|
||||
rtems_test_assert( info.Free.number == start.Free.number );
|
||||
|
||||
to_alloc -= 8;
|
||||
if ( to_alloc == 0 )
|
||||
@@ -105,7 +105,7 @@ void *POSIX_Init(
|
||||
*/
|
||||
puts( "Init - pthread_key_delete - OK" );
|
||||
sc = pthread_key_delete( key );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
puts( "Init - verify workspace has same memory" );
|
||||
sb = rtems_workspace_get_information( &info );
|
||||
@@ -113,9 +113,9 @@ void *POSIX_Init(
|
||||
printf( "Init - workspace free/blocks = %d/%d\n",
|
||||
info.Free.largest, info.Free.number );
|
||||
#endif
|
||||
assert( sb );
|
||||
assert( info.Free.largest == start.Free.largest );
|
||||
assert( info.Free.number == start.Free.number );
|
||||
rtems_test_assert( sb );
|
||||
rtems_test_assert( info.Free.largest == start.Free.largest );
|
||||
rtems_test_assert( info.Free.number == start.Free.number );
|
||||
|
||||
puts( "*** END OF TEST KEY 02 ***" );
|
||||
rtems_test_exit(0);
|
||||
|
||||
@@ -30,7 +30,7 @@ void *Test_Thread(
|
||||
|
||||
puts( "Test_Thread - pthread_setspecific - OK" );
|
||||
sc = pthread_setspecific( Key, key_value );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Test_Thread - pthread_exit to run key destructors - OK" );
|
||||
return NULL;
|
||||
@@ -51,21 +51,21 @@ void *POSIX_Init(
|
||||
*/
|
||||
puts( "Init - pthread_key_create with NULL destructor - OK" );
|
||||
sc = pthread_key_create( &Key, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - pthread_create - OK" );
|
||||
sc = pthread_create( &thread, NULL, Test_Thread, &sc );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - sleep - let thread run - OK" );
|
||||
delay_request.tv_sec = 0;
|
||||
delay_request.tv_nsec = 5 * 100000000;
|
||||
sc = nanosleep( &delay_request, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - pthread_key_delete - OK" );
|
||||
sc = pthread_key_delete( Key );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
/*
|
||||
* Key with non-NULL destructor
|
||||
@@ -73,22 +73,22 @@ void *POSIX_Init(
|
||||
destructor_ran = false;
|
||||
puts( "Init - pthread_key_create with non-NULL destructor - OK" );
|
||||
sc = pthread_key_create( &Key, destructor );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - pthread_create - OK" );
|
||||
sc = pthread_create( &thread, NULL, Test_Thread, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - sleep - let thread run - OK" );
|
||||
sc = nanosleep( &delay_request, NULL );
|
||||
assert( !sc );
|
||||
rtems_test_assert( !sc );
|
||||
|
||||
puts( "Init - verify destructor did NOT ran" );
|
||||
assert( destructor_ran == false );
|
||||
rtems_test_assert( destructor_ran == false );
|
||||
|
||||
puts( "Init - pthread_key_delete - OK" );
|
||||
sc = pthread_key_delete( Key );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
puts( "*** END OF TEST KEY 03 ***" );
|
||||
rtems_test_exit(0);
|
||||
|
||||
@@ -15,17 +15,22 @@
|
||||
* implementation of this appears to seek to the ((off/DIRENT_SIZE) + 1)
|
||||
* record where DIRENT_SIZE seems to be 12 bytes.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <rtems.h>
|
||||
@@ -127,23 +132,23 @@ int main(
|
||||
|
||||
printf("create /b/my_file\n");
|
||||
fd = open ("/b/my_file", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
assert( fd != 0 );
|
||||
rtems_test_assert( fd != 0 );
|
||||
close (fd);
|
||||
|
||||
printf("Verify /b/my_file\n");
|
||||
fd = open("/b/my_file", S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
assert( fd != 0 );
|
||||
rtems_test_assert( fd != 0 );
|
||||
close( fd );
|
||||
|
||||
|
||||
printf("create c/y/my_mount_point/my_dir/d\n");
|
||||
fd = open ("c/y/my_mount_point/my_dir/d", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
assert( fd != 0 );
|
||||
rtems_test_assert( fd != 0 );
|
||||
close (fd);
|
||||
|
||||
printf("Verify c/y/my_mount_point/my_dir/d\n");
|
||||
fd = open("c/y/my_mount_point/my_dir/d", S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
assert( fd != 0 );
|
||||
rtems_test_assert( fd != 0 );
|
||||
close( fd );
|
||||
|
||||
/*
|
||||
@@ -157,7 +162,7 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_WRITE,
|
||||
NULL,
|
||||
mount_point_string );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
if( mt_entry == NULL ){
|
||||
printf(" NULL mount table entry was returned\n");
|
||||
}
|
||||
@@ -218,8 +223,8 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_WRITE,
|
||||
NULL,
|
||||
mount_point_string );
|
||||
assert( status == -1 );
|
||||
assert( errno == EINVAL );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/*
|
||||
* Verify mount with option of -62 fails with EINVAL
|
||||
@@ -232,8 +237,8 @@ int main(
|
||||
-62,
|
||||
NULL,
|
||||
"/c/y/my_mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EINVAL );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EINVAL );
|
||||
|
||||
/*
|
||||
* Mount a Read Only File system.
|
||||
@@ -246,7 +251,7 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_ONLY,
|
||||
NULL,
|
||||
"/c/y/my_mount_point" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
if( mt_entry == NULL ){
|
||||
printf(" NULL mount table entry was returned\n");
|
||||
}
|
||||
@@ -260,11 +265,11 @@ int main(
|
||||
|
||||
printf("create c/y/my_mount_point/../../y/my_mount_point/new_dir\n");
|
||||
status = mkdir("c/y/my_mount_point/../../y/my_mount_point/new_dir",S_IRWXU );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
status = stat("c/y/my_mount_point/../../y/my_mount_point/new_dir",&statbuf );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
status = stat("c/y/my_mount_point/new_dir/..", &statbuf );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Attempt to mount a second file system at a used mount point.
|
||||
@@ -277,8 +282,8 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_ONLY,
|
||||
NULL,
|
||||
"/c/y/my_mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EBUSY);
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EBUSY);
|
||||
|
||||
/*
|
||||
* Attempt to mount at a file.
|
||||
@@ -291,8 +296,8 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_ONLY,
|
||||
NULL,
|
||||
"/b/my_file" );
|
||||
assert( status == -1 );
|
||||
assert( errno == ENOTDIR );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == ENOTDIR );
|
||||
|
||||
|
||||
/*
|
||||
@@ -301,15 +306,15 @@ int main(
|
||||
|
||||
printf("Create and chdir to /c/y/my_mount_point/mydir\n");
|
||||
status = mkdir( "/c/y/my_mount_point/mydir", 0777);
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
status = chdir( "/c/y/my_mount_point/mydir" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("unmount of /c/y/my_mount_point should fail with EBUSY\n");
|
||||
status = unmount( "/c/y/my_mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EBUSY );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EBUSY );
|
||||
|
||||
/*
|
||||
* Chdir to root and verify we can unmount the file system now.
|
||||
@@ -317,11 +322,11 @@ int main(
|
||||
|
||||
printf("chdir to / and verify we can unmount /c/y/my_mount_point\n");
|
||||
status = chdir( "/" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("unmount /c/y/my_mount_point \n");
|
||||
status = unmount( "/c/y/my_mount_point" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Attempt to unmount a directory that does not exist.
|
||||
@@ -329,8 +334,8 @@ int main(
|
||||
|
||||
printf("unmount /b/mount_point should fail with EINVAL\n");
|
||||
status = unmount( "/b/mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == ENOENT );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == ENOENT );
|
||||
|
||||
/*
|
||||
* Remount the filesystem.
|
||||
@@ -343,7 +348,7 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_ONLY,
|
||||
NULL,
|
||||
"/c/y/my_mount_point" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Create a file and directory then open the directory.
|
||||
@@ -352,24 +357,24 @@ int main(
|
||||
|
||||
printf("Create and open /c/y/my_mount_point/my_file\n");
|
||||
fd = open( "/c/y/my_mount_point/my_file", O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
status = close( fd );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("\nmkdir /c/y/my_mount_point/my_dir\n");
|
||||
status = mkdir( "/c/y/my_mount_point/my_dir", 0x1c0 );
|
||||
printf("Open /c/y/my_mount_point/my_dir\n");
|
||||
directory = opendir( "/c/y/my_mount_point/my_dir" );
|
||||
assert( directory );
|
||||
rtems_test_assert( directory );
|
||||
|
||||
printf("Unmount /c/y/my_mount_point should fail with EBUSY\n");
|
||||
status = unmount( "/c/y/my_mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EBUSY );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EBUSY );
|
||||
|
||||
printf("Close /c/y/my_mount_point/my_dir\n");
|
||||
status = closedir( directory );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Attempt to unmount a directory that is not a mount point.
|
||||
@@ -377,8 +382,8 @@ int main(
|
||||
|
||||
printf("Unmount /c/y/my_mount_point/my_dir should fail with EACCES\n");
|
||||
status = unmount( "/c/y/my_mount_point/my_dir" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EACCES );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EACCES );
|
||||
|
||||
/*
|
||||
* Verify a file system can not be unmounted with a mounted file system
|
||||
@@ -392,12 +397,12 @@ int main(
|
||||
RTEMS_FILESYSTEM_READ_WRITE,
|
||||
NULL,
|
||||
"/c/y/my_mount_point/my_dir");
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("unmount /c/y/my_mount_point should fail with EBUSY\n");
|
||||
status = unmount( "/c/y/my_mount_point" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EBUSY );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EBUSY );
|
||||
|
||||
/*
|
||||
* Verify you cannot create a hard link across mounted file systems.
|
||||
@@ -405,11 +410,11 @@ int main(
|
||||
|
||||
printf("Verify a hard link across filesystems fails with EXDEV\n");
|
||||
status = mkdir( "/c/y/my_mount_point/my_dir2", S_IRWXU );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
status = link( "/c/y/my_mount_point/my_dir2", "/c/y/my_mount_point/my_dir/my_link" );
|
||||
assert( status == -1 );
|
||||
assert( errno == EXDEV );
|
||||
rtems_test_assert( status == -1 );
|
||||
rtems_test_assert( errno == EXDEV );
|
||||
|
||||
/*
|
||||
* Create a symbolic link across mountpoints.
|
||||
@@ -417,13 +422,13 @@ int main(
|
||||
|
||||
printf("Verify a symbolic link across file systems works\n");
|
||||
status = symlink( "/c/y/my_mount_point/my_dir2", "/c/y/my_mount_point/my_dir/my_link" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
status = stat( "/c/y/my_mount_point/my_dir/my_link", &statbuf );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("unmount /c/y/my_mount_point/my_dir\n");
|
||||
status = unmount( "/c/y/my_mount_point/my_dir" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*
|
||||
* Verify symblic link no longer works.
|
||||
@@ -431,11 +436,11 @@ int main(
|
||||
|
||||
printf("Verify the symbolic link now fails\n");
|
||||
status = stat( "/c/y/my_mount_point/my_dir/my_link", &statbuf );
|
||||
assert( status != 0 );
|
||||
rtems_test_assert( status != 0 );
|
||||
|
||||
printf("unmount /c/y/my_mount_point\n");
|
||||
status = unmount( "/c/y/my_mount_point" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf( "\n\n*** END OF MOUNT/UNMOUNT TEST ***\n" );
|
||||
rtems_test_exit(0);
|
||||
|
||||
@@ -130,7 +130,7 @@ void open_test_queues(void)
|
||||
else
|
||||
Test_q[que].mq = mq_open( tq->name, tq->oflag, 0x777, &attr );
|
||||
|
||||
assert( Test_q[que].mq != (-1) );
|
||||
rtems_test_assert( Test_q[que].mq != (-1) );
|
||||
}
|
||||
|
||||
status = mq_close( Test_q[NUMBER_OF_TEST_QUEUES].mq );
|
||||
@@ -223,7 +223,7 @@ void validate_mq_open_error_codes(void)
|
||||
puts( "Init: mq_open - Create an Existing mq (EEXIST)" );
|
||||
open_mq[0] = mq_open(
|
||||
Build_Queue_Name(0), O_CREAT | O_RDWR | O_NONBLOCK, 0x777, NULL );
|
||||
assert( open_mq[0] != (-1) );
|
||||
rtems_test_assert( open_mq[0] != (-1) );
|
||||
|
||||
n_mq2 = mq_open(
|
||||
Build_Queue_Name(0), O_CREAT | O_EXCL | O_RDONLY, 0x777, NULL);
|
||||
@@ -245,8 +245,8 @@ void validate_mq_open_error_codes(void)
|
||||
for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES; i++) {
|
||||
open_mq[i] = mq_open(
|
||||
Build_Queue_Name(i), O_CREAT | O_RDWR | O_NONBLOCK, 0x777, NULL );
|
||||
assert( open_mq[i] != (-1) );
|
||||
assert( open_mq[i] );
|
||||
rtems_test_assert( open_mq[i] != (-1) );
|
||||
rtems_test_assert( open_mq[i] );
|
||||
/*XXX - Isn't there a more general check */
|
||||
/* JRS printf( "mq_open 0x%x %s\n", open_mq[i], Build_Queue_Name(i) ); */
|
||||
}
|
||||
@@ -494,7 +494,7 @@ void Read_msg_from_que(
|
||||
sprintf( err_msg, "%s msg %s size failure", Test_q[ que ].name, ptr->msg );
|
||||
fatal_int_service_status( status, ptr->size, err_msg );
|
||||
|
||||
assert( !strcmp( message, ptr->msg ) );
|
||||
rtems_test_assert( !strcmp( message, ptr->msg ) );
|
||||
strcpy( message, "No Message" );
|
||||
|
||||
sprintf( err_msg,"%s msg %s size failure", Test_q[ que ].name, ptr->msg );
|
||||
@@ -683,7 +683,7 @@ void verify_open_functionality(void)
|
||||
puts( "Init: mq_open - Open an existing mq ( same id )" );
|
||||
n_mq = mq_open( RD_NAME, 0 );
|
||||
fatal_posix_service_status(
|
||||
assert( n_mq == Test_q[RD_QUEUE].mq );
|
||||
rtems_test_assert( n_mq == Test_q[RD_QUEUE].mq );
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -704,8 +704,8 @@ void verify_unlink_functionality(void)
|
||||
fatal_posix_service_status( status, 0, "mq_unlink locked message queue");
|
||||
|
||||
n_mq = mq_open( DEFAULT_NAME, DEFAULT_ATTR, 0x777, NULL );
|
||||
assert( n_mq != (-1) );
|
||||
assert( n_mq != Test_q[ DEFAULT_RW ].mq );
|
||||
rtems_test_assert( n_mq != (-1) );
|
||||
rtems_test_assert( n_mq != Test_q[ DEFAULT_RW ].mq );
|
||||
|
||||
|
||||
status = mq_unlink( DEFAULT_NAME );
|
||||
@@ -888,10 +888,10 @@ void wait_for_signal(
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
status = sigemptyset( waitset );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
status = sigaddset( waitset, SIGUSR1 );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
printf( "waiting on any signal for %d seconds.\n", sec );
|
||||
signo = sigtimedwait( waitset, &siginfo, &timeout );
|
||||
@@ -1007,7 +1007,7 @@ void verify_with_threads(void)
|
||||
|
||||
Start_Test( "multi-thread Task 4 Receive Test" );
|
||||
status = pthread_create( &id, NULL, Task_4, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "Init: mq_receive - Empty queue changes to non-blocking (EAGAIN)" );
|
||||
status = mq_receive( Test_q[BLOCKING].mq, message, 100, &priority );
|
||||
fatal_int_service_status( status, -1, "mq_receive error return status");
|
||||
@@ -1022,7 +1022,7 @@ void verify_with_threads(void)
|
||||
|
||||
Start_Test( "multi-thread Task 1 Test" );
|
||||
status = pthread_create( &id, NULL, Task_1, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
Read_msg_from_que( BLOCKING, 0 ); /* Block until init writes */
|
||||
print_current_time( "Init: ", "" );
|
||||
|
||||
@@ -1036,7 +1036,7 @@ void verify_with_threads(void)
|
||||
Start_Test( "multi-thread Task 4 Send Test" );
|
||||
fill_message_queues( "Init:" );
|
||||
status = pthread_create( &id, NULL, Task_4, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "Init: mq_send - Full queue changes to non-blocking (EAGAIN)" );
|
||||
status = mq_send(Test_q[BLOCKING].mq, message, 0, 0 );
|
||||
fatal_posix_service_status( status, -1, "mq_send error return status");
|
||||
@@ -1051,7 +1051,7 @@ void verify_with_threads(void)
|
||||
Start_Test( "multi-thread Task 2 Test" );
|
||||
fill_message_queues( "Init:" );
|
||||
status = pthread_create( &id, NULL, Task_2, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
Show_send_msg_to_que( "Init:", BLOCKING, Priority_Order[0] );
|
||||
print_current_time( "Init: ", "" );
|
||||
verify_queues_full( "Init:" );
|
||||
@@ -1065,7 +1065,7 @@ void verify_with_threads(void)
|
||||
Start_Test( "multi-thread Task 3 Test" );
|
||||
fill_message_queues( "Init:" );
|
||||
status = pthread_create( &id, NULL, Task_3, NULL );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "Init: mq_send - Block while thread deletes queue (EBADF)" );
|
||||
ptr = &Predefined_Msgs[0];
|
||||
status = mq_send( Test_q[BLOCKING].mq, ptr->msg, ptr->size , ptr->priority );
|
||||
@@ -1271,7 +1271,7 @@ void *Task_1 (
|
||||
|
||||
/* switch to Init */
|
||||
|
||||
assert( 0 );
|
||||
rtems_test_assert( 0 );
|
||||
return NULL; /* just so the compiler thinks we returned something */
|
||||
}
|
||||
|
||||
|
||||
@@ -55,14 +55,14 @@ void *POSIX_Init(
|
||||
if ( Queue == (-1) ) {
|
||||
perror( "mq_open failed" );
|
||||
}
|
||||
assert( Queue != (-1) );
|
||||
rtems_test_assert( Queue != (-1) );
|
||||
|
||||
puts( "Init - send to message queue" );
|
||||
status = mq_send( Queue, (const char *)&status, sizeof(int), 1 );
|
||||
if ( status == (-1) ) {
|
||||
perror( "mq_status failed" );
|
||||
}
|
||||
assert( status != (-1) );
|
||||
rtems_test_assert( status != (-1) );
|
||||
|
||||
/*
|
||||
* Now create the timer we will send to a full queue from.
|
||||
|
||||
@@ -43,29 +43,29 @@ void *POSIX_Init(
|
||||
Queue = mq_open( "Queue", O_CREAT | O_RDWR, 0x777, &attr );
|
||||
if ( Queue == (-1) )
|
||||
perror( "mq_open failed" );
|
||||
assert( Queue != (-1) );
|
||||
rtems_test_assert( Queue != (-1) );
|
||||
|
||||
puts( "Init - Open message queue instance 2 - FAIL - ENFILE " );
|
||||
second_Queue = mq_open( "Queue2", O_CREAT | O_RDWR, 0x777, &attr );
|
||||
if ( second_Queue != (-1) )
|
||||
puts( "mq_open did not failed" );
|
||||
assert( second_Queue == (-1) );
|
||||
assert( errno == ENFILE );
|
||||
rtems_test_assert( second_Queue == (-1) );
|
||||
rtems_test_assert( errno == ENFILE );
|
||||
|
||||
puts( "Init - Unlink message queue instance 1" );
|
||||
sc = mq_unlink( "Queue" );
|
||||
if ( sc != 0 )
|
||||
perror( "mq_unlink failed" );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
puts( "Init - Close message queue instance 1" );
|
||||
sc = mq_close( Queue );
|
||||
if ( sc != 0 )
|
||||
perror( "mq_close failed" );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
sb = rtems_workspace_get_information( &start );
|
||||
assert( start.Free.number == 1 );
|
||||
rtems_test_assert( start.Free.number == 1 );
|
||||
to_alloc = start.Free.largest;
|
||||
|
||||
/* find the largest we can actually allocate */
|
||||
@@ -91,7 +91,7 @@ void *POSIX_Init(
|
||||
name = Get_Longest_Name();
|
||||
while ( attr.mq_msgsize > 0 ) {
|
||||
sb = rtems_workspace_allocate( to_alloc, &alloced );
|
||||
assert( sb );
|
||||
rtems_test_assert( sb );
|
||||
|
||||
second_Queue = mq_open(name,O_CREAT | O_RDWR, 0x777, &attr );
|
||||
|
||||
@@ -114,13 +114,13 @@ void *POSIX_Init(
|
||||
sc = mq_unlink( name );
|
||||
if ( sc != 0 )
|
||||
perror( "mq_unlink failed" );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
puts( "Init - Close message queue" );
|
||||
sc = mq_close( second_Queue );
|
||||
if ( sc != 0 )
|
||||
perror( "mq_close failed" );
|
||||
assert( sc == 0 );
|
||||
rtems_test_assert( sc == 0 );
|
||||
|
||||
puts( "*** END OF POSIX MESSAGE QUEUE TEST 4 ***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
* implementation of this appears to seek to the ((off/DIRENT_SIZE) + 1)
|
||||
* record where DIRENT_SIZE seems to be 12 bytes.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
@@ -25,11 +30,9 @@
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <rtems/imfs.h>
|
||||
#include <assert.h>
|
||||
|
||||
DIR *directory;
|
||||
DIR *directory2;
|
||||
@@ -71,7 +74,7 @@ void complete_printdir( char *path )
|
||||
int status;
|
||||
|
||||
the_dir = opendir( path );
|
||||
assert( the_dir );
|
||||
rtems_test_assert( the_dir );
|
||||
printdir( the_dir );
|
||||
status = closedir( the_dir );
|
||||
}
|
||||
@@ -188,8 +191,8 @@ void test_across_mount(void)
|
||||
*/
|
||||
|
||||
printf("Validate readdir across mount point\n");
|
||||
assert( mkdir( "/imfs", 0777 ) == 0 );
|
||||
assert( mkdir( "/imfs/should_be_hidden", 0777 ) == 0 );
|
||||
rtems_test_assert( mkdir( "/imfs", 0777 ) == 0 );
|
||||
rtems_test_assert( mkdir( "/imfs/should_be_hidden", 0777 ) == 0 );
|
||||
complete_printdir("/imfs" );
|
||||
printf("Attempting to mount IMFS file system at /imfs \n");
|
||||
status = mount(
|
||||
@@ -198,16 +201,16 @@ void test_across_mount(void)
|
||||
RTEMS_FILESYSTEM_READ_WRITE,
|
||||
NULL,
|
||||
"/imfs" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
if( mt_entry == NULL ){
|
||||
printf(" NULL mount table entry was returned\n");
|
||||
}
|
||||
printf( "create /imfs/testdir and /imfs/testdir/testsubdir\n");
|
||||
|
||||
status = mkdir( "/imfs/testdir", 0777 );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
status = mkdir( "/imfs/testdir/testsubdir", 0777 );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
complete_printdir("/imfs" );
|
||||
complete_printdir("/imfs/" );
|
||||
@@ -273,7 +276,7 @@ int main(
|
||||
|
||||
printf("open /b/myfile\n");
|
||||
fd = open ("/b/my_file", O_CREAT, S_IRWXU);
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
close (fd);
|
||||
|
||||
printf("scandir a file status: ");
|
||||
@@ -287,20 +290,20 @@ int main(
|
||||
|
||||
printf("Open /b/new_file\n");
|
||||
fd = open( "/b/new_file", O_CREAT, S_IRWXU );
|
||||
assert( fd != -1 );
|
||||
rtems_test_assert( fd != -1 );
|
||||
|
||||
printf("fcntl F_SETFD should return 0\n");
|
||||
status = fcntl( fd, F_SETFD, 1 );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf("fcntl F_SETFD should return 1\n");
|
||||
status = fcntl( fd, F_GETFD, 1 );
|
||||
assert( status == 1 );
|
||||
rtems_test_assert( status == 1 );
|
||||
|
||||
#if 0
|
||||
printf("fcntl F_DUPFD should return 0\n");
|
||||
status = fcntl( fd, F_DUPFD, 0 );
|
||||
assert ( status == 0 );
|
||||
rtems_test_assert ( status == 0 );
|
||||
#else
|
||||
printf("fcntl F_DUPFD should return 0 -- skip until implemented\n");
|
||||
#endif
|
||||
@@ -308,41 +311,41 @@ int main(
|
||||
printf("fcntl F_GETFL returns current flags\n");
|
||||
status = fcntl( fd, F_GETFL, 1 );
|
||||
printf("fcntl F_GETFL returned 0x%x\n", status );
|
||||
assert( status != -1 );
|
||||
rtems_test_assert( status != -1 );
|
||||
|
||||
printf("fcntl F_SETFL to add O_APPEND and O_NONBLOCK\n");
|
||||
status = fcntl( fd, F_SETFL, O_APPEND|O_NONBLOCK );
|
||||
assert ( status != -1 );
|
||||
rtems_test_assert ( status != -1 );
|
||||
|
||||
printf("fcntl F_GETFL return current flags to see changes\n");
|
||||
status = fcntl( fd, F_GETFL, 1 );
|
||||
printf("fcntl F_GETFL returned 0x%x\n", status );
|
||||
assert( status != -1 );
|
||||
rtems_test_assert( status != -1 );
|
||||
|
||||
printf("fcntl F_GETLK should return -1\n");
|
||||
status = fcntl( fd, F_GETLK, 1 );
|
||||
assert ( status == -1 );
|
||||
rtems_test_assert ( status == -1 );
|
||||
|
||||
printf("fcntl F_SETLK should return -1\n");
|
||||
status = fcntl( fd, F_SETLK, 1 );
|
||||
assert ( status == -1 );
|
||||
rtems_test_assert ( status == -1 );
|
||||
|
||||
printf("fcntl F_SETLKW should return -1\n");
|
||||
status = fcntl( fd, F_SETLKW, 1 );
|
||||
assert ( status == -1 );
|
||||
rtems_test_assert ( status == -1 );
|
||||
|
||||
printf("fcntl F_SETOWN should return -1\n");
|
||||
status = fcntl( fd, F_SETOWN, 1 );
|
||||
assert ( status == -1 );
|
||||
rtems_test_assert ( status == -1 );
|
||||
|
||||
printf("fcntl F_GETOWN should return -1\n");
|
||||
status = fcntl( fd, F_GETOWN, 1 );
|
||||
assert ( status == -1 );
|
||||
rtems_test_assert ( status == -1 );
|
||||
|
||||
printf("fcntl invalid argument should return -1\n");
|
||||
status = fcntl( fd, 0xb, 1 );
|
||||
printf("Status %d\n",status);
|
||||
assert( status == -1 );
|
||||
rtems_test_assert( status == -1 );
|
||||
|
||||
printf("opendir and readdir /b/myfile\n");
|
||||
directory_not = opendir ("/b/my_file");
|
||||
@@ -354,7 +357,7 @@ int main(
|
||||
|
||||
printf("chdir to /b/myfile\n");
|
||||
status = chdir ("/b/my_file");
|
||||
assert (status == -1);
|
||||
rtems_test_assert (status == -1);
|
||||
|
||||
printf( "\nPerforming stat of directory /\n");
|
||||
status = stat( "/", &s );
|
||||
@@ -362,18 +365,18 @@ int main(
|
||||
|
||||
puts( "\nOpen and print directory /" );
|
||||
directory = opendir("/");
|
||||
assert( directory );
|
||||
rtems_test_assert( directory );
|
||||
printdir(directory);
|
||||
|
||||
printf("\nmkdir /d/my_dir\n");
|
||||
status = mkdir( "/d/my_dir", 0x1c0 );
|
||||
printf("Open /d/my_dir\n");
|
||||
directory_not = opendir( "/d/my_dir" );
|
||||
assert( directory_not );
|
||||
rtems_test_assert( directory_not );
|
||||
|
||||
printf( "remove /d/my_dir.\n" );
|
||||
status = rmdir( "/d/my_dir" );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
printf( "close /d/my_dir.\n" );
|
||||
closedir( directory_not );
|
||||
@@ -381,14 +384,14 @@ int main(
|
||||
printf( "\nOpening directory /c\n" );
|
||||
directory2 = opendir("/c");
|
||||
|
||||
assert( directory2 );
|
||||
rtems_test_assert( directory2 );
|
||||
|
||||
printdir(directory2);
|
||||
status = closedir( directory2 );
|
||||
|
||||
printf( "\nOpening directory /c/y\n" );
|
||||
directory3 = opendir("/c/y");
|
||||
assert( directory3 );
|
||||
rtems_test_assert( directory3 );
|
||||
printdir(directory3);
|
||||
status = closedir( directory3 );
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* This test exercises the POSIX RWLock manager.
|
||||
*
|
||||
* COPYRIGHT (c) 1989-2006.
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
@@ -11,7 +11,6 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
@@ -37,11 +36,11 @@ void *ReadLockThread(void *arg)
|
||||
|
||||
puts( "ReadThread - pthread_rwlock_rdlock(RWLock) blocking -- OK" );
|
||||
status = pthread_rwlock_rdlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "ReadThread - pthread_rwlock_rdlock(RWLock) unblocked -- OK" );
|
||||
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -54,14 +53,14 @@ void *WriteLockThread(void *arg)
|
||||
|
||||
puts( "WriteThread - pthread_rwlock_wrlock(RWLock) blocking -- OK" );
|
||||
status = pthread_rwlock_wrlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
puts( "WriteThread - pthread_rwlock_wrlock(RWLock) unblocked -- OK" );
|
||||
|
||||
sleep( 1 );
|
||||
|
||||
puts( "WriteThread - pthread_rwlock_unlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -90,75 +89,75 @@ int main(
|
||||
/*************** NULL POINTER CHECKS *****************/
|
||||
puts( "pthread_rwlockattr_init( NULL ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_init( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_setpshared( NULL, private ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_setpshared( NULL, PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_setpshared( NULL, shared ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_setpshared( NULL, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_getpshared( NULL, &p ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_getpshared( NULL, &p );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_destroy( NULL ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_destroy( NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** NOT INITIALIZED CHECKS *****************/
|
||||
/* cheat visibility */
|
||||
attr.is_initialized = 0;
|
||||
puts( "pthread_rwlockattr_setpshared( &attr, shared ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_getpshared( &attr, NULL ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_getpshared( &attr, NULL );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlockattr_destroy( &attr ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_destroy( &attr );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** BAD PSHARED CHECK *****************/
|
||||
puts( "pthread_rwlockattr_setpshared( &attr, private ) -- EINVAL" );
|
||||
status = pthread_rwlockattr_setpshared( &attr, ~PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** ACTUALLY WORK THIS TIME *****************/
|
||||
puts( "pthread_rwlockattr_init( &attr ) -- OK" );
|
||||
status = pthread_rwlockattr_init( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlockattr_setpshared( &attr, private ) -- OK" );
|
||||
status = pthread_rwlockattr_setpshared( &attr, PTHREAD_PROCESS_PRIVATE );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlockattr_getpshared( &attr, &p ) -- OK" );
|
||||
status = pthread_rwlockattr_getpshared( &attr, &p );
|
||||
assert( status == 0 );
|
||||
assert( p == PTHREAD_PROCESS_PRIVATE );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( p == PTHREAD_PROCESS_PRIVATE );
|
||||
|
||||
puts( "pthread_rwlockattr_setpshared( &attr, shared ) -- OK" );
|
||||
status = pthread_rwlockattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlockattr_getpshared( &attr, &p ) -- OK" );
|
||||
status = pthread_rwlockattr_getpshared( &attr, &p );
|
||||
assert( status == 0 );
|
||||
assert( p == PTHREAD_PROCESS_SHARED );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( p == PTHREAD_PROCESS_SHARED );
|
||||
|
||||
/*************** DESTROY/REUSE CHECK *****************/
|
||||
puts( "pthread_rwlockattr_destroy( &attr ) -- OK" );
|
||||
status = pthread_rwlockattr_destroy( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlockattr_getpshared( &attr, &p ) destroyed -- EINVAL" );
|
||||
status = pthread_rwlockattr_getpshared( &attr, &p );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** NULL ARGUMENT CHECKS *****************/
|
||||
abstime.tv_sec = 0;
|
||||
@@ -166,87 +165,87 @@ int main(
|
||||
|
||||
puts( "pthread_rwlock_init(NULL, &attr) -- EINVAL" );
|
||||
status = pthread_rwlock_init(NULL, &attr);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_destroy(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_destroy(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_rdlock(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_rdlock(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedrdlock( NULL, &abstime) -- EINVAL" );
|
||||
status = pthread_rwlock_timedrdlock( NULL, &abstime);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedrdlock( &rwlock, NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_timedrdlock( &rwlock, NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_tryrdlock(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_tryrdlock(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_wrlock(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_wrlock(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedwrlock( NULL, &abstime) -- EINVAL" );
|
||||
status = pthread_rwlock_timedwrlock( NULL, &abstime );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedwrlock( &rwlock, NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_timedwrlock( &rwlock, NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_trywrlock(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_trywrlock(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_unlock(NULL) -- EINVAL" );
|
||||
status = pthread_rwlock_unlock(NULL);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** BAD ID CHECK *****************/
|
||||
rwlock = 1;
|
||||
/* make a valid abstime */
|
||||
puts( "clock_gettime(CLOCK_REALTIME, &abstime) -- OK" );
|
||||
status = clock_gettime( CLOCK_REALTIME, &abstime );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
abstime.tv_sec += 5;
|
||||
|
||||
puts( "pthread_rwlock_destroy(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_destroy(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_rdlock(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_rdlock(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedrdlock(BadId, &abstime) -- EINVAL" );
|
||||
status = pthread_rwlock_timedrdlock( &rwlock, &abstime);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_tryrdlock(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_tryrdlock(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_wrlock(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_wrlock(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_timedwrlock(BadId, &abstime) -- EINVAL" );
|
||||
status = pthread_rwlock_timedwrlock( &rwlock, &abstime );
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_trywrlock(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_trywrlock(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
puts( "pthread_rwlock_unlock(BadId) -- EINVAL" );
|
||||
status = pthread_rwlock_unlock(&rwlock);
|
||||
assert( status == EINVAL );
|
||||
rtems_test_assert( status == EINVAL );
|
||||
|
||||
/*************** BAD ABSTIME CHECK *****************/
|
||||
|
||||
@@ -263,66 +262,66 @@ int main(
|
||||
/*************** ACTUALLY CREATE ONE CHECK *****************/
|
||||
puts( "pthread_rwlockattr_init( &attr ) -- OK" );
|
||||
status = pthread_rwlockattr_init( &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlock_init( &rwlock, &attr ) -- OK" );
|
||||
status = pthread_rwlock_init( &rwlock, &attr );
|
||||
assert( status == 0 );
|
||||
assert( rwlock != 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( rwlock != 0 );
|
||||
|
||||
puts( "pthread_rwlock_init( &rwlock, &attr ) -- EAGAIN" );
|
||||
status = pthread_rwlock_init( &rwlock, &attr );
|
||||
assert( status == EAGAIN );
|
||||
rtems_test_assert( status == EAGAIN );
|
||||
|
||||
puts( "pthread_rwlock_destroy( &rwlock ) -- OK" );
|
||||
status = pthread_rwlock_destroy( &rwlock );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/********* CREATE RWLOCK WITH DEFAULT ATTRIBUTES AND DESTROY IT *********/
|
||||
puts( "pthread_rwlock_init( &rwlock, NULL ) -- OK" );
|
||||
status = pthread_rwlock_init( &rwlock, NULL );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlock_destroy( &rwlock ) -- OK" );
|
||||
status = pthread_rwlock_destroy( &rwlock );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** CREATE THREADS AND LET THEM OBTAIN READLOCK ***************/
|
||||
puts( "pthread_rwlock_init( &RWLock, &attr ) -- OK" );
|
||||
status = pthread_rwlock_init( &RWLock, &attr );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlock_tryrdlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_tryrdlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
for (i=0 ; i<NUMBER_THREADS ; i++ ) {
|
||||
printf( "Init: pthread_create - thread %d OK\n", i+1 );
|
||||
status = pthread_create(&ThreadIds[i], NULL, ReadLockThread, &ThreadIds[i]);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
puts( "pthread_rwlock_unlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(1);
|
||||
|
||||
/*************** CREATE THREADS AND LET THEM OBTAIN READLOCK ***************/
|
||||
puts( "pthread_rwlock_trywrlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_trywrlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "pthread_rwlock_tryrdlock(&RWLock) -- EBUSY" );
|
||||
status = pthread_rwlock_tryrdlock(&RWLock);
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
|
||||
for (i=0 ; i<NUMBER_THREADS ; i++ ) {
|
||||
printf( "Init: pthread_create - thread %d OK\n", i+1 );
|
||||
status = pthread_create(&ThreadIds[i], NULL, ReadLockThread, &ThreadIds[i]);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
@@ -330,101 +329,101 @@ int main(
|
||||
/* Attempt delete while threads are blocked */
|
||||
puts( "pthread_rwlock_destroy( &RWLock ) -- EBUSY" );
|
||||
status = pthread_rwlock_destroy( &RWLock );
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
|
||||
/* now unlock it so the threads can continue */
|
||||
puts( "pthread_rwlock_unlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(2);
|
||||
|
||||
/*************** CREATE THREADS AND LET THEM OBTAIN WRITE LOCK *************/
|
||||
puts( "pthread_rwlock_trywrlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_trywrlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
puts( "pthread_rwlock_trywrlock(&RWLock) -- EBUSY" );
|
||||
status = pthread_rwlock_trywrlock(&RWLock);
|
||||
assert( status == EBUSY );
|
||||
rtems_test_assert( status == EBUSY );
|
||||
|
||||
for (i=0 ; i<NUMBER_THREADS ; i++ ) {
|
||||
printf( "Init: pthread_create - thread %d OK\n", i+1 );
|
||||
status =
|
||||
pthread_create(&ThreadIds[i], NULL, WriteLockThread, &ThreadIds[i]);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
puts( "pthread_rwlock_unlock(RWLock) -- OK" );
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
sleep(2);
|
||||
|
||||
/*************** TIMEOUT ON RWLOCK ***************/
|
||||
puts( "clock_gettime(CLOCK_REALTIME, &abstime) -- OK" );
|
||||
status = clock_gettime( CLOCK_REALTIME, &abstime );
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
abstime.tv_sec += 1;
|
||||
puts( "pthread_rwlock_timedwrlock( &RWLock, &abstime) -- OK" );
|
||||
status = pthread_rwlock_timedwrlock( &RWLock, &abstime );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
abstime.tv_sec += 1;
|
||||
puts( "pthread_rwlock_timedrdlock( &RWLock, &abstime) -- ETIMEDOUT" );
|
||||
status = pthread_rwlock_timedrdlock( &RWLock, &abstime );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
|
||||
abstime.tv_sec -= 1;
|
||||
puts( "pthread_rwlock_timedrdlock( &RWLock, &abstime) -- ETIMEDOUT" );
|
||||
status = pthread_rwlock_timedrdlock( &RWLock, &abstime );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
|
||||
abstime.tv_sec -= 1;
|
||||
puts( "pthread_rwlock_timedwrlock( &RWLock, &abstime) -- ETIMEDOUT" );
|
||||
status = pthread_rwlock_timedwrlock( &RWLock, &abstime );
|
||||
assert( status == ETIMEDOUT );
|
||||
rtems_test_assert( status == ETIMEDOUT );
|
||||
|
||||
/*************** OBTAIN RWLOCK WITH ABSTIME IN PAST ***************/
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
abstime.tv_sec -= 1;
|
||||
puts( "pthread_rwlock_timedrdlock( &RWLock, &abstime) -- in past -- OK" );
|
||||
status = pthread_rwlock_timedrdlock( &RWLock, &abstime );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** OBTAIN RWLOCK FOR WRITE WITH ABSTIME IN PAST ***************/
|
||||
status = pthread_rwlock_unlock(&RWLock);
|
||||
assert( !status );
|
||||
rtems_test_assert( !status );
|
||||
|
||||
abstime.tv_sec -= 1;
|
||||
puts( "pthread_rwlock_timedwrlock( &RWLock, &abstime) -- in past -- OK" );
|
||||
status = pthread_rwlock_timedwrlock( &RWLock, &abstime );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** DESTROY RWLOCK ***************/
|
||||
puts( "pthread_rwlock_destroy( &RWLock ) -- OK" );
|
||||
status = pthread_rwlock_destroy( &RWLock );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** OBTAIN A LOCK AND THEN RELEASE IT TWICE ***************/
|
||||
|
||||
puts( "pthread_rwlock_init( &rwlock, NULL ) -- OK" );
|
||||
status = pthread_rwlock_init( &rwlock, NULL );
|
||||
assert( status == 0 );
|
||||
assert( rwlock != 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
rtems_test_assert( rwlock != 0 );
|
||||
|
||||
puts( "pthread_rwlock_unlock ( &rwlock ) -- OK" );
|
||||
status = pthread_rwlock_unlock( &rwlock );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
puts( "pthread_rwlock_unlock ( &rwlock ) -- OK" );
|
||||
status = pthread_rwlock_unlock( &rwlock );
|
||||
assert( status == 0 );
|
||||
rtems_test_assert( status == 0 );
|
||||
|
||||
/*************** END OF TEST *****************/
|
||||
puts( "*** END OF POSIX RWLOCK TEST 01 ***" );
|
||||
|
||||
@@ -178,7 +178,7 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: sem_open - sem1 SUCCESSFUL" );
|
||||
n_sem1 = sem_open( "sem1",O_CREAT, 0777, 1 );
|
||||
assert( n_sem1 != SEM_FAILED );
|
||||
rtems_test_assert( n_sem1 != SEM_FAILED );
|
||||
|
||||
puts( "Init: sem_destroy - named sem1 - EINVAL" );
|
||||
status = sem_destroy(n_sem1);
|
||||
@@ -218,7 +218,7 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: sem_open - Open an existing sem ( same id )" );
|
||||
n_sem2 = sem_open("sem1", 0 );
|
||||
assert( n_sem2 == n_sem1 );
|
||||
rtems_test_assert( n_sem2 == n_sem1 );
|
||||
|
||||
/*
|
||||
* Unlink the semaphore, then verify an open of the same name produces a
|
||||
@@ -231,8 +231,8 @@ void *POSIX_Init(
|
||||
|
||||
puts( "Init: sem_open - Reopen sem1 SUCCESSFUL with a different id" );
|
||||
n_sem2 = sem_open( "sem1", O_CREAT | O_EXCL, 0777, 1);
|
||||
assert( n_sem2 != SEM_FAILED );
|
||||
assert( n_sem2 != n_sem1 );
|
||||
rtems_test_assert( n_sem2 != SEM_FAILED );
|
||||
rtems_test_assert( n_sem2 != n_sem1 );
|
||||
|
||||
/*
|
||||
* Validate we can call close on a semaphore opened with sem_open.
|
||||
@@ -289,7 +289,7 @@ void *POSIX_Init(
|
||||
status = sem_unlink("sem2");
|
||||
fatal_posix_service_status( status, -1, "sem_unlink error return status");
|
||||
fatal_posix_service_status( errno, ENOENT, "sem_unlink errno ENOENT");
|
||||
assert( (status == -1) && (errno == ENOENT) );
|
||||
rtems_test_assert( (status == -1) && (errno == ENOENT) );
|
||||
|
||||
|
||||
/* Try adding in unlinking before closing... (can we still open?) */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user