|
|
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 - metrics - downloadIndex: T V
Length: 11998 (0x2ede)
Types: TextFile
Names: »V«
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
└─⟦fc9b38f02⟧ »DATA«
└─⟦9b46a407a⟧
└─⟦12c68c704⟧
└─⟦this⟧
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS
└─⟦91c658230⟧ »DATA«
└─⟦458657fb6⟧
└─⟦220843204⟧
└─⟦this⟧
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.
--