New files.

This commit is contained in:
Joel Sherrill
1999-11-09 13:36:26 +00:00
parent 41d2eaca38
commit 27eb3ecf3c
7 changed files with 525 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
#
# $Id$
#
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = ..
subdir = psxsem01
RTEMS_ROOT = @RTEMS_ROOT@
PROJECT_ROOT = @PROJECT_ROOT@
VPATH = @srcdir@
TEST = psxsem01
MANAGERS = all
# C source names, if any, go here -- minus the .c
C_PIECES = init
C_FILES = $(C_PIECES:%=%.c)
C_O_FILES = $(C_PIECES:%=${ARCH}/%.o)
H_FILES = system.h
DOCTYPES = scn
DOCS = $(DOCTYPES:%=$(TEST).%)
SRCS = $(DOCS) $(C_FILES) $(H_FILES)
OBJS = $(C_O_FILES)
PRINT_SRCS = $(DOCS)
PGM = ${ARCH}/$(TEST).exe
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(RTEMS_ROOT)/make/leaf.cfg
INSTALL_CHANGE = @INSTALL_CHANGE@
PACKHEX = @PACKHEX@
mkinstalldirs = $(SHELL) $(top_srcdir)/@RTEMS_TOPdir@/mkinstalldirs
INSTALLDIRS = $(PROJECT_RELEASE)/tests/screens/psxtests
$(INSTALLDIRS):
@$(mkinstalldirs) $(INSTALLDIRS)
#
# (OPTIONAL) Add local stuff here using +=
#
DEFINES +=
CPPFLAGS +=
CFLAGS +=
LD_PATHS +=
LD_LIBS +=
LDFLAGS +=
#
# Add your list of files to delete here. The config files
# already know how to delete some stuff, so you may want
# to just run 'make clean' first to see what gets missed.
# 'make clobber' already includes 'make clean'
#
CLEAN_ADDITIONS +=
CLOBBER_ADDITIONS +=
all: ${ARCH} $(SRCS) $(PGM)
$(INSTALL_VARIANT) -m 755 ${PGM} $(PROJECT_RELEASE)/tests
$(INSTALL_CHANGE) $(srcdir)/$(TEST).scn \
$(PROJECT_RELEASE)/tests/screens/psxtests/$(TEST).scn
${PGM}: $(OBJS) $(LINK_FILES)
$(make-exe)
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status

View File

@@ -0,0 +1,139 @@
#define CONFIGURE_INIT
#include "system.h"
#include <sched.h>
#include <fcntl.h>
#include <time.h>
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 */
}

View File

@@ -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 ***

View File

@@ -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 <pmacros.h>
#include <unistd.h>
#include <errno.h>
#include <sched.h>
#include <semaphore.h>
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 <confdefs.h>
/* 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 */