|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3271 (0xcc7)
Types: TextFile
Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦9558abbb5⟧
└─⟦this⟧
-- Copyright 1993 Verdix Corporation
------------------------------------------------------------------------------
-- Interface to the CIFO type definitions used by Ada tasking
------------------------------------------------------------------------------
with system; use system;
with unchecked_conversion;
package v_i_cifo is
pragma suppress(ALL_CHECKS);
pragma suppress(EXCEPTION_TABLES);
pragma not_elaborated;
pragma local_access;
-- Task entry or safe condition variable wait queuing
type queuing_t is (
UNSPECIFIED_QUEUING,
ARBITRARY_QUEUING,
FIFO_QUEUING,
PRIORITY_QUEUING,
PRIORITY_CEILING,
SPINNING
);
-- Do not change these values without also changing the compiler.
for queuing_t use ( UNSPECIFIED_QUEUING => 0, ARBITRARY_QUEUING => 1,
FIFO_QUEUING => 2, PRIORITY_QUEUING => 3,
PRIORITY_CEILING => 4, SPINNING => 5 );
for queuing_t'size use integer'size;
-- This exception is raised for any priority ceiling errors, such
-- as, the priority of the calling task is higher than the
-- priority of a priority ceiling server task.
PRIORITY_CEILING_ERROR : exception;
-- Values set by pragmas in the main procedure
main_task_priority: priority;
pragma interface_name(main_task_priority, "MAIN_TASK_PRIORITY");
main_priority_inheritance_enabled: integer;
pragma interface_name(main_priority_inheritance_enabled,
"MAIN_PRIORITY_INHERITANCE");
-- If TRUE, then ARBITRARY_QUEUING is PRIORITY_QUEUING.
-- Otherwise, ARBITRARY_QUEUING is FIFO_QUEUING.
--
main_global_entry_criteria: queuing_t;
pragma interface_name(main_global_entry_criteria,
"MAIN_GLOBAL_ENTRY_CRITERIA");
-- SPINNING isn't valid.
--
-- If set to ARBITRARY_QUEUING, then, it is
-- updated during startup according to
-- main_priority_inheritance_enabled as follows:
-- main_priority_inheritance_enabled = FALSE =>
-- main_global_entry_criteria := FIFO_QUEUING
-- main_priority_inheritance_enabled = TRUE =>
-- main_global_entry_criteria := PRIORITY_QUEUING
--
main_global_select_lexical_order: integer;
pragma interface_name(main_global_select_lexical_order,
"MAIN_SELECT_LEXICAL_ORDER");
type main_pragmas_t is record
main_task_priority : priority := priority'first;
priority_inheritance_enabled : boolean := FALSE;
global_entry_criteria : queuing_t := ARBITRARY_QUEUING;
global_select_lexical_order : boolean := FALSE;
end record;
type a_main_pragmas_t is access main_pragmas_t;
function to_a_main_pragmas_t is
new unchecked_conversion(address, a_main_pragmas_t);
-- The following is used for an INTERRUPT_TASK. The compiler knows
-- the names of the fields in this record.
type cifo_isr_header is record
vector_num: integer;
handler: address; -- Address of the first instruction
-- in the entry's accept body.
-- The code emitted for the accept
-- body should look like a normal
-- Ada procedure.
end record;
for cifo_isr_header use record
vector_num at 0 range 0..4 * STORAGE_UNIT - 1;
handler at 4 range 0..4 * STORAGE_UNIT - 1;
end record;
CIFO_ISR_VECTOR_NUM_OFF: constant := 0;
CIFO_ISR_HANDLER_OFF: constant := 4;
type cifo_isr_header_ref is access cifo_isr_header;
end v_i_cifo