From 27eb3ecf3c9f58a7459086a4a055a2f2fca4a33b Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 9 Nov 1999 13:36:26 +0000 Subject: New files. --- testsuites/psxtests/psxsem01/init.c | 139 ++++++++++++++++++++++++++++++ testsuites/psxtests/psxsem01/psxsem01.scn | 25 ++++++ testsuites/psxtests/psxsem01/system.h | 58 +++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 testsuites/psxtests/psxsem01/init.c create mode 100644 testsuites/psxtests/psxsem01/psxsem01.scn create mode 100644 testsuites/psxtests/psxsem01/system.h (limited to 'testsuites') diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c new file mode 100644 index 0000000000..26e6607661 --- /dev/null +++ b/testsuites/psxtests/psxsem01/init.c @@ -0,0 +1,139 @@ +#define CONFIGURE_INIT +#include "system.h" +#include +#include +#include + +void *POSIX_Init( + void *argument +) +{ + int status; + int value; + int i; + sem_t sems[CONFIGURE_MAXIMUM_POSIX_SEMAPHORES]; + sem_t sem2; + sem_t *n_sem1; + sem_t *n_sem2; + sem_t testsem; + struct timespec waittime; + + puts( "\n\n*** POSIX SEMAPHORE MANAGER TEST 1 ***" ); + + puts( "Init: sem_init - SUCCESSFUL" ); + for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) { + status = sem_init(&sems[i], 0, i); + assert( status == 0 ); + } + puts( "Init: sem_init - UNSUCCESSFUL (ENOSPC)" ); + status = sem_init(&sem2, 0, 1); + assert( (status == -1) && (errno == ENOSPC) ); + + puts( "Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)" ); + status = sem_init(&sem2, 1, 1); + assert( (status == -1) && (errno == ENOSYS) ); + + puts( "Init: sem_getvalue - SUCCESSFUL "); + for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) { + status = sem_getvalue(&sems[i], &value); + assert( (status == 0) && (value == i) ); + } + puts( "Init: sem_getvalue - UNSUCCESSFUL "); + status = sem_getvalue(&sem2, &value); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_destroy - SUCCESSFUL" ); + status = sem_destroy(&sems[0]); + assert( status == 0 ); + + puts( "Init: sem_destroy - UNSUCCESSFUL (EINVAL)" ); + status = sem_destroy(&sem2); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_wait - SUCCESSFUL" ); + status = sem_wait(&sems[1]); + assert( status == 0); + + puts( "Init: sem_wait - UNSUCCESSFUL (EINVAL)" ); + status = sem_wait(&sem2); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_post - SUCCESSFUL" ); + status = sem_post(&sems[1]); + assert( status == 0 ); + + puts( "Init: sem_wait - SUCCESSFUL (after a sem_post)" ); + status = sem_wait(&sems[1]); + assert( status == 0 ); + + puts( "Init: sem_trywait - SUCCESSFUL" ); + status = sem_trywait(&sems[2]); + assert( status == 0 ); + + puts( "Init: sem_trywait - UNSUCCESSFUL (EAGAIN)" ); + status = sem_trywait(&sems[1]); + assert( (status == -1) && (errno == EAGAIN) ); + + puts( "Init: sem_trywait - UNSUCCESSFUL (EINVAL)" ); + status = sem_trywait(&sem2); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_timedwait - SUCCESSFUL" ); + waittime.tv_sec = 0; + waittime.tv_nsec = 100; + status = sem_timedwait(&sems[2], &waittime); + assert( status == 0 ); + + puts( "Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT)" ); + status = sem_timedwait(&sems[1], &waittime); + assert( (status == -1) && (errno == ETIMEDOUT) ); + + puts( "Init: sem_timedwait - UNSUCCESSFUL (EINVAL)" ); + status = sem_timedwait(&sem2, &waittime); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_post - UNSUCCESSFUL (EINVAL)" ); + status = sem_post(&sem2); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_destroy - SUCCESSFUL" ); + for (i = 1; i < CONFIGURE_MAXIMUM_POSIX_SEMAPHORES; i++) { + status = sem_destroy(&sems[i]); + assert( status == 0); + } + + /* Modes are currently unsupported */ + + puts( "Init: sem_open - SUCCESSFUL" ); + n_sem1 = sem_open("sem1", O_CREAT, 00777, 1); + assert( n_sem1 != SEM_FAILED ); + + puts( "Init: sem_open - UNSUCCESSFUL (EEXIST)" ); + n_sem2 = sem_open("sem1", O_CREAT | O_EXCL, 00777, 1); + assert( (n_sem2 == SEM_FAILED) && (errno == EEXIST) ); + + puts( "Init: sem_close - SUCCESSFUL" ); + status = sem_close(n_sem1); + assert( status == 0); + + /* + puts( "Init: sem_close - UNSUCCESSFUL (EINVAL)" ); + status = sem_close(n_sem2); + assert( (status == -1) && (errno == EINVAL) ); + + puts( "Init: sem_unlink - SUCCESSFUL" ); + status = sem_unlink("sem1"); + assert( status == 0 ); + + puts( "Init: sem_unlink - UNSUCCESSFUL (ENOENT)" ); + status = sem_unlink("sem2"); + assert( (status == -1) && (errno == ENOENT) ); + */ + + /* Try adding in unlinking before closing... (can we still open?) */ + + puts( "*** POSIX SEMAPHORE MANAGER TEST 1 COMPLETED ***" ); + exit(0); + + return NULL; /* just so the compiler thinks we returned something */ +} diff --git a/testsuites/psxtests/psxsem01/psxsem01.scn b/testsuites/psxtests/psxsem01/psxsem01.scn new file mode 100644 index 0000000000..d2045fd0b0 --- /dev/null +++ b/testsuites/psxtests/psxsem01/psxsem01.scn @@ -0,0 +1,25 @@ +*** POSIX SEMAPHORE MANAGER TEST 1 *** +Init: sem_init - SUCCESSFUL +Init: sem_init - UNSUCCESSFUL (ENOSPC) +Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported) +Init: sem_getvalue - SUCCESSFUL +Init: sem_getvalue - UNSUCCESSFUL +Init: sem_destroy - SUCCESSFUL +Init: sem_destroy - UNSUCCESSFUL (EINVAL) +Init: sem_wait - SUCCESSFUL +Init: sem_wait - UNSUCCESSFUL (EINVAL) +Init: sem_post - SUCCESSFUL +Init: sem_wait - SUCCESSFUL (after a sem_post) +Init: sem_trywait - SUCCESSFUL +Init: sem_trywait - UNSUCCESSFUL (EAGAIN) +Init: sem_trywait - UNSUCCESSFUL (EINVAL) +Init: sem_timedwait - SUCCESSFUL +Init: sem_timedwait - UNSUCCESSFUL (ETIMEDOUT) +Init: sem_timedwait - UNSUCCESSFUL (EINVAL) +Init: sem_post - UNSUCCESSFUL (EINVAL) +Init: sem_destroy - SUCCESSFUL +Init: sem_open - SUCCESSFUL +Init: sem_open - UNSUCCESSFUL (EEXIST) +Init: sem_close - SUCCESSFUL +*** POSIX SEMAPHORE MANAGER TEST 1 COMPLETED *** + diff --git a/testsuites/psxtests/psxsem01/system.h b/testsuites/psxtests/psxsem01/system.h new file mode 100644 index 0000000000..ca25a0cd1f --- /dev/null +++ b/testsuites/psxtests/psxsem01/system.h @@ -0,0 +1,58 @@ +/* system.h + * + * This include file contains information that is included in every + * function in the test set. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +/* functions */ + +#include +#include +#include +#include +#include + +void *POSIX_Init( + void *argument +); + +void *Task_1_through_3( + void *argument +); + +/* configuration information */ + +#define CONFIGURE_SPTEST + +#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE + +#define CONFIGURE_MAXIMUM_POSIX_THREADS 2 +#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 10 + +#include + +/* global variables */ + +#ifdef CONFIGURE_INIT +#define TEST_EXTERN +#else +#define TEST_EXTERN extern +#endif + +TEST_EXTERN pthread_t Init_id; +TEST_EXTERN pthread_t Task_id; + +/* end of include file */ -- cgit v1.2.3