|
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: 3762 (0xeb2) 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« └─⟦3b6920880⟧ └─⟦this⟧
-- 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