DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦d25dfc1c5⟧ TextFile

    Length: 3373 (0xd2d)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦24d1ddd49⟧ 
                └─⟦this⟧ 

TextFile

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

    subtype Status is Integer;
    Success : constant Status := 0;
    E_Noram : constant Status := 237;


    -- Ada interfaces to OS system calls for process
    -- manipulation and information.
    --

    procedure Fork (Parameter_Ref  :     System.Address;  
                    Parameter_Size :     Integer;  
                    Priority       :     Integer;  
                    Memory_Size    :     Integer;
                    Result         : out Status);
    --
    -- Spawn a new process with the specified characteristics
    --

    procedure Suicide;
    --
    -- The calling process dies
    --

    function Current_Process_Id return Integer;

    function Current_Priority return Integer;

    function Get_Fp return Integer;
    -- Get frame pointer one level up.

    procedure Set_Priority (Process_Id : Integer; Priority : Integer);

    procedure Verify_Stack;
    --
    -- Verify that the current stack pointer does not
    -- exceed the limits for the process; if it does
    -- then issue an error message and die.  This routine
    -- is called only from runtime routines which do not
    -- do normal stack checking, but must be able to execute
    -- in order to insure correct program semantics.
    --

    Global_Base_Address : System.Address;

private

    pragma Interface (Asm, Fork);  
    pragma Import_Procedure (Fork, "__FORK_PROCESS",  
                             Mechanism => (Value, Value, Value, Value, Value));

    pragma Interface (Asm, Suicide);  
    pragma Import_Procedure (Suicide, "__PROCESS_EXIT");

    pragma Interface (Asm, Current_Process_Id);  
    pragma Import_Function (Current_Process_Id, "__CURRENT_PROCESS_ID");

    pragma Interface (Asm, Current_Priority);  
    pragma Import_Function (Current_Priority, "__CURRENT_PROCESS_PRIORITY");

    pragma Interface (Asm, Get_Fp);
    pragma Import_Function (Get_Fp, "__GET_FP");

    pragma Interface (Asm, Set_Priority);  
    pragma Import_Procedure  
       (Set_Priority, "__SET_PROCESS_PRIORITY", Mechanism => (Value, Value));

    pragma Interface (Asm, Verify_Stack);
    pragma Import_Procedure (Verify_Stack, "__VERIFY_STACK");

    pragma Import_Object (Global_Base_Address, "__GLOBAL_BASE");

end Process_Ops;
pragma Export_Elaboration_Procedure ("__PROCESS_OPS_SPEC_ELAB");  
pragma Runtime_Unit (Unit_Number         => Runtime_Ids.Runtime_Compunit,
                     Elab_Routine_Number => Runtime_Ids.Internal);