|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 5120 (0x1400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Run_Cmd, seg_00f333
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Io;
with Log;
with Profile;
with Program;
with Calendar;
with Debug_Tools;
with Simple_Status;
with Io_Exceptions;
with String_Utilities;
with System_Utilities;
with Remote_Operations;
procedure Run_Cmd (On_Host : String := ""; Id : Integer; Depth : Natural) is
package Su renames String_Utilities;
package Ro renames Remote_Operations;
Max_Seconds : constant := 360;
Context : Ro.Context;
Status : Ro.Error_Status;
function Log_File return String is
begin
return On_Host & '_' & Su.Strip (Integer'Image (Id)) &
'_' & Su.Strip (Natural'Image (Depth));
end Log_File;
function Job_Image return String is
begin
return "Run_Cmd (On_Host => """ & On_Host &
""", Id =>" & Integer'Image (Id) &
", Depth =>" & Natural'Image (Depth - 1) & ')';
end Job_Image;
function Pseudo_Random (Kind : String) return Duration is
A_Number : Long_Integer;
Ignored : Long_Integer;
Result : Long_Integer;
begin
-- Processor_Manager.Get_Time_Info (Time_Since_Ipl => A_Number,
-- Time_Of_Ipl => Ignored,
-- Ticks_Per_Second => Ignored);
A_Number := Long_Integer
(Calendar."-" (Calendar.Clock,
System_Utilities.System_Up_Time));
Result := A_Number mod Max_Seconds;
Log.Put_Line ("Delay for " & Kind & " is" &
Long_Integer'Image (Result) & " seconds",
Kind => Profile.Note_Msg);
Log.Flush;
return Duration (Result);
end Pseudo_Random;
procedure Check (Status : Ro.Error_Status) is
begin
if Simple_Status.Error (Status) then
Log.Put_Condition (Status);
Log.Flush;
raise Profile.Error;
else
Log.Flush;
end if;
end Check;
procedure Spawn_Child is
begin
if Depth > 0 then
Program.Run_Job (S => Job_Image,
After => Pseudo_Random ("job start"));
end if;
end Spawn_Child;
begin
loop
begin
Log.Set_Output (Log_File);
exit;
exception
when Io_Exceptions.Use_Error =>
delay 1.0;
end;
end loop;
Ro.Acquire (A_Context => Context,
Status => Status,
Machine => On_Host,
Instance => "");
Check (Status);
Ro.Execute (Command => "pwd",
In_Context => Context,
Status => Status,
Timeout => Remote_Operations.Wait_Forever);
Check (Status);
Ro.Execute (Command => "ls -alg",
In_Context => Context,
Status => Status,
Timeout => Remote_Operations.Wait_Forever);
Check (Status);
Ro.Execute (Command => "ps -ax",
In_Context => Context,
Status => Status,
Timeout => Remote_Operations.Wait_Forever);
Check (Status);
Ro.Release (A_Context => Context,
Status => Status,
Idle_Timeout => Remote_Operations.Default);
Check (Status);
Spawn_Child;
delay Pseudo_Random ("termination");
exception
when Profile.Error =>
Spawn_Child;
when others =>
Log.Put_Line ("Got unexpected exception " &
Debug_Tools.Get_Exception_Name (Machine_Info => True),
Kind => Profile.Exception_Msg);
end Run_Cmd;
nblk1=4
nid=0
hdr6=8
[0x00] rec0=26 rec1=00 rec2=01 rec3=008
[0x01] rec0=18 rec1=00 rec2=02 rec3=00c
[0x02] rec0=27 rec1=00 rec2=03 rec3=03c
[0x03] rec0=1a rec1=00 rec2=04 rec3=000
tail 0x2170bb9da822a65d487cd 0x42a00088462060003