forked from Imagelibrary/rtems
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include <rtems/system.h>
|
#include <rtems/system.h>
|
||||||
#include <rtems/posix/barrierimpl.h>
|
#include <rtems/posix/barrierimpl.h>
|
||||||
|
#include <rtems/posix/posixapi.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pthread_barrier_init
|
* pthread_barrier_init
|
||||||
@@ -78,12 +79,8 @@ int pthread_barrier_init(
|
|||||||
if ( !the_attr->is_initialized )
|
if ( !the_attr->is_initialized )
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
switch ( the_attr->process_shared ) {
|
if ( !_POSIX_Is_valid_pshared( the_attr->process_shared ) ) {
|
||||||
case PTHREAD_PROCESS_PRIVATE: /* only supported values */
|
return EINVAL;
|
||||||
break;
|
|
||||||
case PTHREAD_PROCESS_SHARED:
|
|
||||||
default:
|
|
||||||
return EINVAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
*** POSIX BARRIER TEST 01 ***
|
*** BEGIN OF TEST PSXBARRIER 1 ***
|
||||||
pthread_barrierattr_init( NULL ) -- EINVAL
|
pthread_barrierattr_init( NULL ) -- EINVAL
|
||||||
pthread_barrierattr_setpshared( NULL, private ) -- EINVAL
|
pthread_barrierattr_setpshared( NULL, private ) -- EINVAL
|
||||||
pthread_barrierattr_setpshared( NULL, shared ) -- EINVAL
|
pthread_barrierattr_setpshared( NULL, shared ) -- EINVAL
|
||||||
@@ -19,6 +19,10 @@ pthread_barrier_init( NULL, NULL, 2 ) -- EINVAL
|
|||||||
pthread_barrier_init( &barrier, &attr, 2 ) -- EINVAL
|
pthread_barrier_init( &barrier, &attr, 2 ) -- EINVAL
|
||||||
pthread_barrierattr_init( &attr ) -- OK
|
pthread_barrierattr_init( &attr ) -- OK
|
||||||
pthread_barrier_init( &barrier, &attr, 0 ) -- EINVAL
|
pthread_barrier_init( &barrier, &attr, 0 ) -- EINVAL
|
||||||
|
pthread_barrier_init( &barrier, &attr, 1 ) -- EINVAL
|
||||||
|
pthread_barrierattr_setpshared( &attr, shared ) -- OK
|
||||||
|
pthread_barrier_init( &barrier, &attr, 1 ) -- OK
|
||||||
|
pthread_barrier_destroy( &barrier ) -- OK
|
||||||
pthread_barrier_init( &barrier, NULL, 1 ) -- OK
|
pthread_barrier_init( &barrier, NULL, 1 ) -- OK
|
||||||
pthread_barrier_init( &barrier, NULL, 1 ) -- EAGAIN
|
pthread_barrier_init( &barrier, NULL, 1 ) -- EAGAIN
|
||||||
pthread_barrier_destroy( &barrier ) -- OK
|
pthread_barrier_destroy( &barrier ) -- OK
|
||||||
@@ -38,4 +42,4 @@ Init: pthread_create - thread 2 OK
|
|||||||
pthread_barrier_wait( &Barrier ) for thread 0x0b010002
|
pthread_barrier_wait( &Barrier ) for thread 0x0b010002
|
||||||
pthread_barrier_wait - 0x0b010002 released
|
pthread_barrier_wait - 0x0b010002 released
|
||||||
pthread_barrier_wait - 0x0b010001 released
|
pthread_barrier_wait - 0x0b010001 released
|
||||||
*** END OF POSIX BARRIER TEST 01 ***
|
*** END OF TEST PSXBARRIER 1 ***
|
||||||
|
|||||||
@@ -161,6 +161,23 @@ int main(
|
|||||||
status = pthread_barrier_init( &barrier, &attr, 0 );
|
status = pthread_barrier_init( &barrier, &attr, 0 );
|
||||||
rtems_test_assert( status == EINVAL );
|
rtems_test_assert( status == EINVAL );
|
||||||
|
|
||||||
|
puts( "pthread_barrier_init( &barrier, &attr, 1 ) -- EINVAL" );
|
||||||
|
attr.process_shared = -1;
|
||||||
|
status = pthread_barrier_init( &barrier, &attr, 1 );
|
||||||
|
rtems_test_assert( status == EINVAL );
|
||||||
|
|
||||||
|
puts( "pthread_barrierattr_setpshared( &attr, shared ) -- OK" );
|
||||||
|
status = pthread_barrierattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
|
||||||
|
rtems_test_assert( status == 0 );
|
||||||
|
|
||||||
|
puts( "pthread_barrier_init( &barrier, &attr, 1 ) -- OK" );
|
||||||
|
status = pthread_barrier_init( &barrier, &attr, 1 );
|
||||||
|
rtems_test_assert( status == 0 );
|
||||||
|
|
||||||
|
puts( "pthread_barrier_destroy( &barrier ) -- OK" );
|
||||||
|
status = pthread_barrier_destroy( &barrier );
|
||||||
|
rtems_test_assert( status == 0 );
|
||||||
|
|
||||||
/* allocating too many */
|
/* allocating too many */
|
||||||
puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- OK" );
|
puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- OK" );
|
||||||
status = pthread_barrier_init( &barrier, NULL, 1 );
|
status = pthread_barrier_init( &barrier, NULL, 1 );
|
||||||
|
|||||||
Reference in New Issue
Block a user