summaryrefslogtreecommitdiffstats
path: root/testsuites/ada/sptests/sp14
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-12 10:00:10 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-12 10:53:16 +0200
commitee537ea3dd964d4de3565a36b4857af31fb5a3f4 (patch)
treead8b328a58469ca0632e3e61cd94f37c9d97cc25 /testsuites/ada/sptests/sp14
parentada-tests: Use _SUBDIRS instead of SUBDIRS (diff)
downloadrtems-ee537ea3dd964d4de3565a36b4857af31fb5a3f4.tar.bz2
ada-tests: Move to testsuites/ada
This solves a build dependency issue, e.g. building tests before librtemsbsp.a exists. Close #3079.
Diffstat (limited to 'testsuites/ada/sptests/sp14')
-rw-r--r--testsuites/ada/sptests/sp14/Makefile.am16
-rw-r--r--testsuites/ada/sptests/sp14/ada_sp14.scn33
-rw-r--r--testsuites/ada/sptests/sp14/config.h32
-rw-r--r--testsuites/ada/sptests/sp14/sp14.adb55
-rw-r--r--testsuites/ada/sptests/sp14/sptest.adb325
-rw-r--r--testsuites/ada/sptests/sp14/sptest.ads134
6 files changed, 595 insertions, 0 deletions
diff --git a/testsuites/ada/sptests/sp14/Makefile.am b/testsuites/ada/sptests/sp14/Makefile.am
new file mode 100644
index 0000000000..501cd32ea1
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/Makefile.am
@@ -0,0 +1,16 @@
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+
+include $(top_srcdir)/ada.am
+
+noinst_PROGRAMS = ada_sp14
+ada_sp14_SOURCES = sp14.adb config.h sptest.adb sptest.ads
+ada_sp14_SOURCES += ../../support/init.c
+
+ada_sp14$(EXEEXT): sp14.adb init.$(OBJEXT)
+ $(GNATCOMPILE) -margs -a $< -o $@
+
+scndir = $(rtems_ada_testsdir)
+dist_scn_DATA = ada_sp14.scn
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/ada/sptests/sp14/ada_sp14.scn b/testsuites/ada/sptests/sp14/ada_sp14.scn
new file mode 100644
index 0000000000..09b33721ef
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/ada_sp14.scn
@@ -0,0 +1,33 @@
+*** TEST 14 ***
+TA1 - signal_catch - INTERRUPT_LEVEL( 3 )
+TA1 - signal_send - SIGNAL_16 to self
+ASR - ENTRY - signal => 16#10000#
+ASR - EXIT - signal => 16#10000#
+TA1 - signal_send - SIGNAL_0 to self
+ASR - ENTRY - signal => 16#1#
+ASR - task_wake_after - yield processor
+TA2 - signal_send - SIGNAL_17 to TA1
+TA2 - task_wake_after - yield processor
+ASR - ENTRY - signal => 16#20000#
+ASR - EXIT - signal => 16#20000#
+ASR - EXIT - signal => 16#1#
+TA1 - signal_catch - NO_ASR
+<pause>
+TA1 - signal_send - SIGNAL_1 to self
+ASR - ENTRY - signal => 16#2#
+ASR - task_wake_after - yield processor
+TA2 - signal_send - SIGNAL_18 and SIGNAL_19 to TA1
+TA2 - task_wake_after - yield processor
+ASR - EXIT - signal => 16#2#
+ASR - ENTRY - signal => 16#C0000#
+ASR - EXIT - signal => 16#C0000#
+TA1 - task_mode - disable ASRs
+TA1 - sending signal to SELF from timer
+TA1 - waiting for signal to arrive
+TA1 - timer routine got the correct arguments
+TA1 - task_mode - enable ASRs
+ASR - ENTRY - signal => 16#8#
+ASR - EXIT - signal => 16#8#
+TA1 - signal_catch - ASR ADDRESS of NULL
+TA1 - task_delete - delete self
+*** END OF TEST 14 ***
diff --git a/testsuites/ada/sptests/sp14/config.h b/testsuites/ada/sptests/sp14/config.h
new file mode 100644
index 0000000000..2c046d6db3
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/config.h
@@ -0,0 +1,32 @@
+/* config.h
+ *
+ * This include file defines the Configuration Table for this test.
+ *
+ * COPYRIGHT (c) 1989-2007.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may in
+ * the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+
+/* configuration information */
+
+#define CONFIGURE_SPTEST
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 3
+#define CONFIGURE_MAXIMUM_TIMERS 1
+#define CONFIGURE_TICKS_PER_TIMESLICE 100
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 10
+#define CONFIGURE_MAXIMUM_POSIX_KEYS 10
+
+#include <rtems/confdefs.h>
+
+/* end of include file */
diff --git a/testsuites/ada/sptests/sp14/sp14.adb b/testsuites/ada/sptests/sp14/sp14.adb
new file mode 100644
index 0000000000..2149694ecc
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/sp14.adb
@@ -0,0 +1,55 @@
+--
+-- MAIN / BODY
+--
+-- DESCRIPTION:
+--
+-- This is the entry point for Test SP14 of the Single Processor Test Suite.
+--
+-- DEPENDENCIES:
+--
+--
+--
+-- COPYRIGHT (c) 1989-2011.
+-- On-Line Applications Research Corporation (OAR).
+--
+-- The license and distribution terms for this file may in
+-- the file LICENSE in this distribution or at
+-- http://www.rtems.org/license/LICENSE.
+--
+
+with RTEMS;
+with RTEMS.TASKS;
+with SPTEST;
+with TEST_SUPPORT;
+
+procedure SP14 is
+ INIT_ID : RTEMS.ID;
+ STATUS : RTEMS.STATUS_CODES;
+begin
+
+ RTEMS.TASKS.CREATE(
+ RTEMS.BUILD_NAME( 'I', 'N', 'I', 'T' ),
+ 1,
+ RTEMS.MINIMUM_STACK_SIZE,
+ RTEMS.NO_PREEMPT,
+ RTEMS.DEFAULT_ATTRIBUTES,
+ INIT_ID,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF INIT" );
+
+
+ RTEMS.TASKS.START(
+ INIT_ID,
+ SPTEST.INIT'ACCESS,
+ 0,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF INIT" );
+
+ loop
+ delay 120.0;
+ end loop;
+
+end SP14;
+
diff --git a/testsuites/ada/sptests/sp14/sptest.adb b/testsuites/ada/sptests/sp14/sptest.adb
new file mode 100644
index 0000000000..3b74c9f256
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/sptest.adb
@@ -0,0 +1,325 @@
+--
+-- SPTEST / BODY
+--
+-- DESCRIPTION:
+--
+-- This package is the implementation of Test 14 of the RTEMS
+-- Single Processor Test Suite.
+--
+-- DEPENDENCIES:
+--
+--
+--
+-- COPYRIGHT (c) 1989-2011.
+-- On-Line Applications Research Corporation (OAR).
+--
+-- The license and distribution terms for this file may in
+-- the file LICENSE in this distribution or at
+-- http://www.rtems.org/license/LICENSE.
+--
+
+with ADDRESS_IO;
+with TEST_SUPPORT;
+with TEXT_IO;
+with UNSIGNED32_IO;
+with INTERFACES; use INTERFACES;
+with RTEMS.TIMER;
+with RTEMS.SIGNAL;
+
+package body SPTEST is
+
+--
+-- INIT
+--
+
+ procedure INIT (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ ) is
+ pragma Unreferenced(ARGUMENT);
+ STATUS : RTEMS.STATUS_CODES;
+ begin
+
+ TEXT_IO.NEW_LINE( 2 );
+ TEXT_IO.PUT_LINE( "*** TEST 14 ***" );
+
+ SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'A', '1', ' ' );
+ SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME( 'T', 'A', '2', ' ' );
+
+ RTEMS.TASKS.CREATE(
+ SPTEST.TASK_NAME( 1 ),
+ 1,
+ RTEMS.MINIMUM_STACK_SIZE * 2,
+ RTEMS.DEFAULT_MODES,
+ RTEMS.DEFAULT_ATTRIBUTES,
+ SPTEST.TASK_ID( 1 ),
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
+
+ RTEMS.TASKS.CREATE(
+ SPTEST.TASK_NAME( 2 ),
+ 1,
+ RTEMS.MINIMUM_STACK_SIZE * 2,
+ RTEMS.DEFAULT_MODES,
+ RTEMS.DEFAULT_ATTRIBUTES,
+ SPTEST.TASK_ID( 2 ),
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
+
+ RTEMS.TASKS.START(
+ SPTEST.TASK_ID( 1 ),
+ SPTEST.TASK_1'ACCESS,
+ 0,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
+
+ RTEMS.TASKS.START(
+ SPTEST.TASK_ID( 2 ),
+ SPTEST.TASK_2'ACCESS,
+ 0,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
+
+ SPTEST.TIMER_NAME( 1 ) := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );
+
+ RTEMS.TIMER.CREATE(
+ SPTEST.TIMER_NAME( 1 ),
+ SPTEST.TIMER_ID( 1 ),
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_CREATE OF TM1" );
+
+ RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
+
+ end INIT;
+
+--
+-- SIGNAL_3_TO_TASK_1
+--
+
+ procedure SIGNAL_3_TO_TASK_1 (
+ ID : in RTEMS.ID;
+ POINTER : in RTEMS.ADDRESS
+ ) is
+ STATUS : RTEMS.STATUS_CODES;
+ begin
+
+ RTEMS.SIGNAL.SEND( SPTEST.TASK_ID( 1 ), RTEMS.SIGNAL_3, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_SEND of 3" );
+
+ SPTEST.TIMER_GOT_THIS_ID := ID;
+ SPTEST.TIMER_GOT_THIS_POINTER := POINTER;
+
+ SPTEST.SIGNAL_SENT := TRUE;
+
+ end SIGNAL_3_TO_TASK_1;
+
+--
+-- TASK_1
+--
+
+ procedure TASK_1 (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ ) is
+ pragma Unreferenced(ARGUMENT);
+ PREVIOUS_MODE : RTEMS.MODE;
+ STATUS : RTEMS.STATUS_CODES;
+ begin
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_catch - INTERRUPT_LEVEL( 3 )" );
+ RTEMS.SIGNAL.CATCH(
+ SPTEST.PROCESS_ASR'ACCESS,
+ RTEMS.INTERRUPT_LEVEL( 3 ),
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH INTERRUPT(3)" );
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_send - SIGNAL_16 to self" );
+ RTEMS.SIGNAL.SEND( RTEMS.SELF, RTEMS.SIGNAL_16, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_SEND - SIGNAL_16 to SELF"
+ );
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_send - SIGNAL_0 to self" );
+ RTEMS.SIGNAL.SEND( RTEMS.SELF, RTEMS.SIGNAL_0, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_SEND - SIGNAL_0 to SELF"
+ );
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_catch - NO_ASR" );
+ RTEMS.SIGNAL.CATCH(SPTEST.PROCESS_ASR'ACCESS, RTEMS.NO_ASR, STATUS);
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH - NO_ASR" );
+
+ TEST_SUPPORT.PAUSE;
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_send - SIGNAL_1 to self" );
+ RTEMS.SIGNAL.SEND( RTEMS.SELF, RTEMS.SIGNAL_1, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_SEND - SIGNAL_1 to SELF"
+ );
+
+ TEXT_IO.PUT_LINE( "TA1 - task_mode - disable ASRs" );
+ RTEMS.TASKS.MODE(
+ RTEMS.NO_ASR,
+ RTEMS.ASR_MASK,
+ PREVIOUS_MODE,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
+
+ SPTEST.TIMER_GOT_THIS_ID := 0;
+ SPTEST.TIMER_GOT_THIS_POINTER := RTEMS.NULL_ADDRESS;
+
+ TEXT_IO.PUT_LINE( "TA1 - sending signal to SELF from timer" );
+ RTEMS.TIMER.FIRE_AFTER(
+ SPTEST.TIMER_ID( 1 ),
+ TEST_SUPPORT.TICKS_PER_SECOND / 2,
+ SPTEST.SIGNAL_3_TO_TASK_1'ACCESS,
+ SPTEST.TASK_1'ADDRESS,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TIMER_FIRE_AFTER" );
+
+ TEXT_IO.PUT_LINE( "TA1 - waiting for signal to arrive" );
+
+ SPTEST.SIGNAL_SENT := FALSE;
+ SPTEST.ASR_FIRED := FALSE;
+
+ loop
+ exit when SPTEST.SIGNAL_SENT;
+ end loop;
+
+ if SPTEST.TIMER_GOT_THIS_ID = SPTEST.TIMER_ID( 1 ) and then
+ RTEMS.ARE_EQUAL(SPTEST.TIMER_GOT_THIS_POINTER,
+ SPTEST.TASK_1'ADDRESS) then
+
+ TEXT_IO.PUT_LINE( "TA1 - timer routine got the correct arguments" );
+
+ else
+
+ TEXT_IO.PUT( "TA1 - timer got (" );
+ UNSIGNED32_IO.PUT( SPTEST.TIMER_GOT_THIS_ID );
+ TEXT_IO.PUT( "," );
+ ADDRESS_IO.PUT( SPTEST.TIMER_GOT_THIS_POINTER );
+ TEXT_IO.PUT( ") instead of (" );
+ UNSIGNED32_IO.PUT( SPTEST.TIMER_ID( 1 ) );
+ TEXT_IO.PUT( "," );
+ ADDRESS_IO.PUT( SPTEST.TASK_1'ADDRESS );
+ TEXT_IO.PUT_LINE( ")!!!!" );
+
+ end if;
+
+ TEXT_IO.PUT_LINE( "TA1 - task_mode - enable ASRs" );
+ RTEMS.TASKS.MODE(
+ RTEMS.ASR,
+ RTEMS.ASR_MASK,
+ PREVIOUS_MODE,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_MODE" );
+
+ TEXT_IO.PUT_LINE( "TA1 - signal_catch - ASR ADDRESS of NULL" );
+ RTEMS.SIGNAL.CATCH( NULL, RTEMS.DEFAULT_MODES, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_CATCH - NULL ADDRESS"
+ );
+
+ TEXT_IO.PUT_LINE( "TA1 - task_delete - delete self" );
+ RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
+
+ end TASK_1;
+
+--
+-- TASK_2
+--
+
+ procedure TASK_2 (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ ) is
+ pragma Unreferenced(ARGUMENT);
+ STATUS : RTEMS.STATUS_CODES;
+ begin
+
+ TEXT_IO.PUT_LINE( "TA2 - signal_send - SIGNAL_17 to TA1" );
+ RTEMS.SIGNAL.SEND( SPTEST.TASK_ID( 1 ), RTEMS.SIGNAL_17, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_SEND - SIGNAL_17 to TA1"
+ );
+
+ TEXT_IO.PUT_LINE( "TA2 - task_wake_after - yield processor" );
+ RTEMS.TASKS.WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER YIELD" );
+
+ TEXT_IO.PUT_LINE(
+ "TA2 - signal_send - SIGNAL_18 and SIGNAL_19 to TA1"
+ );
+ RTEMS.SIGNAL.SEND(
+ SPTEST.TASK_ID( 1 ),
+ RTEMS.SIGNAL_18 + RTEMS.SIGNAL_19,
+ STATUS
+ );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "SIGNAL_SEND - SIGNAL_18 and SIGNAL_19 to TA1"
+ );
+
+ TEXT_IO.PUT_LINE( "TA2 - task_wake_after - yield processor" );
+ RTEMS.TASKS.WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER YIELD" );
+
+ TEXT_IO.PUT_LINE( "*** END OF TEST 14 ***" );
+ RTEMS.SHUTDOWN_EXECUTIVE( 0 );
+
+ end TASK_2;
+
+--
+-- PROCESS_ASR
+--
+
+ procedure PROCESS_ASR (
+ THE_SIGNAL_SET : in RTEMS.SIGNAL_SET
+ ) is
+ STATUS : RTEMS.STATUS_CODES;
+ begin
+
+ TEXT_IO.PUT( "ASR - ENTRY - signal => " );
+ UNSIGNED32_IO.PUT( THE_SIGNAL_SET, BASE => 16, WIDTH => 8 );
+ TEXT_IO.NEW_LINE;
+
+ if THE_SIGNAL_SET = RTEMS.SIGNAL_16 or else
+ THE_SIGNAL_SET = RTEMS.SIGNAL_17 or else
+ THE_SIGNAL_SET = RTEMS.SIGNAL_18 + RTEMS.SIGNAL_19 then
+ NULL;
+
+ elsif THE_SIGNAL_SET = RTEMS.SIGNAL_0 or else
+ THE_SIGNAL_SET = RTEMS.SIGNAL_1 then
+ TEXT_IO.PUT_LINE( "ASR - task_wake_after - yield processor" );
+ RTEMS.TASKS.WAKE_AFTER( RTEMS.YIELD_PROCESSOR, STATUS );
+ TEST_SUPPORT.DIRECTIVE_FAILED(
+ STATUS,
+ "TASK_WAKE_AFTER YIELD"
+ );
+
+ elsif THE_SIGNAL_SET = RTEMS.SIGNAL_3 then
+
+ SPTEST.ASR_FIRED := TRUE;
+
+ end if;
+
+ TEXT_IO.PUT( "ASR - EXIT - signal => " );
+ UNSIGNED32_IO.PUT( THE_SIGNAL_SET, BASE => 16, WIDTH => 8 );
+ TEXT_IO.NEW_LINE;
+
+ end PROCESS_ASR;
+
+end SPTEST;
diff --git a/testsuites/ada/sptests/sp14/sptest.ads b/testsuites/ada/sptests/sp14/sptest.ads
new file mode 100644
index 0000000000..ecf6f93dff
--- /dev/null
+++ b/testsuites/ada/sptests/sp14/sptest.ads
@@ -0,0 +1,134 @@
+--
+-- SPTEST / SPECIFICATION
+--
+-- DESCRIPTION:
+--
+-- This package is the specification for Test 14 of the RTEMS
+-- Single Processor Test Suite.
+--
+-- DEPENDENCIES:
+--
+--
+--
+-- COPYRIGHT (c) 1989-2011.
+-- On-Line Applications Research Corporation (OAR).
+--
+-- The license and distribution terms for this file may in
+-- the file LICENSE in this distribution or at
+-- http://www.rtems.org/license/LICENSE.
+--
+
+with RTEMS;
+with RTEMS.TASKS;
+
+package SPTEST is
+
+--
+-- These arrays contain the IDs and NAMEs of all RTEMS tasks created
+-- by this test.
+--
+
+ TASK_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
+ TASK_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
+
+--
+-- These arrays contain the IDs and NAMEs of all RTEMS timers created
+-- by this test.
+--
+
+ TIMER_ID : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.ID;
+ TIMER_NAME : array ( RTEMS.UNSIGNED32 range 1 .. 2 ) of RTEMS.NAME;
+
+--
+-- SIGNAL_SENT is set to TRUE to indicate that a signal set has
+-- been sent from an ISR to the executing task.
+--
+
+ SIGNAL_SENT : BOOLEAN;
+ pragma volatile( SIGNAL_SENT );
+
+--
+-- These hold the arguments passed to the timer service routine.
+--
+
+ TIMER_GOT_THIS_ID : RTEMS.ID;
+ pragma volatile( TIMER_GOT_THIS_ID );
+
+ TIMER_GOT_THIS_POINTER : RTEMS.ADDRESS;
+ pragma volatile( TIMER_GOT_THIS_POINTER );
+
+--
+-- ASR_FIRED is set to TRUE to indicate that the ASR has executed
+-- and was passed the correct signal set.
+--
+
+ ASR_FIRED : BOOLEAN;
+ pragma volatile( ASR_FIRED );
+
+--
+-- INIT
+--
+-- DESCRIPTION:
+--
+-- This RTEMS task initializes the application.
+--
+
+ procedure INIT (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ );
+ pragma Convention (C, INIT);
+
+--
+-- SIGNAL_3_TO_TASK_1
+--
+-- DESCRIPTION:
+--
+-- This subprogram sends signal 3 to TASK_1.
+--
+
+ procedure SIGNAL_3_TO_TASK_1 (
+ ID : in RTEMS.ID;
+ POINTER : in RTEMS.ADDRESS
+ );
+ pragma Convention (C, SIGNAL_3_TO_TASK_1);
+
+--
+-- PROCESS_ASR
+--
+-- DESCRIPTION:
+--
+-- This subprogram is an ASR for TASK_1.
+--
+
+ procedure PROCESS_ASR (
+ THE_SIGNAL_SET : in RTEMS.SIGNAL_SET
+ );
+ pragma Convention (C, PROCESS_ASR);
+
+--
+-- TASK_1
+--
+-- DESCRIPTION:
+--
+-- This RTEMS task tests the Signal Manager.
+--
+
+ procedure TASK_1 (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ );
+ pragma Convention (C, TASK_1);
+
+--
+-- TASK_2
+--
+-- DESCRIPTION:
+--
+-- This RTEMS task tests the Signal Manager.
+--
+
+ procedure TASK_2 (
+ ARGUMENT : in RTEMS.TASKS.ARGUMENT
+ );
+ pragma Convention (C, TASK_2);
+
+end SPTEST;