+++ /dev/null
--- Version of IMPDEFC.A modified for ACT interrupt support
---
--- IMPDEFC.A
---
--- Grant of Unlimited Rights
---
--- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
--- unlimited rights in the software and documentation contained herein.
--- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
--- this public release, the Government intends to confer upon all
--- recipients unlimited rights equal to those held by the Government.
--- These rights include rights to use, duplicate, release or disclose the
--- released technical data and computer software in whole or in part, in
--- any manner and for any purpose whatsoever, and to have or permit others
--- to do so.
---
--- DISCLAIMER
---
--- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--- PARTICULAR PURPOSE OF SAID MATERIAL.
---*
---
--- DESCRIPTION:
--- This package provides tailorable entities for a particular
--- implementation. Each entity may be modified to suit the needs
--- of the implementation. Default values are provided to act as
--- a guide.
---
--- The entities in this package are those which are used exclusively
--- in tests for Annex C (Systems Programming).
---
--- APPLICABILITY CRITERIA:
--- This package is only required for implementations validating the
--- Systems Programming Annex.
---
--- CHANGE HISTORY:
--- 29 Jan 96 SAIC Initial version for ACVC 2.1.
---
---!
-
-with Ada.Interrupts.Names;
-
-package ImpDef.Annex_C is
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- Interrupt_To_Generate should identify a non-reserved interrupt
- -- that can be predictably generated within a reasonable time interval
- -- (as specified by the constant Wait_For_Interrupt) during testing.
-
- Interrupt_To_Generate: constant Ada.Interrupts.Interrupt_ID :=
- Ada.Interrupts.Names.SIGPIPE; -- to allow trivial compilation
- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ --- MODIFY HERE AS NEEDED
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- Wait_For_Interrupt should specify the reasonable time interval during
- -- which the interrupt identified by Interrupt_To_Generate can be
- -- expected to be generated.
-
- Wait_For_Interrupt : constant := 0.1;
- -- ^^^^ --- MODIFY HERE AS NEEDED
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- The procedure Enable_Interrupts should enable interrupts, if this
- -- is required by the implementation. [See additional notes on this
- -- procedure in the package body.]
-
- procedure Enable_Interrupts;
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- The procedure Generate_Interrupt should generate the interrupt
- -- identified by Interrupt_To_Generate within the time interval
- -- specified by Wait_For_Interrupt. [See additional notes on this
- -- procedure in the package body.]
-
- procedure Generate_Interrupt;
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
-end ImpDef.Annex_C;
-
-
-
- --==================================================================--
-
-
-package body ImpDef.Annex_C is
-
- -- NOTE: These are example bodies. It is expected that implementors
- -- will write their own versions of these routines.
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- The procedure Enable_Interrupts should enable interrupts, if this
- -- is required by the implementation.
- --
- -- The default body is null, since it is expected that most implementations
- -- will not need to perform this step.
- --
- -- Note that Enable_Interrupts will be called only once per test.
-
- procedure Enable_Interrupts is
- begin
- null;
-
- -- ^^^^^^^^^^^^^^^^^^^^ MODIFY THIS BODY AS NEEDED ^^^^^^^^^^^^^^^^^^^^
-
- end Enable_Interrupts;
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
- -- The procedure Generate_Interrupt should generate the interrupt
- -- identified by Interrupt_To_Generate within the time interval
- -- specified by Wait_For_Interrupt.
- --
- -- The default body assumes that an interrupt will be generated by some
- -- physical act during testing. While this approach is acceptable, the
- -- interrupt should ideally be generated by appropriate code in the
- -- procedure body.
- --
- -- Note that Generate_Interrupt may be called multiple times by a single
- -- test. The code used to implement this procedure should account for this
- -- possibility.
-
- procedure Generate_Interrupt is
-
- procedure c_kill (pid : Integer; sig : in Ada.Interrupts.Interrupt_ID);
- pragma Import (C, c_kill, "kill");
-
- function c_getpid return Integer;
- pragma Import (C, c_getpid, "getpid");
-
- Pid : integer := c_getpid;
- begin
- Report.Comment (". >>>>> GENERATE THE INTERRUPT NOW <<<<< " & integer'image (pid) & " " & Ada.Interrupts.Interrupt_ID'image (Interrupt_To_Generate));
- c_kill (pid, Interrupt_To_Generate);
-
- -- ^^^^^^^^^^^^^^^^^^^^ MODIFY THIS BODY AS NEEDED ^^^^^^^^^^^^^^^^^^^^
-
- end Generate_Interrupt;
-
---=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-
-end ImpDef.Annex_C;
-