forked from Imagelibrary/rtems
New files.
This commit is contained in:
81
c/src/tests/psxtests/psxsem01/Makefile.in
Normal file
81
c/src/tests/psxtests/psxsem01/Makefile.in
Normal 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
|
||||
139
c/src/tests/psxtests/psxsem01/init.c
Normal file
139
c/src/tests/psxtests/psxsem01/init.c
Normal 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 */
|
||||
}
|
||||
25
c/src/tests/psxtests/psxsem01/psxsem01.scn
Normal file
25
c/src/tests/psxtests/psxsem01/psxsem01.scn
Normal 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 ***
|
||||
|
||||
58
c/src/tests/psxtests/psxsem01/system.h
Normal file
58
c/src/tests/psxtests/psxsem01/system.h
Normal 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 */
|
||||
Reference in New Issue
Block a user