|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T V ┃
Length: 9946 (0x26da) Types: TextFile Names: »V«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2 └─ ⟦77aa8350c⟧ »DATA« └─⟦f794ecd1d⟧ └─⟦24d1ddd49⟧ └─⟦this⟧
-- The use of this system is subject to the software license terms and -- conditions agreed upon between Rational and the Customer. -- -- Copyright 1988 by Rational. -- -- RESTRICTED RIGHTS LEGEND -- -- Use, duplication, or disclosure by the Government is subject to -- restrictions as set forth in subdivision (b)(3)(ii) of the Rights in -- Technical Data and Computer Software clause at 52.227-7013. -- -- -- Rational -- 3320 Scott Boulevard -- Santa Clara, California 95054-3197 -- -- PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL; -- USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION -- IS STRICTLY PROHIBITED. THIS MATERIAL IS PROTECTED AS -- AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF -- 1976. CREATED 1988. ALL RIGHTS RESERVED. -- -- with Runtime_Ids; with System; package Message_Queues is type Upper_Part is range 0 .. 2 ** 16 - 1; type Lower_Part is new Integer; type Id is record Upper : Upper_Part; Lower : Lower_Part; end record; -- The representation for Id should be private, but the declaration of -- Null_Id is a forcing occurance for determining the representation. for Id use record at mod 2; Upper at 0 range 0 .. 15; Lower at 2 range 0 .. 31; end record; subtype Name is String (1 .. 8); -- must be terminated by Ascii.Nul type Message_Id is range 0 .. 2 ** 16 - 1; Null_Message : constant Message_Id := 0; type Associated_Data is new Integer; subtype Queue_Length is Natural range 0 .. 2 ** 15 - 1; subtype Message_Size is Natural range 0 .. 2 ** 15 - 1; subtype Wait_List_Index is Natural range 0 .. 2 ** 15 - 1; type Wait_Item is record Wait_Queue : Id; Not_Active : Boolean; Ipc_Queue : Boolean; end record; type Wait_List is array (Wait_List_Index range <>) of Wait_Item; -- type Status is (Successful, Invalid_Queue, Illegal_Parameter, -- Initiation_Error, Illegal_Channel, No_Message_Found, -- Queue_Not_Accessible, Too_Many_Requests, -- Initiation_Failure, Queue_Full, No_Waiter, Message_Too_Big, -- Buffer_Too_Small, Multiple_Waiters, Invalid_Wait_Set, -- No_Message_For_Wait_Set, Delete_Queue_With_Waiter, -- Multiply_Defined_Queue, Memory_Unavailable, Queue_Not_Empty, -- Channel_Resource_Error, Too_Few_Channel_Slots); -- -- Use Stratus instead of Status to avoid overhead of enum image table. subtype Stratus is Integer; Q_Success : constant := 16#0000#; Q_Illque : constant := 16#100B#; Q_Illpar : constant := 16#100C#; Q_Initerr : constant := 16#100D#; Q_Illcha : constant := 16#100E#; Q_Nomess : constant := 16#100F#; Q_Notacc : constant := 16#1010#; Q_Tomany : constant := 16#1011#; Q_Infail : constant := 16#1012#; Q_Full : constant := 16#1014#; Q_Nowait : constant := 16#1015#; Q_Toobig : constant := 16#1016#; Q_Toosmal : constant := 16#101F#; Q_Mulwait : constant := 16#1029#; Q_Empws : constant := 16#102A#; Q_Quesemp : constant := 16#102B#; Q_Quedel : constant := 16#102C#; Q_Dubdef : constant := 16#1033#; Q_Quesiz : constant := 16#1034#; Q_Notemp : constant := 16#103D#; Q_Chasiz : constant := 16#1047#; Q_Toofew : constant := 16#1051#; \f procedure Create (Max_Message_Size : Message_Size; Max_Message_Count : Queue_Length; Result : out Stratus; New_Queue : out Id); procedure Delete (Queue : Id; Result : out Stratus); procedure Delete_If_Empty (Queue : Id; Result : out Stratus); procedure Send (Buffer : System.Address; Size : Message_Size; Queue : Id; Result : out Stratus; Handle : out Message_Id); procedure Conditional_Send (Buffer : System.Address; Size : Message_Size; Queue : Id; Result : out Stratus; Handle : out Message_Id); procedure Send_Without_Priority (Value : Integer; Queue : Id); procedure Wait (On_List : System.Address; Maximum : Wait_List_Index; Available : out Wait_List_Index); procedure Wait_Nonblocking (On_List : System.Address; Maximum : Wait_List_Index; Result : out Stratus; Available : out Wait_List_Index); procedure Retrieve_Message (From_Queue : Id; To_Buffer : System.Address; Buffer_Size : Message_Size); procedure Retrieve_If_Available (From_Queue : Id; To_Buffer : System.Address; Buffer_Size : Message_Size; Result : out Stratus); procedure Remove_Message (From_Queue : Id; Remove_Id : Message_Id; Result : out Stratus); procedure Length (Of_Queue : Id; Result : out Stratus; Count : out Queue_Length); procedure Get_Associated_Data (For_Queue : Id; Result : out Stratus; Data : out Associated_Data); private for Wait_Item use record at mod 2; Not_Active at 0 range 0 .. 0; Ipc_Queue at 1 range 7 .. 7; Wait_Queue at 2 range 0 .. 47; end record; pragma Pack (Wait_List); -- for Status use (Successful => Q_Success, -- Invalid_Queue => Q_Illque, -- Illegal_Parameter => Q_Illpar, -- Initiation_Error => Q_Initerr, -- Illegal_Channel => Q_Illcha, -- No_Message_Found => Q_Nomess, -- Queue_Not_Accessible => Q_Notacc, -- Too_Many_Requests => Q_Tomany, -- Initiation_Failure => Q_Infail, -- Queue_Full => Q_Full, -- No_Waiter => Q_Nowait, -- Message_Too_Big => Q_Toobig, -- Buffer_Too_Small => Q_Toosmal, -- Multiple_Waiters => Q_Mulwait, -- Invalid_Wait_Set => Q_Empws, -- No_Message_For_Wait_Set => Q_Quesemp, -- Delete_Queue_With_Waiter => Q_Quedel, -- Multiply_Defined_Queue => Q_Dubdef, -- Memory_Unavailable => Q_Quesiz, -- Queue_Not_Empty => Q_Notemp, -- Channel_Resource_Error => Q_Chasiz, -- Too_Few_Channel_Slots => Q_Toofew); pragma Interface (Asm, Create); pragma Import_Procedure (Create, "__MSGQ$CREATE", Mechanism => (Value, Value, Value, Reference)); pragma Interface (Asm, Delete); pragma Import_Procedure (Delete, "__MSGQ$DELETE", Mechanism => (Reference, Value)); pragma Interface (Asm, Delete_If_Empty); pragma Import_Procedure (Delete_If_Empty, "__MSGQ$DELETE$VEREMP", Mechanism => (Reference, Value)); pragma Interface (Asm, Send); pragma Import_Procedure (Send, "__MSGQ$SEND", Mechanism => (Value, Value, Reference, Value, Value)); pragma Interface (Asm, Conditional_Send); pragma Import_Procedure (Conditional_Send, "__MSGQ$SEND$RETRDY", Mechanism => (Value, Value, Reference, Value, Value)); pragma Interface (Asm, Send_Without_Priority); pragma Import_Procedure (Send_Without_Priority, "__MSGQ$SEND$NOPRI", Mechanism => (Value, Reference)); pragma Interface (Asm, Wait); pragma Import_Procedure (Wait, "__MSGQ$WAIT", Mechanism => (Value, Value, Value)); pragma Interface (Asm, Wait_Nonblocking); pragma Import_Procedure (Wait_Nonblocking, "__MSGQ$WAIT$NONBLK", Mechanism => (Value, Value, Value, Value)); pragma Interface (Asm, Retrieve_Message); pragma Import_Procedure (Retrieve_Message, "__MSGQ$RETRIEV", Mechanism => (Reference, Value, Value)); pragma Interface (Asm, Retrieve_If_Available); pragma Import_Procedure (Retrieve_If_Available, "__MSGQ$RETRIEV_IF_AVAILABLE", Mechanism => (Reference, Value, Value, Value)); pragma Interface (Asm, Remove_Message); pragma Import_Procedure (Remove_Message, "__MSGQ$REMOVE", Mechanism => (Reference, Value, Value)); pragma Interface (Asm, Length); pragma Import_Procedure (Length, "__MSGQ$LENGTH", Mechanism => (Reference, Value, Value)); pragma Interface (Asm, Get_Associated_Data); pragma Import_Procedure (Get_Associated_Data, "__MSGQ$GET_ASSOCIATED_DATA", Mechanism => (Reference, Value, Value)); end Message_Queues; pragma Export_Elaboration_Procedure ("__MESSAGE_QUEUE_SPEC_ELAB"); pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit, Elab_Routine_Number => Runtime_Ids.Internal);