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

⟦3dd3dc5fc⟧ Ada Source

    Length: 14336 (0x3800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Start, seg_006405

Derivation

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

E3 Source Code



procedure Start (Rational_Initialization_Directory : String  :=
                    "!Machine.Initialization.Rational";
                 Site_Initialization_Directory     : String  :=
                    "!Machine.Initialization.Site";
                 Local_Initialization_Directory    : String  :=
                    "!Machine.Initialization.Local";
                 Procedures_To_Run                 : String  := "@";
                 Effort_Only                       : Boolean := True);
pragma Loaded_Main;
--
-- This procedure handles startup initialization that runs after the
-- machine boots.  It is run after the Initialize subsystem elaborates
-- (this is the last subsystem in the boot configuration).
--
-- This procedure runs initialization procedures in three directories:
--      Rational_Initialization_Directory
--      Site_Initialization_Directory, and
--      Local_Initialization_Directory.
--
-- The directory !Machine.Initialization.Rational contains initialization
-- code for Rational products and should not be modified.  The other two
-- directories are intended to be managed by machine owners.  The directory
-- !Machine.Initialization.Local contains initialization and configuration
-- information for this specific R1000.  The directory
-- !Machine.Initialization.Site contains initialization and configuration
-- information for the site;  this information may be common to a number
-- of R1000s at a specific site.
--
-- The Procedures_To_Run parameter controls which of the procedures Start will
-- actually run.  By default, all are run.  If you want to execute specific
-- initialization procedures you can put a list of their simple names (comma
-- separated with no embedded blanks) in the Procedures_To_Run parameter.  If the
-- initialization procedure is specified by an "_Start" file (see below), use
-- the simple name of the "_Start" file (eg, "Mail_Start").
--
-- If Start is run with Effort_Only = true, it will only report on what would
-- be run and not actually run anything.  The report indicates the order
-- in which things would be done and can be used to check that the order
-- and other annotations are correct.
--
-- Note: Prior to Delta release 2.2, initialization was handled by
-- procedure !Machine.Initialize.  That procedure is no longer used.
--
-- The following describes the initialization mechanisms:
--
-- When procedure Start is called at the end of the boot process, it
-- will, in turn, run each of the Ada procedures in the three initialization
-- directories.  In addition to these procedures, files whose name end in
-- "_Start" are also processed and specify procedures to be run.
-- The order in which procedures are run is determined by annotations
-- in the spec of each procedure or in the "_Start" file.  Other annotations
-- control other aspects of the execution of the initialization procedures.
-- Error log messages are generated indicating the start of each procedure
-- and the completion of those without the No_Wait annotation (see below).
--
-- The annotations are:
--
--
--   Annotations used by both Ada procedures and "_Start" files:
--
--      --|Prerequisite <simple_name>
--
--          which indicates that the procedure <simple_name> must run before
--          the procedure containing this annotation.
--          For purposes of prerequisites, procedures in all three directories
--          are considered as a single set of names so that the simple name
--          is sufficient to name a prerequisite independent of the directory
--          where it is located.  This implies that no two procedures or
--          start files can have the same name, even if they are in separate
--          directories.
--
--      --|Wait
--
--          the default, which indicates that further initialization procedures
--          will not be started until this one completes.  This is identical to
--          a procedure executed using Program.Run.
--
--      --|No_Wait
--
--          which indicates that this procedure should run asynchronously
--          (that is, invocation of further initialization procedures will
--           not wait for this one to complete).  Such a marked procedure will
--           be run as a separate job.  This is identical to a procedure
--           executed using Program.Run_Job.
--
--      --|Parameters <unparenthesized list>
--
--          A parameter list used to invoke the procedure when it is called.
--          Generally used only in "_Start" files.  This annotation can
--          be used on multiple lines, but commas must be included to
--          separate the parameters.  When passing a string as a parameter,
--          quotes must be included.
--
--
--   Annotations used only in "_Start" files:
--
--      --|Procedure_Name <identifier>
--
--          The simple name of the procedure to be invoked.  If the
--          procedure is within a package, then the package name followed
--          by a period followed by the procedure name should be used.
--          If this annotation is absent, then the name of the object is used.
--
--      --|Procedure_Context <path_name>
--
--          The location in the directory system where the procedure exists.
--
--      --|Subsystem <path_name>
--
--          If present, specifies a subsystem where the procedure will be
--          found.  Procedure_Context is ignored.  The activity
--          (either !Machine.Release.Current.Activity) or the one specified
--          by the --|Activity annotation) is used along with Program.Current
--          to generate the full name of the procedure to be run.
--
--      --|Activity <path_name>
--
--          If present, specifies the activity to use with the subsystem
--          to generate the full name of the procedure to run.  The default
--          is !Machine.Release.Current.Activity
--
--
--   Annotations used in both Ada procedures and "_Start" files which
--              control how the Program call is run:
--
--      --|Options <unquoted string>
--
--          Specifies the option parameter to Program.Run_Job used to
--          start the procedure.  Ignored unless --|No_Wait is also
--          specified.
--
--      --|Context <path name>
--
--          Specifies the context parameter to Program.Run or Run_Job when
--          the procedure is started.  The procedure need not be in
--          this context.


