summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-09-28 07:36:06 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-09-28 07:36:06 +0000
commit4bff27618d263eda7a1e534befc1bc06abf541fa (patch)
tree0a54f8da9773bbcf8d54a3497956c6e228589b53 /testsuites
parent2010-09-27 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-4bff27618d263eda7a1e534befc1bc06abf541fa.tar.bz2
2010-09-28 Sebastian Huber <sebastian.huber@embedded-brains.de>
* psx15/.cvsignore, psx15/Makefile.am, psx15/init.c, psx15/psx15.scn: New files. * Makefile.am, configure.ac: Reflect changes above.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/psxtests/ChangeLog6
-rw-r--r--testsuites/psxtests/Makefile.am2
-rw-r--r--testsuites/psxtests/configure.ac1
-rw-r--r--testsuites/psxtests/psx15/.cvsignore14
-rw-r--r--testsuites/psxtests/psx15/Makefile.am28
-rw-r--r--testsuites/psxtests/psx15/init.c111
-rw-r--r--testsuites/psxtests/psx15/psx15.scn4
7 files changed, 165 insertions, 1 deletions
diff --git a/testsuites/psxtests/ChangeLog b/testsuites/psxtests/ChangeLog
index 65a5a793d8..5e324a7c7a 100644
--- a/testsuites/psxtests/ChangeLog
+++ b/testsuites/psxtests/ChangeLog
@@ -1,3 +1,9 @@
+2010-09-28 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
+
+ * psx15/.cvsignore, psx15/Makefile.am, psx15/init.c, psx15/psx15.scn:
+ New files.
+ * Makefile.am, configure.ac: Reflect changes above.
+
2010-08-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: AC_CHECK_DECLS([seteuid]).
diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am
index 61b84eb4bd..b66d4fd19b 100644
--- a/testsuites/psxtests/Makefile.am
+++ b/testsuites/psxtests/Makefile.am
@@ -7,7 +7,7 @@ ACLOCAL_AMFLAGS = -I ../aclocal
SUBDIRS = psxclock
if HAS_POSIX
SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \
- psx10 psx11 psx12 psx13 psx14 psxaio01 psxaio02 psxalarm01 \
+ psx10 psx11 psx12 psx13 psx14 psx15 psxaio01 psxaio02 psxalarm01 \
psxautoinit01 psxautoinit02 psxbarrier01 \
psxcancel psxcancel01 psxcleanup psxcleanup01 \
psxcond01 psxenosys psxkey01 psxkey02 psxkey03 \
diff --git a/testsuites/psxtests/configure.ac b/testsuites/psxtests/configure.ac
index 5131ac98a6..25027434ce 100644
--- a/testsuites/psxtests/configure.ac
+++ b/testsuites/psxtests/configure.ac
@@ -76,6 +76,7 @@ psx11/Makefile
psx12/Makefile
psx13/Makefile
psx14/Makefile
+psx15/Makefile
psxaio01/Makefile
psxaio02/Makefile
psxalarm01/Makefile
diff --git a/testsuites/psxtests/psx15/.cvsignore b/testsuites/psxtests/psx15/.cvsignore
new file mode 100644
index 0000000000..bfdfd995be
--- /dev/null
+++ b/testsuites/psxtests/psx15/.cvsignore
@@ -0,0 +1,14 @@
+aclocal.m4
+autom4te*.cache
+config.cache
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+Makefile
+Makefile.in
+missing
+mkinstalldirs
diff --git a/testsuites/psxtests/psx15/Makefile.am b/testsuites/psxtests/psx15/Makefile.am
new file mode 100644
index 0000000000..45a4e67a02
--- /dev/null
+++ b/testsuites/psxtests/psx15/Makefile.am
@@ -0,0 +1,28 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = psx15
+psx15_SOURCES = init.c ../include/pmacros.h
+
+dist_rtems_tests_DATA = psx15.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+psx15_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psx15_OBJECTS) $(psx15_LDADD)
+LINK_LIBS = $(psx15_LDLIBS)
+
+psx15$(EXEEXT): $(psx15_OBJECTS) $(psx15_DEPENDENCIES)
+ @rm -f psx15$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/psxtests/psx15/init.c b/testsuites/psxtests/psx15/init.c
new file mode 100644
index 0000000000..5bb90e1d07
--- /dev/null
+++ b/testsuites/psxtests/psx15/init.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2010 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+#include <inttypes.h>
+
+#include <rtems.h>
+
+#include "tmacros.h"
+
+/*
+ * This test case shows that post switch extension handlers must cope with
+ * already deleted resources (e.g. _POSIX_signals_Post_switch_extension()).
+ * The thread delete extensions run with thread dispatching enabled. Only the
+ * allocation mutex is locked.
+ */
+
+static rtems_id task_0 = RTEMS_ID_NONE;
+
+static rtems_id task_1 = RTEMS_ID_NONE;
+
+static void thread_delete_hook(
+ Thread_Control *executing,
+ Thread_Control *deleted
+)
+{
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+
+ if (deleted->Object.id == task_0) {
+ rtems_task_priority old = 0;
+
+ sc = rtems_task_set_priority(task_1, 2, &old);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+ }
+}
+
+static void suicide_task(rtems_task_argument arg)
+{
+ printf("suicide task %" PRIuPTR "\n", arg);
+
+ rtems_task_delete(RTEMS_SELF);
+ rtems_test_assert(false);
+}
+
+void Init(rtems_task_argument arg)
+{
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+
+ puts("\n\n*** POSIX TEST 15 ***");
+
+ sc = rtems_task_create(
+ rtems_build_name('T', 'S', 'K', '1'),
+ 5,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_1
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_start(task_1, suicide_task, 1);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_create(
+ rtems_build_name('T', 'S', 'K', '0'),
+ 3,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_0
+ );
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_task_start(task_0, suicide_task, 0);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ puts("*** END OF POSIX TEST 15 ***");
+
+ rtems_test_exit(0);
+ rtems_test_assert(false);
+}
+
+#define CONFIGURE_INIT
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 3
+#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_PREEMPT
+#define CONFIGURE_INIT_TASK_PRIORITY 4
+
+#define CONFIGURE_INITIAL_EXTENSIONS { .thread_delete = thread_delete_hook }
+
+#include <rtems/confdefs.h>
diff --git a/testsuites/psxtests/psx15/psx15.scn b/testsuites/psxtests/psx15/psx15.scn
new file mode 100644
index 0000000000..f7640f8f57
--- /dev/null
+++ b/testsuites/psxtests/psx15/psx15.scn
@@ -0,0 +1,4 @@
+*** POSIX TEST 15 ***
+suicide task 0
+suicide task 1
+*** END OF POSIX TEST 15 ***