|
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 - 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