summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/psxtests')
-rw-r--r--testsuites/psxtests/Makefile.am4
-rw-r--r--testsuites/psxtests/configure.ac2
-rw-r--r--testsuites/psxtests/psxshm01/Makefile.am22
-rw-r--r--testsuites/psxtests/psxshm01/init.c91
-rw-r--r--testsuites/psxtests/psxshm01/psxshm01.scn0
-rw-r--r--testsuites/psxtests/psxshm01/system.h29
-rw-r--r--testsuites/psxtests/psxshm02/Makefile.am22
-rw-r--r--testsuites/psxtests/psxshm02/init.c91
-rw-r--r--testsuites/psxtests/psxshm02/psxshm02.scn0
-rw-r--r--testsuites/psxtests/psxshm02/system.h38
10 files changed, 297 insertions, 2 deletions
diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am
index e0ce36f719..2bea8ab199 100644
--- a/testsuites/psxtests/Makefile.am
+++ b/testsuites/psxtests/Makefile.am
@@ -10,8 +10,8 @@ _SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \
psxcancel psxcancel01 psxclassic01 psxcleanup psxcleanup01 \
psxconcurrency01 psxcond01 psxcond02 psxconfig01 psxenosys \
psxitimer psxmsgq01 psxmsgq02 psxmsgq03 psxmsgq04 \
- psxmutexattr01 psxobj01 psxrwlock01 psxsem01 psxsignal01 psxsignal02 \
- psxsignal03 psxsignal04 psxsignal05 psxsignal06 \
+ psxmutexattr01 psxobj01 psxrwlock01 psxsem01 psxshm01 psxshm02 \
+ psxsignal01 psxsignal02 psxsignal03 psxsignal04 psxsignal05 psxsignal06 \
psxspin01 psxsysconf \
psxtime psxtimer01 psxtimer02 psxualarm psxusleep psxfatal01 psxfatal02 \
psxintrcritical01 psxstack01 psxstack02 \
diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac
index 7401258871..77af14ed47 100644
--- a/testsuites/psxtests/configure.ac
+++ b/testsuites/psxtests/configure.ac
@@ -188,6 +188,8 @@ psxreaddir/Makefile
psxrdwrv/Makefile
psxrwlock01/Makefile
psxsem01/Makefile
+psxshm01/Makefile
+psxshm02/Makefile
psxsignal01/Makefile
psxsignal02/Makefile
psxsignal03/Makefile
diff --git a/testsuites/psxtests/psxshm01/Makefile.am b/testsuites/psxtests/psxshm01/Makefile.am
new file mode 100644
index 0000000000..7082a50167
--- /dev/null
+++ b/testsuites/psxtests/psxshm01/Makefile.am
@@ -0,0 +1,22 @@
+
+rtems_tests_PROGRAMS = psxshm01
+psxshm01_SOURCES = init.c system.h
+
+dist_rtems_tests_DATA = psxshm01.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxshm01_OBJECTS)
+LINK_LIBS = $(psxshm01_LDLIBS)
+
+psxshm01$(EXEEXT): $(psxshm01_OBJECTS) $(psxshm01_DEPENDENCIES)
+ @rm -f psxshm01$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtests/psxshm01/init.c b/testsuites/psxtests/psxshm01/init.c
new file mode 100644
index 0000000000..24c9b9629f
--- /dev/null
+++ b/testsuites/psxtests/psxshm01/init.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/*
+ * From http://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define CONFIGURE_INIT
+#include "system.h"
+#include "pritime.h"
+
+#include <sys/mman.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+
+const char rtems_test_name[] = "PSX SHM01";
+
+#define MAX_LEN 10000
+struct region { /* Defines "structure" of shared memory */
+ int len;
+ char buf[MAX_LEN];
+};
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ struct region *p;
+ int fd;
+ int err;
+ char *name = "/shm";
+
+ TEST_BEGIN();
+
+ puts( "Init: shm_open" );
+ fd = shm_open( name, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR );
+ if ( fd == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( fd != -1 );
+ }
+
+ puts( "Init: ftruncate" );
+ err = ftruncate( fd, sizeof( struct region ) );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ puts( "Init: mmap" );
+ p = mmap(
+ NULL,
+ sizeof( struct region ),
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ fd,
+ 0
+ );
+ rtems_test_assert( p != MAP_FAILED );
+
+ puts( "Init: write to mapped region" );
+ p->len = MAX_LEN;
+
+ puts( "Init: munmap" );
+ err = munmap( p, sizeof( struct region ) );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ puts( "Init: close" );
+ err = close( fd );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ TEST_END();
+
+ rtems_test_exit(0);
+ return 0;
+}
diff --git a/testsuites/psxtests/psxshm01/psxshm01.scn b/testsuites/psxtests/psxshm01/psxshm01.scn
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuites/psxtests/psxshm01/psxshm01.scn
diff --git a/testsuites/psxtests/psxshm01/system.h b/testsuites/psxtests/psxshm01/system.h
new file mode 100644
index 0000000000..531a9261ba
--- /dev/null
+++ b/testsuites/psxtests/psxshm01/system.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <pmacros.h>
+#include <unistd.h>
+#include <errno.h>
+
+void *POSIX_Init(
+ void *argument
+);
+
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+
+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
+#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10
+#define CONFIGURE_MAXIMUM_POSIX_SHMS 1
+#define CONFIGURE_MEMORY_OVERHEAD 10
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#include <rtems/confdefs.h>
diff --git a/testsuites/psxtests/psxshm02/Makefile.am b/testsuites/psxtests/psxshm02/Makefile.am
new file mode 100644
index 0000000000..c174b0ccf5
--- /dev/null
+++ b/testsuites/psxtests/psxshm02/Makefile.am
@@ -0,0 +1,22 @@
+
+rtems_tests_PROGRAMS = psxshm02
+psxshm02_SOURCES = init.c system.h
+
+dist_rtems_tests_DATA = psxshm02.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psxshm02_OBJECTS)
+LINK_LIBS = $(psxshm02_LDLIBS)
+
+psxshm02$(EXEEXT): $(psxshm02_OBJECTS) $(psxshm02_DEPENDENCIES)
+ @rm -f psxshm02$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtests/psxshm02/init.c b/testsuites/psxtests/psxshm02/init.c
new file mode 100644
index 0000000000..29dea97f7c
--- /dev/null
+++ b/testsuites/psxtests/psxshm02/init.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+/*
+ * From http://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define CONFIGURE_INIT
+#include "system.h"
+#include "pritime.h"
+
+#include <sys/mman.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+
+const char rtems_test_name[] = "PSX SHM02";
+
+#define MAX_LEN 10000
+struct region { /* Defines "structure" of shared memory */
+ int len;
+ char buf[MAX_LEN];
+};
+
+void *POSIX_Init(
+ void *argument
+)
+{
+ struct region *p;
+ int fd;
+ int err;
+ char *name = "/shm";
+
+ TEST_BEGIN();
+
+ puts( "Init: shm_open" );
+ fd = shm_open( name, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR );
+ if ( fd == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( fd != -1 );
+ }
+
+ puts( "Init: ftruncate" );
+ err = ftruncate( fd, sizeof( struct region ) );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ puts( "Init: mmap" );
+ p = mmap(
+ NULL,
+ sizeof( struct region ),
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ fd,
+ 0
+ );
+ rtems_test_assert( p != MAP_FAILED );
+
+ puts( "Init: write to mapped region" );
+ p->len = MAX_LEN;
+
+ puts( "Init: munmap" );
+ err = munmap( p, sizeof( struct region ) );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ puts( "Init: close" );
+ err = close( fd );
+ if ( err == -1 ) {
+ printf ( "Error: %s\n", strerror(errno) );
+ rtems_test_assert( err != -1 );
+ }
+
+ TEST_END();
+
+ rtems_test_exit(0);
+ return 0;
+}
diff --git a/testsuites/psxtests/psxshm02/psxshm02.scn b/testsuites/psxtests/psxshm02/psxshm02.scn
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuites/psxtests/psxshm02/psxshm02.scn
diff --git a/testsuites/psxtests/psxshm02/system.h b/testsuites/psxtests/psxshm02/system.h
new file mode 100644
index 0000000000..d02c87f62c
--- /dev/null
+++ b/testsuites/psxtests/psxshm02/system.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2016 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <pmacros.h>
+#include <unistd.h>
+#include <errno.h>
+
+void *POSIX_Init(
+ void *argument
+);
+
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+
+#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 1
+#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10
+#define CONFIGURE_MAXIMUM_POSIX_SHMS 1
+#define CONFIGURE_MEMORY_OVERHEAD 10
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#include <rtems/posix/shm.h>
+const POSIX_Shm_Object_operations _POSIX_Shm_Object_operations = {
+ _POSIX_Shm_Object_create_from_heap,
+ _POSIX_Shm_Object_resize_from_heap,
+ _POSIX_Shm_Object_delete_from_heap,
+ _POSIX_Shm_Object_read_from_heap
+};
+#define CONFIGURE_HAS_OWN_POSIX_SHM_OBJECT_OPERATIONS
+
+#include <rtems/confdefs.h>