COMPILATION LISTING OF SEGMENT dmpr_report_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/22/84 0914.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 dmpr_report_: proc; 11 12 /* This routine is used by the volume dumper to report and log error and status 13* messages. It is modled after the system routine com_err_. When called for the first time in a volume dumper 14* invocation, it creates, in the working directory, an error file, in which it logs all error and status messages. 15* If requested it also writes error message on the stream error_output. */ 16 17 dcl code fixed bin (35); 18 dcl a_code fixed bin (35); 19 dcl tstring char (24); 20 dcl uname char (32); 21 dcl caller char (*); 22 dcl message char (*); 23 dcl argp ptr; 24 dcl error_iocbp ptr; 25 dcl ret_string char (256); 26 dcl len fixed bin; 27 dcl error_output bit (1); 28 dcl short char (8) ; 29 dcl long char (100) ; 30 31 dcl iox_$error_output ptr ext; 32 dcl type_char (3) char (4) int static init ("incr", "cons", "comp") options (constant); 33 dcl myname char (32) static int init ("dmpr_report_") options (constant); 34 35 dcl date_time_ entry (fixed bin (71), char (*)); 36 dcl cu_$arg_list_ptr entry (ptr); 37 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin, bit (1) aligned, bit (1) aligned); 38 dcl ioa_$rsnnl entry options (variable); 39 dcl iox_$attach_ioname entry (char (*), ptr, char (*), fixed bin (35)); 40 dcl iox_$open entry (ptr, fixed bin, bit (36), fixed bin (35)); 41 dcl convert_status_code_ entry (fixed bin (35), char (*), char (*)); 42 dcl ioa_$ioa_switch entry options (variable); 43 dcl dmpr_report_$online_output entry options (variable); 44 45 dcl null builtin; 46 dcl clock builtin; 47 1 1 /* BEGIN INCLUDE FILE ... dmpr_data_.incl.pl1 Feb 1976 */ 1 2 /* format: style1,ind2,^inddcls,ifthenstmt,dclind2,declareind2,ifthendo,ifthen*/ 1 3 /* Modified 7/79 by D. Vinograd to add new variables and change to based structure */ 1 4 /* Modified: 1/26/83 by GA Texada to add cur_vol_open and change version to 2. */ 1 5 /* Modified: 04/05/83 by GA Texada to add trace switch to support tracing. */ 1 6 /* Modified 04/84 by GA Texada to change to version 3 (disk_type). This begins the adding of new items */ 1 7 /* to the END of the structure to facilite easy additions. */ 1 8 dcl dmprp ptr ext static init (null); 1 9 dcl dmpr_data_version_2 fixed bin int static init (2) options (constant); 1 10 dcl dmpr_data_version_3 fixed bin int static init (3) options (constant); 1 11 /* Version 3 is current */ 1 12 1 13 dcl 1 dmpr_data_ aligned based (dmprp), 1 14 2 version fixed bin, /* version */ 1 15 2 lock bit (36), /* inter-lock */ 1 16 2 ptrs, 1 17 3 pre_attach_pvlp (50) ptr, /* array of pvolog ptrs */ 1 18 3 contents_namesp ptr, /* ptr to contents name seg */ 1 19 3 pre_attach_iocbp (50) ptr, /* array of output iocbp */ 1 20 3 pvlp ptr, /* ptr to dump volume log */ 1 21 3 account_iocbp ptr, /* iocbp for account seg */ 1 22 3 infop ptr, /* ptr to info seg */ 1 23 3 inputp ptr, /* ptr to input storage for sup interface */ 1 24 3 recordp ptr, /* ditto for output */ 1 25 3 control_iocbp ptr, /* iocbp for dump control segment */ 1 26 3 error_iocbp ptr, /* iocbp for error output file */ 1 27 3 outputvol_iocbp ptr, /* iocbp for dump volume */ 1 28 3 contentsp ptr, /* ptr to dump volume table of contents */ 1 29 3 bvlp ptr, /* ptr to volume log */ 1 30 3 dirp ptr, /* ptr to directory buffer seg */ 1 31 3 segp ptr, /* ptr to segment to be dumped */ 1 32 3 fcbp ptr, /* ptr to file control block for contents_name msf */ 1 33 3 vpp ptr, /* ptr to volume pool */ 1 34 2 fixed_bin, 1 35 3 retrys fixed bin, /* number of time segment disappeared while being dumped */ 1 36 3 physical_volume_dir_num fixed bin, /* number of dirs dumped from this physical volume */ 1 37 3 physical_volume_dir_rec fixed bin, /* number of dir records on this physical volume */ 1 38 3 physical_volume_seg_num fixed bin, /* number of segs dumped from this physical volume */ 1 39 3 physical_volume_seg_rec fixed bin, /* number of seg records dumped from this physical volume */ 1 40 3 vol_log_dir_num fixed bin, /* dirs dumped from pvol to dump vol */ 1 41 3 vol_log_dir_rec fixed bin, /* dir rec on this pvol to dump vol */ 1 42 3 vol_log_seg_num fixed bin, /* segs dumped from pvol to dump vol */ 1 43 3 vol_log_seg_rec fixed bin, /* seg rec dumped from pvol to dump vol */ 1 44 3 dump_volume_dir_num fixed bin, /* number of dirs dumped on this dump volume */ 1 45 3 dump_volume_dir_rec fixed bin, /* number of dir records on this dump volume */ 1 46 3 dump_volume_seg_num fixed bin, /* number of segs dumped on this dump volume */ 1 47 3 dump_volume_seg_rec fixed bin, /* number of seg records dumped on this dump volume */ 1 48 3 num_null_vtoce fixed bin, /* number of null vtoce dumped from this physical volume */ 1 49 3 num_vtoce_only fixed bin, /* number of vtoce only */ 1 50 3 mod_after_time fixed bin (71), /* dump all modified since this date */ 1 51 3 dump_type fixed bin, /* type of dump */ 1 52 3 save_time fixed bin (71), /* date, time of start of dump */ 1 53 3 start_time fixed bin (71), /* start time of physical volume pass */ 1 54 3 wakeup_interval fixed bin (71), /* interval between wakeups of dumper in micro secs. */ 1 55 3 incr_ev_chn fixed bin (71), /* event chn used to wakeup incremental dumper */ 1 56 3 incr_skip_count fixed bin, /* number of incr cycles skiped befor purging */ 1 57 3 pre_attach_vol fixed bin, /* if greater then 1 then pre attach output streams */ 1 58 3 vol_idx fixed bin, /* index of multi volume attachment sequence */ 1 59 3 component fixed bin, /* msf component of contents_name seg */ 1 60 2 bits, 1 61 3 volid bit (36), /* uid of dump volume */ 1 62 3 pre_attach_volid (50) bit (36), /* array of volid */ 1 63 3 cycle_uid bit (36), /* uid of this dump cycle */ 1 64 3 pvid bit (36), /* uid of physical volume being dumped */ 1 65 3 flags, 1 66 ( 4 purge bit (1), /* if on purge volume logs */ 1 67 4 auto_vol bit (1), /* if on use automatic dump volume selection */ 1 68 4 disable_error_report bit (1), /* if on disables error reporting */ 1 69 4 arg_init bit (1), /* if on indicates args have been processed */ 1 70 4 manual_free bit (1), /* on if manual free will be done */ 1 71 4 err_online bit (1), /* Flag error output to be online, default to a file */ 1 72 4 detach bit (1), /* if on control detachment of dump volume */ 1 73 4 no_object bit (1), /* if on not copy object from ring 0 */ 1 74 4 no_update bit (1), /* if on prevent vtoce update */ 1 75 4 data_init bit (1), /* if on indicates that data structure has been initialized */ 1 76 4 reset bit (1), /* if on put items back on list */ 1 77 4 accounting bit (1), /* if on enables accounting */ 1 78 4 dmpr_asleep bit (1), /* dumper is asleep - interlock to prevent restart of last volume */ 1 79 4 dump_in_progress bit (1), /* recursive entry interlock */ 1 80 4 not_reported bit (1), /* on if output counts not reported */ 1 81 4 names bit (1), /* collect all names from dirs that are dumped */ 1 82 4 cur_vol_open bit (1), /* if a successful open on this volname */ 1 83 4 trace bit (1), /* ON => trace */ 1 84 4 pad bit (18)) unal, /* fill out the word properly */ 1 85 3 old_256K_switch bit(2) aligned, /* 256K segs enabled prior to this dumper invocation?*/ 1 86 3 rpv_pvid bit (36), /* because the label really doesn't have it */ 1 87 2 chars, 1 88 3 sys_dir char (168), /* system directory where all volume dumper data lives */ 1 89 3 prev_volname char (32), 1 90 3 pre_attach_volname (50) char (32), /* array of volnames */ 1 91 3 io_module char (32), /* name of attached outer module for output io */ 1 92 3 pvname char (32), /* name of physical volume being dumped */ 1 93 3 att_desc char (256), /* attach description for output */ 1 94 3 volname char (32), /* name of dump volume */ 1 95 3 control_name char (32), /* dump control file name */ 1 96 3 myname char (32), /* name of entry called */ 1 97 3 operator char (32), /* operator name */ 1 98 3 restart_pvname char (32), /* where to restart complete or consolidated dump */ 1 99 3 lvname char (32), /* name of logical volume being dumped */ 1 100 2 disk_type fixed bin; /* disk type for recording in the volog */ 1 101 1 102 1 103 /* END OF INCLUDE FILE ... dmpr_data_.incl.pl1 */ 48 2 1 /* BEGIN INCLUDE FILE ... backup_volume_header ... Feb 1976 */ 2 2 2 3 dcl hdp ptr; /* ptr to header */ 2 4 2 5 dcl 1 backup_volume_header based (hdp) aligned, 2 6 2 pattern1 bit (36), /* unique word 1 */ 2 7 2 rec1_type fixed bin, /* record 1 type */ 2 8 2 rec1_len fixed bin, /* length in chars */ 2 9 2 pattern2 bit (36), /* unique word 2 */ 2 10 2 rec2_type fixed bin, /* record 2 type */ 2 11 2 rec2_len fixed bin, /* length in chars */ 2 12 2 pattern3 bit (36), /* unique word 3 */ 2 13 2 time_dumped bit (36); /* dump time of this record */ 2 14 2 15 dcl vtoce_type fixed bin static init (1) options (constant); /* type code for vtoce */ 2 16 dcl dir_type fixed bin static init (2) options (constant); /* type code for directory */ 2 17 dcl seg_type fixed bin static init (3) options (constant); /* type code for segment */ 2 18 dcl null_type fixed bin static init (4) options (constant); /* type code for null record */ 2 19 dcl volume_log_type fixed bin static init (5) options (constant); /* type code for volume log */ 2 20 dcl prev_output_log_type fixed bin static init (6) options (constant); /* type code for prev output log */ 2 21 dcl contents_type fixed bin static init (7) options (constant); /* type code for contents segment of previous volume */ 2 22 dcl info_type fixed bin static init (8) options (constant); /* type code for info structure */ 2 23 2 24 dcl pattern1 bit (36) int static init ("110111000011001100011101101010100101"b) options (constant); 2 25 dcl pattern2 bit (36) int static init ("101001010101101110001100110000111011"b) options (constant); 2 26 dcl pattern3 bit (36) int static init ("001000111100110011100010010101011010"b) options (constant); 2 27 2 28 /* END INCLUDE FILE ... backup_volume_header */ 49 50 51 return; /* never should be call here */ 52 53 error_output: entry (a_code, caller, message); 54 55 /* If an error file is not attached then fabricate a name with a data/time stamp, attach and open it. If 56* successsful then report via online mechanism. */ 57 58 if dmprp = null then do; 59 error_output = "0"b; 60 goto common; 61 end; 62 if dmpr_data_.disable_error_report then return; 63 error_output = "1"b; 64 if dmpr_data_.error_iocbp = null then do; 65 66 call date_time_ (clock (), tstring); 67 uname = "dmpr_err." || type_char (dmpr_data_.dump_type) || "." || substr (tstring, 1, 8)||"."|| substr (tstring, 11, 4); 68 call iox_$attach_ioname ("error_file", error_iocbp, "vfile_ " || uname, code); 69 if code ^= 0 then do; 70 call dmpr_report_$online_output (code, myname, "Unable to attach error file"); 71 return; 72 end; 73 call iox_$open (error_iocbp, 2, ""b, code); 74 if code ^= 0 then do; 75 call dmpr_report_$online_output (code, myname, "Error opening error file"); 76 return; 77 end; 78 dmpr_data_.error_iocbp = error_iocbp; 79 call dmpr_report_$online_output (0, myname, "Error file ^a created", uname); 80 end; 81 82 common: 83 /* If given a non-zero code convert to a message */ 84 short, long = ""; 85 if a_code ^= 0 then 86 call convert_status_code_ (a_code, short, long); 87 /* pick up arg list ptr */ 88 call cu_$arg_list_ptr (argp); 89 /* convert args to message */ 90 call ioa_$general_rs (argp, 3, 4, ret_string, len, "0"b, "0"b); 91 call date_time_ (clock (), tstring); 92 93 if error_output then /* write to file if specified */ 94 call write_message (dmpr_data_.error_iocbp, "1"b); 95 96 /* Write online if requested, if args not initialized yet, or if correct entry */ 97 98 if dmprp = null then 99 call write_message (iox_$error_output, "0"b); 100 101 else if (error_output & dmpr_data_.err_online) | ^error_output | ^dmpr_data_.arg_init then 102 call write_message (iox_$error_output, "0"b); 103 104 return; 105 106 online_output: entry (a_code, caller, message); 107 108 error_output = "0"b; 109 goto common; 110 111 112 write_message: proc (P_iocbp, P_include_time); 113 114 dcl (P_iocbp pointer, 115 P_include_time bit (1) aligned) parameter; 116 117 call ioa_$ioa_switch (P_iocbp, "^[^a^2x^;^s^]^a:^x^a^[:^x^a^;^s^]", 118 P_include_time, substr (tstring, 11, 4), 119 caller, substr (ret_string, 1, len), 120 (a_code ^= 0), long); 121 end write_message; 122 123 end dmpr_report_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/22/84 0911.5 dmpr_report_.pl1 >spec>on>6739-10/22/84>dmpr_report_.pl1 48 1 10/22/84 0901.5 dmpr_data_.incl.pl1 >spec>on>6739-10/22/84>dmpr_data_.incl.pl1 49 2 09/05/80 1136.5 backup_volume_header.incl.pl1 >ldd>include>backup_volume_header.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. P_include_time parameter bit(1) dcl 114 set ref 112 117* P_iocbp parameter pointer dcl 114 set ref 112 117* a_code parameter fixed bin(35,0) dcl 18 set ref 53 85 85* 106 117 arg_init 475(03) based bit(1) level 4 packed unaligned dcl 1-13 ref 101 argp 000120 automatic pointer dcl 23 set ref 88* 90* bits 410 based structure level 2 dcl 1-13 caller parameter char unaligned dcl 21 set ref 53 106 117* clock builtin function dcl 46 ref 66 66 91 91 code 000100 automatic fixed bin(35,0) dcl 17 set ref 68* 69 70* 73* 74 75* convert_status_code_ 000024 constant entry external dcl 41 ref 85 cu_$arg_list_ptr 000014 constant entry external dcl 36 ref 88 date_time_ 000012 constant entry external dcl 35 ref 66 91 disable_error_report 475(02) based bit(1) level 4 packed unaligned dcl 1-13 ref 62 dmpr_data_ based structure level 1 dcl 1-13 dmpr_report_$online_output 000030 constant entry external dcl 43 ref 70 75 79 dmprp 000032 external static pointer initial dcl 1-8 ref 58 62 64 67 78 93 98 101 101 dump_type 372 based fixed bin(17,0) level 3 dcl 1-13 ref 67 err_online 475(05) based bit(1) level 4 packed unaligned dcl 1-13 ref 101 error_iocbp 000122 automatic pointer dcl 24 in procedure "dmpr_report_" set ref 68* 73* 78 error_iocbp 330 based pointer level 3 in structure "dmpr_data_" dcl 1-13 in procedure "dmpr_report_" set ref 64 78* 93* error_output 000225 automatic bit(1) unaligned dcl 27 set ref 59* 63* 93 101 101 108* fixed_bin 350 based structure level 2 dcl 1-13 flags 475 based structure level 3 dcl 1-13 ioa_$general_rs 000016 constant entry external dcl 37 ref 90 ioa_$ioa_switch 000026 constant entry external dcl 42 ref 117 iox_$attach_ioname 000020 constant entry external dcl 39 ref 68 iox_$error_output 000010 external static pointer dcl 31 set ref 98* 101* iox_$open 000022 constant entry external dcl 40 ref 73 len 000224 automatic fixed bin(17,0) dcl 26 set ref 90* 117 117 long 000230 automatic char(100) unaligned dcl 29 set ref 82* 85* 117* message parameter char unaligned dcl 22 ref 53 106 myname 000000 constant char(32) initial unaligned dcl 33 set ref 70* 75* 79* null builtin function dcl 45 ref 58 64 98 ptrs 2 based structure level 2 dcl 1-13 ret_string 000124 automatic char(256) unaligned dcl 25 set ref 90* 117 117 short 000226 automatic char(8) unaligned dcl 28 set ref 82* 85* tstring 000101 automatic char(24) unaligned dcl 19 set ref 66* 67 67 91* 117 117 type_char 000010 constant char(4) initial array unaligned dcl 32 ref 67 uname 000107 automatic char(32) unaligned dcl 20 set ref 67* 68 79* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. backup_volume_header based structure level 1 dcl 2-5 contents_type internal static fixed bin(17,0) initial dcl 2-21 dir_type internal static fixed bin(17,0) initial dcl 2-16 dmpr_data_version_2 internal static fixed bin(17,0) initial dcl 1-9 dmpr_data_version_3 internal static fixed bin(17,0) initial dcl 1-10 hdp automatic pointer dcl 2-3 info_type internal static fixed bin(17,0) initial dcl 2-22 ioa_$rsnnl 000000 constant entry external dcl 38 null_type internal static fixed bin(17,0) initial dcl 2-18 pattern1 internal static bit(36) initial unaligned dcl 2-24 pattern2 internal static bit(36) initial unaligned dcl 2-25 pattern3 internal static bit(36) initial unaligned dcl 2-26 prev_output_log_type internal static fixed bin(17,0) initial dcl 2-20 seg_type internal static fixed bin(17,0) initial dcl 2-17 volume_log_type internal static fixed bin(17,0) initial dcl 2-19 vtoce_type internal static fixed bin(17,0) initial dcl 2-15 NAMES DECLARED BY EXPLICIT CONTEXT. common 000450 constant label dcl 82 ref 60 109 dmpr_report_ 000111 constant entry external dcl 10 error_output 000123 constant entry external dcl 53 online_output 000666 constant entry external dcl 106 write_message 000710 constant entry internal dcl 112 ref 93 98 101 NAME DECLARED BY CONTEXT OR IMPLICATION. substr builtin function ref 67 67 117 117 117 117 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1152 1206 1005 1162 Length 1434 1005 34 212 145 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dmpr_report_ 308 external procedure is an external procedure. write_message internal procedure shares stack frame of external procedure dmpr_report_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dmpr_report_ 000100 code dmpr_report_ 000101 tstring dmpr_report_ 000107 uname dmpr_report_ 000120 argp dmpr_report_ 000122 error_iocbp dmpr_report_ 000124 ret_string dmpr_report_ 000224 len dmpr_report_ 000225 error_output dmpr_report_ 000226 short dmpr_report_ 000230 long dmpr_report_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry ext_entry_desc clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ cu_$arg_list_ptr date_time_ dmpr_report_$online_output ioa_$general_rs ioa_$ioa_switch iox_$attach_ioname iox_$open THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dmprp iox_$error_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000110 51 000116 53 000117 58 000143 59 000150 60 000151 62 000152 63 000157 64 000161 66 000165 67 000204 68 000250 69 000307 70 000311 71 000335 73 000336 74 000357 75 000361 76 000410 78 000411 79 000416 82 000450 85 000455 88 000501 90 000510 91 000555 93 000574 98 000613 101 000633 104 000663 106 000664 108 000706 109 000707 112 000710 117 000712 121 001002 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved