File: /home/oboss/Users/gec/sources/Basic_Services/Containers/interrupt_queue.ads
1 --% Compilation Unit: Interrupt_Queue
2 --
3 --% Category: Generic Package Declaration
4 --
5 --% Release: $Name: $
6 --
7 --% Version: $Revision: 2.0 $
8 --
9 --% Author: $Author: gec $
10 --
11 --% Revision Log:
12 -- $Log: interrupt_queue.ads,v $
13 -- Revision 2.0 2003/04/04 08:49:55 gec
14 -- Initial release of source files serving as baseline for OBOSS-III project.
15 --
16 -- Revision 1.1.1.1 2003/04/04 08:13:00 gec
17 -- Imported using TkCVS
18 --
19 --
20 --
21 --% Project: OBOSS
22 --
23 --% Copyright (C) 2003 by Terma A/S
24 -- Proprietary and intellectual rights of Terma A/S, Denmark,
25 -- are involved in the subject-matter of this material and
26 -- all manufacturing, reproduction, use, disclosure, and
27 -- sales rights pertaining to such subject-matter are
28 -- expressly reserved. This material is submitted for a
29 -- specific purpose as agreed, and the recipient by
30 -- accepting this material agrees that this material will
31 -- not be used, copied, or reproduced in whole or in part
32 -- nor its contents revealed in any manner or to any person,
33 -- except to meet the purpose for which it was submitted and
34 -- subject to the terms of the agreement.
35 --
36 --% Target Dependencies:
37 -- None
38 --% Compiler Dependencies:
39 -- None
40 with Ada.Interrupts;
41
42 with Task_Priority_Control;
43
44 generic
45
46 -- Priority of protected object implementing interrupt queue
47 Interrupt_Queue_Priority : in Task_Priority_Control.Interrupt_Task_Priority;
48
49 -- Interrupt level
50 Interrupt_Level : in Ada.Interrupts.Interrupt_ID;
51
52 package Interrupt_Queue is
53
54 --~-----------------------------------------------------------------------------
55
56 protected Handler is
57 -- pragma Interrupt_Priority (Integer (Interrupt_Queue_Priority));
58 pragma Interrupt_Priority (Interrupt_Queue_Priority);
59 procedure Signal;
60 entry Wait;
61 pragma Attach_Handler
62 (Signal, Interrupt_Level);
63 private
64 Barrier : Boolean := False;
65 end Handler;
66
67 --~-----------------------------------------------------------------------------
68
69 end Interrupt_Queue;
70
71