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: 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. --