DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦406b91bb5⟧ TextFile

    Length: 3762 (0xeb2)
    Types: TextFile
    Notes: R1k Text-file segment

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦3b6920880⟧ 
            └─⟦this⟧ 

TextFile

-- Copyright 1987, 1988, 1992 Verdix Corporation

------------------------------------------------------------------------------
-- User interface to the interrupt entry signal services
------------------------------------------------------------------------------
with system;		use system;
with unsigned_types;
with ada_krn_defs;
package v_i_sig is

    pragma suppress(ALL_CHECKS);
    pragma suppress(EXCEPTION_TABLES);
    pragma not_elaborated;
    pragma local_access;

	type SIGNAL_ID is new UNSIGNED_TYPES.UNSIGNED_INTEGER;
	NO_SIGNAL_ID : constant SIGNAL_ID := 0;

    --------------------------------------------------------------------------
	-- Interrupt entry's ISR header record built by the compiler
    --------------------------------------------------------------------------
	type isr_header is record
		vector_num:   		integer;
		s:					signal_id;
	end record;

	--
	-- Offsets for these fields must agree with those used in il_task.c
	--
	for isr_header use record
		vector_num   	at 0  range 0..4  * STORAGE_UNIT - 1;
		s				at 4  range 0..4  * STORAGE_UNIT - 1;
	end record;

	SIGNAL_ISR_VECTOR_NUM_OFF:		constant := 0;
	SIGNAL_ISR_S_OFF:				constant := 4;

	type isr_header_ref is access isr_header;
	pragma local_access(isr_header_ref);

    --------------------------------------------------------------------------
    -- Signals provide the mechanism for an interrupt handler to notify a task
    -- of an asynchronous event. An interrupt entry in a task is attached to
    -- a signal. At the completion of interrupt handling, the signal is
    -- posted, whereby, a call is made to the attached interrupt entry.
    --------------------------------------------------------------------------

    --------------------------------------------------------------------------
    -- Create signal
    --
	--  intr_entry - points to a record containing the intr_vector. The
	--		signal_isr() handler is passed the address of an isr_header
	--      record containing this intr_vector number.
	--
    --      A task interrupt entry does:
    --      for interrupt_entry use at intr_entry_rec'address.
    --
    -- Returns address of signal structure that can be posted.
    --------------------------------------------------------------------------
	function create_signal(
		intr_entry: ada_krn_defs.a_intr_entry_t) return signal_id;

    ------------------
    -- Post signal
    ------------------
    procedure post_signal(s: signal_id);

    --------------------------------------------------------------------------
	-- Interrupt entry's ISR
    --------------------------------------------------------------------------
    procedure signal_isr(i: isr_header_ref);

    --------------------------------------------------------------------------
	-- Services for supporting POSIX_Signals
    --------------------------------------------------------------------------
	procedure ignore_signal(intr_vector: ada_krn_defs.intr_vector_id_t);
	procedure unignore_signal(intr_vector: ada_krn_defs.intr_vector_id_t);
	function is_signal_ignored(intr_vector: ada_krn_defs.intr_vector_id_t)
		return boolean;

private

	pragma interface(ADA, create_signal);
	pragma interface_name(create_signal, "TS_CREATE_SIGNAL");
	pragma interface(ADA, post_signal);
	pragma interface_name(post_signal, "TS_POST_SIGNAL");
	pragma interface(ADA, signal_isr);
	pragma interface_name(signal_isr, "SIGNAL_ISR");
    pragma interface(ADA, ignore_signal);
    pragma interface_name(ignore_signal, "__IGNORE_SIGNAL");
	pragma interface(ADA, unignore_signal);
	pragma interface_name(unignore_signal, "__UNIGNORE_SIGNAL");
	pragma interface(ADA, is_signal_ignored);
	pragma interface_name(is_signal_ignored, "__IS_SIGNAL_IGNORED");
end;

package body v_i_sig is
end