-- EXAMPLES:
--
-- Ada procedure examples,
--
--  Example 1:
--
--      procedure Network;
--      --
--      -- ...
--      --
--      --|Prerequisite Clean_Machine_Temporary
--      --|Wait
--
--   The annotations in this spec require that the Clean_Machine_Temporary
--   initialization procedure run first, and that the Network procedure
--   run before any other initialization procedures are started.
--
--  Example 2:
--
--      procedure Printers (... ;
--                          ... ;
--                          Effort_Only : Boolean := True);
--      --
--      -- ...
--      --
--      --|No_Wait
--      --|Parameters Effort_Only => False
--
--   The annotations in this spec require that the Printers procedure run
--   in parallel with additional initialization procedures, and that the
--   parameter Effort_Only will be set to False when run by the Start procedure.
--
--
--
-- "_Start" file examples,
--
--  Below are some examples of Program.Run_Job calls, and how they would
--  be translated to the new initialization sceme.
--  (Program.Run_Job and Program.Run commands differ only in the replacement
--   of the "--|No_Wait" with the "--|Wait" annotation and the removal of the
--   "--|Options" parameters.)
--
--  Example 1:   A direct procedure call
--
--   Given the Program call:
--
--      Program.Run_Job
--          (S => """!Commands.Example"".Initialize_Routine" &
--                          "(Notify => ""manager"", Effort_Only => False)",
--           Context => "!Machine.Error_Logs",
--           Options => "Name => (Example Start)," &
--                      "Password => ()," &
--                      "Output => !Machine.Error_Log.Example_Log");
--
--   The "_Start" file which corresponds to this call is:
--
--      --|No_Wait
--      --|Procedure_Name Initialize_Routine
--      --|Procedure_Context !Commands.Example
--      --|Parameters Notify => "manager",
--      --|Parameters Effort_Only => False
--      --|Context !Machine.Error_Logs
--      --|Options Name => (Example Start), Password => (),
--      --|Options Output => !Machine.Error_Log.Example_Log
--
--   The No_Wait annotation indicates that this is a Program.Run_Job call.
--   The Procedure_Name is the part of the sting passed to the S parameter
--      not enclosed in double quotes.
--   The Parameters are located just after the procedure name.  If double
--      quotes surround a parameter, then single quotes should be used in
--      the parameter call. (The commas must be included)
--   The Procedure_Context is the part of the string passed to the S parameter
--      enclosed in double quotes.
--   The Context is the value passed by the context parameter to Run_Job.
--   The Options are taken from the options parameter, and can occupy a
--      single line or multiple lines. (The commas must be included)
--
--  Example 2:   A call to a procedure within a subsystem
--
--   Given the Program call:
--
--      Program.Run_Job
--          (S => Program.Current
--                  (Subsystem =>
--                      "!Targets.Implementation.Motorola_68k_Download",
--                   Unit => "Excelan_Boot_Server",
--                   Parameters => "",
--                   Activity => "!Machine.Release.Current.Activity"),
--           Context => "!Machine.Error_Logs",
--           Options => "Output => !Machine.Temporary.Excelan_Boot_Log," &
--                      "Name => (Excelan_Boot_Server)");
--
--   The "_Start" file which corresponds to this call is:
--
--      --|No_Wait
--      --|Procedure_Name Excelan_Boot_Server
--      --|Subsystem !Targets.Implementation.Motorola_68k_Download
--      --|Activity !Machine.Release.Current.Activity
--      --|Context !Machine.Error_Logs
--      --|Options Output => !Machine.Temporary.Excelan_Boot_Log,
--      --|Options Name => (Excelan_Boot_Server)
--
--   This call differs from the previous example only in the use of
--   Program.Current to create procedure calls to subsystems based on the
--   indicated activity.  The translation is changed only by the fact that
--   Procedure_Context is replaced by a Subsystem and an Activity.
--   Had there been any parameters, then the parameters annotation would
--   have been included.
--
--   In both examples, no error reporting was needed because Start supplies
--   these calls.
--
--   To check that you have converted the Program call correctly, run Start
--   with Effort_Only set to True and compare the Program.Run/Run_Job call
--   to the original.
--
--
-- There are a couple of rules and special cases:
--
--  1. If a circular dependency is discovered, it will be reported and ignored
--     so that procedures will at least be run.
--
--  2. A procedure that has a No_Wait annotation implies a dependence on the
--     start of the named prerequisite procedure.  A procedure that has
--     a Wait (or no No_Wait) annotation implies a dependence on the completion
--     of the named prerequisite procedure.
--
--  3. If no Output or Error path is supplied to the "--|Options" parameter,
--     then one is added which directs these files to
--         "!Machine.Error_Logs.<procedure_name or start_file_name>_Log"
--
--  4. No two Ada procedures or "_Start" files can have the same name, even if
--     located in separate directories.
--
--  5. The Terminals and Printers initializations are based on the contents
--     of files, !Machine.Initialization.Local.Terminal_Configuration and
--     !Machine.Initialization.[Site, Local].Printer_Configuration,
--     respectively.  The format of these files are described by comments
--     within them.
--

E3 Meta Data

    nblk1=d
    nid=0
    hdr6=1a
        [0x00] rec0=15 rec1=00 rec2=01 rec3=076
        [0x01] rec0=10 rec1=00 rec2=02 rec3=06a
        [0x02] rec0=11 rec1=00 rec2=03 rec3=07e
        [0x03] rec0=17 rec1=00 rec2=04 rec3=02a
        [0x04] rec0=18 rec1=00 rec2=05 rec3=026
        [0x05] rec0=17 rec1=00 rec2=06 rec3=006
        [0x06] rec0=21 rec1=00 rec2=07 rec3=012
        [0x07] rec0=1e rec1=00 rec2=08 rec3=04c
        [0x08] rec0=15 rec1=00 rec2=09 rec3=060
        [0x09] rec0=15 rec1=00 rec2=0a rec3=024
        [0x0a] rec0=14 rec1=00 rec2=0b rec3=08c
        [0x0b] rec0=17 rec1=00 rec2=0c rec3=028
        [0x0c] rec0=08 rec1=00 rec2=0d rec3=000
    tail 0x21701ace281bf81de98a3 0x42a00088462065003