COMPILATION LISTING OF SEGMENT start_dump Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1317.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-06-09,GWMay), approve(85-12-23,MCR7320), audit(86-11-19,GDixon), 16* install(86-11-21,MR12.0-1223): 17* Added ability to abort upon return of non-zero code from backup_dump. This 18* will allow the dumper to abort tape errors and not continue with the next 19* entry in the control file. The reason this should be done is to protect 20* against data loss. 21* 2) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 22* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 23* Update dprint_msg version. 24* END HISTORY COMMENTS */ 25 26 27 28 /* This is the Multics dumper driver. */ 29 start_dump: proc; 30 31 /* Initial coding by T.P. Skinner. */ 32 /* Modified 3 June 1970, R H Campbell. */ 33 /* IPC revision 25 March 1970, N I Morris. */ 34 /* Restart path comparison fixed BIM 12/82 */ 35 /* The Multics dumper driver is called at the time the system is brought up and will run the dumper until the 36* end_dump command is given. If the alarm clock fails to operate properly, the operator may manually start an 37* increment by issuing the wakeup_dump command. */ 38 /* Changed to handle -no_primary, bugs fixed 09/24/79 S. Herbst */ 39 /* MCR 4311 Fix error messages 02/08/80 S. Herbst */ 40 /* Add -dprint and -no_dprint 03/19/80 S. Herbst */ 41 /* Changed to detach tape on cleanup 02/25/81 S. Herbst */ 42 /* Changed to prevent calling end_dump first with dumper uninitialized 07/01/81 S. Herbst */ 43 /* Changed dprinting to see -ds, -he, and -rqt 12/01/81 S. Herbst */ 44 /* Fixed restart option (again), Keith Loepere, 1/30/85. */ 45 46 dcl (m, n, i) fixed bin; /* Temporary storage. */ 47 48 dcl (line, p, sp, ap) ptr; /* .. */ 49 50 dcl string based char (n); /* The argument in the command line. */ 51 52 dcl substring based char (n) aligned; /* For non-copying "substr (dump_dir, 1, n)". */ 53 54 dcl dump_in_progress static bit (1); /* Flag to prevent recursive entry to wakeup_dump. */ 55 dcl dumper_initialized static bit (1) init ("0"b); /* Flag to prevent calling end_dump first */ 56 57 dcl type static fixed bin, /* Code for type of dump. */ 58 pid fixed bin (35), /* Our process ID. */ 59 (map_name, err_name) char (32), /* Name of map "file_". */ 60 device char (16), 61 mode char (6), 62 dump_dir char (168), 63 efpath char (168) aligned, 64 dir char (168) aligned, 65 dir_name char (168), 66 error_string char (32), 67 rings (3) fixed bin (6), 68 rb (3) fixed bin (5), 69 unique_chars_ entry (bit (*) aligned) returns (char (15) aligned); /* Get new map name. */ 70 71 dcl static_map_name char (32) int static; /* saved for end_dump */ 72 dcl time_now fixed bin (52), /* Time this pass started. */ 73 char1 char (1) based; 74 75 dcl chname static fixed bin (71); /* IPC event channel name. */ 76 77 dcl code fixed bin; /* Error code. */ 78 79 80 dcl efl_name char (32); 81 82 dcl errsw bit (1) aligned; 83 84 dcl cleanup condition; 85 86 dcl start_dump$wakeup_dump external; /* Entry to wake up dumper. */ 87 88 dcl backup_map_$beginning_line entry (fixed bin (52), ptr, fixed bin), 89 backup_dump$abort_on_tape_errors entry (fixed bin), 90 backup_util$get_real_name entry (ptr, ptr, fixed bin, fixed bin), 91 bk_output$output_finish entry; 92 93 dcl (error_table_$noarg, 94 error_table_$no_dir, 95 error_table_$argerr, 96 error_table_$ioname_not_found, 97 error_table_$namedup) ext fixed bin (35); 98 99 dcl bk_arg_reader_$dump_arg_reader entry (fixed bin, ptr, fixed bin); 100 101 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)), 102 timer_manager_$reset_alarm_wakeup entry (fixed bin (71)), 103 copy_seg_ entry (char (*), char (*), char (*), char (*), char (*), bit (1) aligned, fixed binary), 104 clock_ entry (fixed bin (52)), /* Get current time. */ 105 convert_date_to_binary_ entry (char (*), fixed bin (52), fixed bin), 106 cu_$arg_list_ptr entry (ptr), /* Arg list location */ 107 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin), /* Get pointer to an argument */ 108 cv_dec_ entry (char (*) aligned) returns (fixed bin (35)), 109 get_group_id_$get_process_id_ entry (fixed bin (35)), 110 ios_$attach entry (char (*), char (*), char (*), char (*), bit (72) aligned), 111 ios_$detach entry (char (*), char (*), char (*), bit (72) aligned), 112 ios_$get_at_entry_ entry (char (*), char (*), char (*), char (*), fixed bin), 113 ios_$order entry (char (*), char (*) aligned, ptr, bit (72) aligned), 114 ios_$read entry (char (*), ptr, fixed bin, fixed bin, fixed bin, bit (72) aligned), 115 ios_$seek entry (char (*), char (*), char (*), fixed bin, bit (72) aligned), 116 (ipc_$create_ev_chn, ipc_$delete_ev_chn) entry (fixed bin (71), fixed bin), 117 ipc_$decl_ev_call_chn entry (fixed bin (71), ptr, ptr, fixed bin, fixed bin), 118 dprint_ entry (char (*) aligned, char (*), ptr, fixed bin), 119 (com_err_, ioa_, ioa_$rs, listen_$start) entry options (variable); 120 121 dcl hphcs_$pxss_set_timax entry (fixed bin (35), fixed bin (35)); 122 123 124 dcl hcs_$append_branchx entry (char (*) aligned, char (*), fixed bin (5), (3) fixed bin (6), 125 char (*) aligned, fixed bin (1), fixed bin (1), fixed bin (24), fixed bin), 126 hcs_$set_ring_brackets entry (char (*) aligned, char (*), (3) fixed bin (5), fixed bin), 127 hcs_$add_acl_entries entry (char (*) aligned, char (*), ptr, fixed bin, fixed bin), 128 get_group_id_$tag_star returns (char (32) aligned), 129 cu_$level_get returns (fixed bin), 130 get_wdir_ returns (char (168) aligned); 131 132 dcl 1 sysd_acl aligned, 133 2 aclname char (32) init ("*.SysDaemon.*"), 134 2 aclmode bit (36) init ("101"b), 135 2 zeropad bit (36) init (""b), 136 2 aclcode fixed bin (35) init (0); 137 138 dcl (addr, index, length, max, null, unspec, substr) builtin; 139 140 1 1 /* BEGIN INCLUDE FILE ... bk_ss_.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(87-03-03,GWMay), approve(87-03-03,MCR7627), audit(87-03-13,Farley), 1 6* install(87-03-30,MR12.1-1018): 1 7* added a writing_map switch to indicate when the dump map is being written. 1 8* END HISTORY COMMENTS */ 1 9 1 10 1 11 /* Modified: July 1982 by G. Palter to add data for true AIM support in IMFT */ 1 12 /* Modified: August 1983 by Robert Coren to add minimum access class */ 1 13 /* Modified: November 1983 by Robert Coren to add "upgrade_to_user_auth" flag */ 1 14 1 15 /* Hierarchy dumper/reloader static data */ 1 16 1 17 dcl (bk_ss_$allow_dir_overwrite bit (1) aligned, /* ON => allow reloaded seg to overwrite dir */ 1 18 bk_ss_$areap pointer, /* pointer to list dir area */ 1 19 bk_ss_$brief_mapsw bit (1) aligned, /* no form-feed for each control file entry */ 1 20 bk_ss_$caller_handles_conditions bit (1) aligned, /* ON => caller has an any_other handler (for IMFT Daemon) */ 1 21 bk_ss_$control_name char(168), /* control file path for dumping */ 1 22 bk_ss_$control_ptr pointer, /* Ptr to control structure for sub entries */ 1 23 bk_ss_$cross_retrievesw bit (1) aligned, /* ON => cross-retrieving this entry */ 1 24 bk_ss_$data_iocb pointer, /* IOCB for dumping/reloading if bk_ss_$preattached */ 1 25 bk_ss_$date fixed binary (52), /* dump all modified since this date */ 1 26 bk_ss_$datesw bit (1) aligned, /* Flags presence of a date input */ 1 27 bk_ss_$debugsw bit (1) aligned, /* Flag to prevent calls to hphcs_ */ 1 28 bk_ss_$dir_trim bit (1) aligned, /* Flag to allow deletion of directories */ 1 29 bk_ss_$dprint_destination char (24), /* for start_dump and reload, -ds for dprinting maps */ 1 30 bk_ss_$dprint_destination_setsw bit (1) aligned, 1 31 bk_ss_$dprint_heading char (64), /* for start_dump and reload, -he for dprinting maps */ 1 32 bk_ss_$dprint_heading_setsw bit (1) aligned, 1 33 bk_ss_$dprint_queue fixed bin, /* Queue number for dprinting maps and error files */ 1 34 bk_ss_$dprint_request_type char (24), /* for start_dump and reload, -rqt for dprinting maps */ 1 35 bk_ss_$dprint_request_type_setsw bit (1) aligned, 1 36 bk_ss_$dprintsw bit (1) aligned, /* Whether to dprint maps for start_dump and reload */ 1 37 bk_ss_$dtdsw bit (1) aligned, /* Flag to check if modified since last dumped */ 1 38 bk_ss_$ename char(32) aligned, /* Branch entry to dump */ 1 39 bk_ss_$err_label label, /* Place to go to attempt error recovery */ 1 40 bk_ss_$err_onlinesw bit(1) aligned, /* Flag error output to be online, default to a file */ 1 41 bk_ss_$error fixed binary, /* Code for location from which signal expected */ 1 42 bk_ss_$holdsw bit(1) aligned, /* controls dismounting of tape for dumper */ 1 43 bk_ss_$hp pointer, /* Pointer to preamble header */ 1 44 bk_ss_$ignore_dates bit (1) aligned, /* Flag to skip check if have older info on tape */ 1 45 bk_ss_$mapsw bit (1) aligned, /* Flag map output */ 1 46 bk_ss_$myname char(16), /* Name by which backup was called */ 1 47 bk_ss_$namesw bit (1) aligned, /* Flag to dump named branch only */ 1 48 bk_ss_$no_contin bit (1) aligned, /* Flag to end dump after catchup dump. */ 1 49 bk_ss_$no_output bit (1) aligned, /* Flag test run or dbugging dumper. No tape output.*/ 1 50 bk_ss_$no_primary bit (1) aligned, /* Flag saying do not use primary pathnames */ 1 51 bk_ss_$no_reload bit (1) aligned, /* Flag debuging reloader. Do not write in hierarchy. */ 1 52 bk_ss_$no_setlvid bit (1) aligned, /* Flag to surpress setting of sons lvid on reload */ 1 53 bk_ss_$ntapes fixed bin, /* number of tape copies for dumper */ 1 54 bk_ss_$onlysw bit (1) aligned, /* ON => disable hiearchy sweep (dumping) or stop when all 1 55* requests satisfied (loading) */ 1 56 bk_ss_$operator char(32), /* operator name */ 1 57 bk_ss_$path_index fixed bin, /* index of entry in backup_control structure */ 1 58 bk_ss_$pathsw bit(1) aligned, /* starting directory path given to dumper */ 1 59 bk_ss_$preattached bit(1) aligned, /* ON => caller has setup I/O switch for dumping/reloading */ 1 60 bk_ss_$pvsw bit(1) aligned, /* Flag to enable physical volume recovery */ 1 61 bk_ss_$pvname char(32) aligned, /* Physical volume name */ 1 62 bk_ss_$qchecksw bit(1) aligned, /* Flag to prevent suspension of quota checking */ 1 63 bk_ss_$quotasw bit(1) aligned, /* Flag to allow quota setting */ 1 64 bk_ss_$restart_dumpsw bit(1) aligned, /* restarting complete or catchup from given point */ 1 65 bk_ss_$restart_path char(168) aligned, /* where to restart complete or catchup dump */ 1 66 bk_ss_$restart_plen fixed bin, /* length of restart pathname */ 1 67 bk_ss_$retrieval_index fixed bin, /* Index of entry in bk_retrieve's structure */ 1 68 bk_ss_$retrievesw bit (1) aligned, /* Flags retrieval */ 1 69 bk_ss_$rlen fixed bin, /* Length if current restart dir for recursion */ 1 70 bk_ss_$rname char(168), /* retrieval file name */ 1 71 bk_ss_$rsize fixed bin, /* length of retrieval file name */ 1 72 bk_ss_$save_path char(168), /* starting directory for dump */ 1 73 bk_ss_$save_plen fixed bin, /* length of starting directory name */ 1 74 bk_ss_$save_time fixed bin(52), /* date, time of start of dump */ 1 75 bk_ss_$segptr pointer, 1 76 bk_ss_$set_dtd bit (1) aligned, /* ON to always set dtd when dumping, OFF never */ 1 77 bk_ss_$set_dtd_explicit bit (1) aligned, /* ON to follow bk_ss_$set_dtd, OFF usual algorithm */ 1 78 bk_ss_$sp pointer, 1 79 bk_ss_$sub_entry bit(1) aligned, /* ON for backup_dump_ and backup_load_ */ 1 80 bk_ss_$sub_entry_errfile bit(1) aligned, /* ON => backup_dump_ and backup_load_ should create error files */ 1 81 bk_ss_$tapesw bit(1) aligned, /* Flag to indicate tape output */ 1 82 bk_ss_$trimsw bit(1) aligned, /* Flag to trim directories on reload */ 1 83 bk_ss_$volume_set_name char (32), /* For future arg -volume_set_name */ 1 84 bk_ss_$wakeup_interval fixed bin(52), /* interval between wakeups of dumper in micro secs. */ 1 85 bk_ss_$wasnt_known bit(1) aligned, /* Flag for segment termination */ 1 86 bk_ss_$enforce_max_access_class bit (1) aligned, /* ON => don't dump anything above give access class */ 1 87 bk_ss_$maximum_access_class bit (72) aligned, /* the access class to enforce on all branches */ 1 88 bk_ss_$enforce_min_access_class bit (1) aligned, /* ON => don't dump anything below give access class */ 1 89 bk_ss_$minimum_access_class bit (72) aligned, /* the minimum access class to enforce on all branches */ 1 90 bk_ss_$dont_dump_upgraded_dirs bit (1) aligned, /* ON => don't dump any directory above given access class */ 1 91 bk_ss_$maximum_dir_access_class bit (72) aligned, /* the access class to enforce on directories */ 1 92 bk_ss_$check_effective_access bit (1) aligned, /* ON => don't dump branches given user can't access */ 1 93 bk_ss_$upgrade_to_user_auth bit (1) aligned, /* ON => set access class of branch being dumped to user's authorization */ 1 94 bk_ss_$user_id character (32) unaligned, /* the user's Person.Project.tag */ 1 95 bk_ss_$user_authorization bit (72) aligned, /* the user's process authorization */ 1 96 bk_ss_$user_ring fixed binary, /* the user's ring of execution */ 1 97 bk_ss_$restore_access_class bit (1) aligned, /* ON => restore access class even when debugging */ 1 98 bk_ss_$enforce_minimum_ring bit (1) aligned, /* ON => don't give anything lower ring bracket */ 1 99 bk_ss_$minimum_ring fixed binary, /* the minimum ring bracket to be used */ 1 100 bk_ss_$translate_access_class bit (1) aligned, /* ON => translate access classes read from tape */ 1 101 bk_ss_$source_attributes_ptr pointer, /* -> source system's AIM attributes */ 1 102 bk_ss_$target_attributes_ptr pointer, /* -> target system's AIM attributes */ 1 103 bk_ss_$writing_map bit (1) aligned) /* ON => in backup_map$try_write */ 1 104 external static; 1 105 1 106 /* END INCLUDE FILE ... bk_ss_.incl.pl1 */ 141 2 1 /* BEGIN INCLUDE FILE ... dprint_arg.incl.pl1 */ 2 2 /* Modified 11/13/74 by Noel I. Morris */ 2 3 /* Modified: 10 April 1981 by G. Palter for version 6 structure -- longer request type names */ 2 4 /* Modified: 30 April 1982 by R. Kovalcik for version 7 structure -- defer_until_process_terminataion */ 2 5 /* Modified: November 1983 by C. Marker for version 8 structure -- no_separator */ 2 6 2 7 /****^ HISTORY COMMENTS: 2 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 2 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 2 10* Add line_nbrs bit for line-numbered printouts, version 9. 2 11* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 2 12* install(88-02-05,MR12.2-1022): 2 13* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 2 14* 3) change(88-08-29,Farley), approve(88-09-16,MCR7911), 2 15* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 2 16* Created a new 64 character forms_name variable, which supersedes the old 2 17* char 24 form_name variable, version 10. 2 18* END HISTORY COMMENTS */ 2 19 2 20 2 21 dcl dpap ptr; /* ptr to argument structure */ 2 22 dcl 1 dprint_arg_buf aligned like dprint_arg; /* Automatic storage for arg. */ 2 23 2 24 dcl 1 dprint_arg based (dpap) aligned, /* argument structure */ 2 25 2 version fixed bin, /* version number of dcl - current version is 9 */ 2 26 2 copies fixed bin, /* number of copies wanted */ 2 27 2 delete fixed bin, /* 1=delete after print */ 2 28 2 queue fixed bin, /* print queue */ 2 29 2 pt_pch fixed bin, /* 1=print, 2=punch */ 2 30 2 notify fixed bin, /* 1 = notify user when done */ 2 31 2 heading char (64), /* first page heading */ 2 32 2 output_module fixed bin, /* 1=print, 2=7punch, 3=mcc, 4=raw, 5=plotter */ 2 33 2 dest char (12), /* version 5 made this a pad - see destination below */ 2 34 /* limit of version 1 structure */ 2 35 2 carriage_control, /* Carriage control flags. */ 2 36 3 nep bit (1) unal, /* TRUE if print trhu perf. */ 2 37 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 2 38 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 2 39 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 2 40 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 2 41 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 2 42 3 esc bit (1) unal, /* version 5 TRUE if text escapes are to be processed */ 2 43 3 no_separator bit (1) unal, /* version 8 TRUE if the inner head and tail sheets are to be suppressed. */ 2 44 3 line_nbrs bit (1) unal, /* version 9, line numbers */ 2 45 3 padding bit (27) unal, 2 46 2 pad (30) fixed bin, 2 47 2 forms char (8), /* version 5 made this a pad - see form_name below */ 2 48 2 lmargin fixed bin, /* left margin */ 2 49 2 line_lth fixed bin, /* max line lth */ 2 50 /* limit of version 2 structure */ 2 51 2 class char (8), /* version 6 made this a pad - see request_type below */ 2 52 2 page_lth fixed bin, /* Paper length arg */ 2 53 /* limit of version 3 structure */ 2 54 2 top_label char (136), /* top-of-page label */ 2 55 2 bottom_label char (136), /* bottom-of-page label */ 2 56 /* limit of version 4 structure */ 2 57 2 bit_count fixed bin (35), /* segment bit count */ 2 58 2 form_name char (24), /* name of special forms needed - moved from forms */ 2 59 /* version 10 made this a pad - see forms_name below */ 2 60 2 destination char (24), /* the long destination - moved from dest */ 2 61 2 chan_stop_path char (168), /* path of user channel stops - future */ 2 62 /* limit of version 5 structure */ 2 63 2 request_type character (24) unaligned, /* request type for the request */ 2 64 /* limit of version 6 structure */ 2 65 2 defer_until_process_termination fixed bin, /* 1 = don't process request until requesting process terminates */ 2 66 2 forms_name char (64) unal; /* name of special forms needed - moved from form_name */ 2 67 /* limit of version 10 structure */ 2 68 2 69 dcl dprint_arg_version_1 fixed bin int static options (constant) init (1); 2 70 dcl dprint_arg_version_2 fixed bin int static options (constant) init (2); 2 71 dcl dprint_arg_version_3 fixed bin int static options (constant) init (3); 2 72 dcl dprint_arg_version_4 fixed bin int static options (constant) init (4); 2 73 dcl dprint_arg_version_5 fixed bin int static options (constant) init (5); 2 74 dcl dprint_arg_version_6 fixed bin int static options (constant) init (6); 2 75 dcl dprint_arg_version_7 fixed bin int static options (constant) init (7); 2 76 dcl dprint_arg_version_8 fixed bin int static options (constant) init (8); 2 77 dcl dprint_arg_version_9 fixed bin int static options (constant) init (9); 2 78 dcl dprint_arg_version_10 fixed bin int static options (constant) init (10); 2 79 /* current version */ 2 80 2 81 dcl ( 2 82 DP_PRINT init (1), 2 83 DP_PUNCH init (2), 2 84 DP_PLOT init (3) 2 85 ) fixed bin static options (constant); /* for dprint_arg.pt_pch */ 2 86 2 87 /* END INCLUDE FILE ... dprint_arg.incl.pl1 */ 142 3 1 /* include io_status */ 3 2 dcl 1 status, /* I/O system status string. */ 3 3 2 code fixed binary, /* Overall error code. */ 3 4 2 bits, /* Fine structure. */ 3 5 3 successful bit (4), /* Logical/physical initiation/termination. */ 3 6 3 transaction_terminated bit (1), /* No further status change. */ 3 7 3 unassigned bit (4), 3 8 3 end_of_data bit (1), /* Obvious. */ 3 9 3 pad bit (5), 3 10 3 ioname_detached bit (1), /* .. */ 3 11 3 pad2 bit (20), 3 12 status_bits based (sp) bit (72) aligned; /* Overlay for IO calls. */ 3 13 /* end io_status */ 143 144 /* */ 145 type = 0; /* Normal entry, indicate "start_dump" called. */ 146 bk_ss_$myname = "start_dump"; 147 bk_ss_$datesw = ""b; /* Reset "dump all since given date" */ 148 bk_ss_$dtdsw = "1"b; /* Default. Dump all changed since last dumped */ 149 go to examine_arguments; /* Go get arguments. */ 150 151 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 152 153 catchup_dump: entry; /* Exception entry to make cutoff-time pass. */ 154 155 type = 2; /* Indicate catchup dump in progress. */ 156 bk_ss_$myname = "catchup_dump"; 157 bk_ss_$dtdsw = ""b; /* Reset "dump all changed since last dumped" */ 158 bk_ss_$datesw = "1"b; /* Use "dump all changed since given date" */ 159 call convert_date_to_binary_ ("2400.", bk_ss_$date, code); /* Get midnight of this date */ 160 bk_ss_$date = bk_ss_$date - 172800000000; /* Default. Dump all changed since midnight 2 days ago. */ 161 go to examine_arguments; /* Go get arguments. */ 162 163 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 164 165 166 complete_dump: entry; /* Entry to do complete dump */ 167 168 type = 1; /* Set up complete_dump code. */ 169 bk_ss_$myname = "complete_dump"; 170 bk_ss_$dtdsw, bk_ss_$datesw = ""b; /* Reset and ignore dates. We are dumping all. */ 171 172 examine_arguments: call cu_$arg_list_ptr (ap); /* Get arg ptr for sub */ 173 174 on cleanup call bk_output$output_finish; /* detach tape if released */ 175 176 bk_ss_$control_name = ""; /* Reset for later test */ 177 bk_ss_$operator = ""; 178 bk_ss_$tapesw = "1"b; 179 bk_ss_$holdsw = "1"b; 180 bk_ss_$wakeup_interval = 3600000000; /* Default, one hour (in micro seconds) */ 181 code = 0; 182 183 184 error_string = "Control file path required."; 185 m = 1; /* First arg */ 186 call cu_$arg_ptr (m, p, n, code); /* Get first arg - should be control file name */ 187 if code ^= 0 then do; 188 arg_error: call com_err_ (code, bk_ss_$myname, error_string); 189 go to final; 190 end; 191 192 if n = 0 then do; /* Must have first argument */ 193 noarg: code = error_table_$noarg; 194 go to arg_error; 195 end; 196 197 if p -> char1 = "-" then go to arg_reader; /* use argument reader if leading hyphen */ 198 if substr (p -> string, n-4, 5) ^= ".dump" 199 then bk_ss_$control_name = p -> string || ".dump"; 200 else bk_ss_$control_name = p -> string; /* Got control file name */ 201 202 error_string = "Operator name required."; 203 m = 2; /* Second arg */ 204 call cu_$arg_ptr (m, p, n, code); /* Get operator */ 205 if code ^= 0 then go to arg_error; 206 if n = 0 then go to noarg; /* Must have operator */ 207 if p -> char1 = "-" then go to arg_reader; /* use standard argument reading routine */ 208 209 bk_ss_$operator = p -> string; /* Got bk_ss_$operator */ 210 211 error_string = ""; 212 m = 3; /* Get third arg */ 213 call cu_$arg_ptr (m, p, n, code); /* Get number of tapes if any */ 214 if code ^= 0 then 215 if code ^= error_table_$noarg then go to arg_error; 216 else do; /* Set up default */ 217 bk_ss_$ntapes = 1; /* Default is one tape */ 218 code = 0; 219 go to args_done; 220 end; 221 222 if p -> char1 = "-" then go to arg_reader; /* Go to standard reading routine */ 223 if p -> string = "2" then bk_ss_$ntapes = 2; 224 else bk_ss_$ntapes = 1; /* Not more than 2 tapes */ 225 226 227 if bk_ss_$myname = "complete_dump" then m = 4; /* Set up to read next arg */ 228 else do; /* Set timer interval if not complete dump */ 229 call cu_$arg_ptr (4, p, n, code); /* Get wakeup interval in minutes */ 230 if code ^= 0 231 then if code ^= error_table_$noarg 232 then go to arg_error; 233 else do; /* Use default wakeup interval */ 234 code = 0; 235 go to args_done; 236 end; 237 238 if p -> char1 = "-" then go to arg_reader; /* Do standart reading */ 239 240 bk_ss_$wakeup_interval = cv_dec_ ((p -> string)); 241 if bk_ss_$wakeup_interval <= 0 then go to interval_error; 242 if bk_ss_$wakeup_interval > 360 then do; 243 interval_error: call ioa_ ("^a: Improper wakeup interval, ^d", bk_ss_$myname, bk_ss_$wakeup_interval); 244 go to final; 245 end; 246 bk_ss_$wakeup_interval = bk_ss_$wakeup_interval * 60000000; /* in micro seconds */ 247 m = 5; /* set up to read next arg */ 248 end; 249 250 arg_reader: 251 call bk_arg_reader_$dump_arg_reader (m, ap, code); /* Get any other arguments */ 252 if code ^= 0 then go to final; 253 args_done: 254 255 if bk_ss_$restart_dumpsw & ^bk_ss_$no_primary then 256 call backup_util$get_real_name (addr (bk_ss_$restart_path), addr (bk_ss_$restart_path), 257 bk_ss_$restart_plen, code); /* Name may be longer or different */ 258 259 if bk_ss_$control_name = "" | bk_ss_$operator = "" then do; 260 code = error_table_$argerr; /* Must have dump control file and operator */ 261 call com_err_ (code, bk_ss_$myname, "Missing control file or operator name"); 262 go to final; 263 end; 264 265 sp = addr (status); /* Get pointer to status structure. */ 266 line = addr (dump_dir); /* Get pointer to IO buffer. */ 267 call ios_$attach ("dump_control", "file_", bk_ss_$control_name, "r", sp -> status_bits); /* Control segment. */ 268 if status.code ^= 0 then do; /* Was an error encountered? */ 269 call com_err_ (status.code, bk_ss_$myname, "ios_$attach for ^a", bk_ss_$control_name); 270 go to final; /* Quit. */ 271 end; 272 273 if type ^= 1 then do; /* Is this a complete dump? */ 274 call ipc_$create_ev_chn (chname, code); /* Create an event channel. */ 275 if code ^= 0 then do; 276 call com_err_ (code, bk_ss_$myname, "ipc_$create_ev_chn"); 277 go to final; 278 end; /* Make channel into call channel. */ 279 call ipc_$decl_ev_call_chn (chname, addr (start_dump$wakeup_dump), null, 1, code); 280 if code ^= 0 then do; /* OK? */ 281 call com_err_ (code, bk_ss_$myname, "ipc_$decl_ev_call_chn"); 282 go to final; /* Give up. */ 283 end; 284 end; 285 286 if (^bk_ss_$debugsw) & (type = 2) then do; 287 call get_group_id_$get_process_id_ (pid); /* Get our process ID. */ 288 call hphcs_$pxss_set_timax (pid, 7000000); /* Help us along with priority. */ 289 end; 290 291 dump_in_progress = "1"b; /* Set flag to prevent recursion. */ 292 dumper_initialized = "1"b; /* and we're off and runnning... */ 293 go to over; /* Start dump pass. */ 294 295 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 296 297 298 wakeup_dump: entry; /* Enter here on alarm or operator wakeup. */ 299 300 sp = addr (status); /* Get pointer for I/O system status. */ 301 if dump_in_progress then do; /* Is a dump pass being done now? */ 302 303 call ioa_ ("wakeup_dump: Dump pass presently in progress; this call ignored."); 304 305 call listen_$start; /* Make sure we don't die. */ 306 go to restart_IO; /* Ignore call. */ 307 end; 308 309 call timer_manager_$reset_alarm_wakeup (chname); /* Reset the alarm in case of manual invocation */ 310 bk_ss_$myname = "wakeup_dump"; 311 dump_in_progress = "1"b; /* Set flag. */ 312 line = addr (dump_dir); /* Get pointer to directory name. */ 313 call ioa_ ("^/Dumper waking up."); 314 315 over: call clock_ (time_now); /* Read the clock. */ 316 317 call ios_$seek ("dump_control", "read", "first", 0, sp -> status_bits); /* Reset read pointer. */ 318 if status.code ^= 0 then do; /* OK? */ 319 call com_err_ (status.code, bk_ss_$myname, "ios_$seek for ^a", bk_ss_$control_name); 320 go to stop; /* Give up. */ 321 end; 322 323 map_name, static_map_name = unique_chars_ (""b) || ".dump.map"; /* Make up new map name. */ 324 rings (1), rings (2), rings (3) = max ((cu_$level_get ()), 4); 325 dir = get_wdir_ (); 326 call hcs_$append_branchx (dir, map_name, 01011b, rings, (get_group_id_$tag_star ()), 0, 0, 0, code); 327 if (code = 0) | (code = error_table_$namedup) 328 then call hcs_$add_acl_entries (dir, map_name, addr (sysd_acl), 1, code); 329 call ios_$attach ("map", "file_", map_name, "w", sp -> status_bits); 330 if status.code ^= 0 then do; /* All OK? */ 331 call com_err_ (status.code, bk_ss_$myname, "ios_$attach for ^a", map_name); 332 go to stop; 333 end; 334 335 336 call ioa_$rs ("Dump control file: ^a, operator: ^a.", dump_dir, n, bk_ss_$control_name, bk_ss_$operator); 337 338 bk_ss_$mapsw = "1"b; /* Make sure map is enabled. */ 339 call backup_map_$beginning_line (time_now, line, n); /* Write the ID line. */ 340 341 next: call ios_$read ("dump_control", line, 0, length (dump_dir), n, sp -> status_bits); 342 343 if status.code ^= 0 then do; /* OK? */ 344 call com_err_ (status.code, bk_ss_$myname, "ios_$read for ^a", bk_ss_$control_name); 345 go to done; /* Give up. */ 346 end; 347 348 n = n - 1; /* Remove NL from consideration. */ 349 call ioa_ ("^/^a", line -> substring); /* Space and type root name. */ 350 /* Is this a path name or comment? */ 351 if substr (dump_dir, 1, length (">")) = ">" then do; 352 353 bk_ss_$save_path = line -> substring; /* save the pathname */ 354 bk_ss_$save_plen = n; /* and its length */ 355 bk_ss_$pathsw = "1"b; /* and signal its presence */ 356 if bk_ss_$restart_dumpsw then do; /* Restarting this dump */ 357 if ^bk_ss_$no_primary then call backup_util$get_real_name 358 (addr (bk_ss_$save_path), addr (bk_ss_$save_path), bk_ss_$save_plen, code); 359 if substr (bk_ss_$save_path, 1, bk_ss_$save_plen) ^= substr (bk_ss_$restart_path, 1, bk_ss_$save_plen) then go to check_end; 360 /* save path contained within restart path */ 361 if bk_ss_$save_plen < bk_ss_$restart_plen then 362 if substr (bk_ss_$restart_path, bk_ss_$save_plen + 1, 1) ^= ">" then go to check_end; 363 /* if save path ^= restart path, then restart path 364* must be = save path || > || */ 365 end; 366 /* D U M P S P E C I F I E D S U B T R E E */ 367 call backup_dump$abort_on_tape_errors (code); 368 if code ^= 0 then 369 go to ended; 370 end; 371 372 check_end: 373 if ^ status.bits.end_of_data then /* Any more lines? */ 374 go to next; 375 376 done: call finish_maps (0); /* Detach and dprint map and error file. */ 377 bk_ss_$mapsw = ""b; /* Clear switch to suppress comment from bk_output. */ 378 if type = 2 then do; /* Is this exceptional case? */ 379 if bk_ss_$no_contin then go to ended; /* DONE. Do not continue */ 380 bk_ss_$holdsw = ""b; /* Dismount tape when finished */ 381 if bk_ss_$tapesw then /* Detach only if tape is present */ 382 call bk_output$output_finish (); /* Detach the tape. */ 383 call ioa_ ("^/Catchup_dump has finished; start_dump will be called."); /* Announce completion. */ 384 type = 0; /* Reset to normal incremental operation. */ 385 bk_ss_$myname = "start_dump"; 386 bk_ss_$dtdsw = "1"b; 387 bk_ss_$holdsw = "1"b; 388 bk_ss_$datesw = ""b; /* Turn off date check */ 389 if ^bk_ss_$debugsw then call hphcs_$pxss_set_timax (pid, 0); /* Reset timax */ 390 go to over; /* Start next pass immediately. */ 391 end; 392 393 call ioa_ ("^/Dump finished."); 394 if type ^= 1 then do; /* Is this either type of incremental dump? */ 395 call timer_manager_$alarm_wakeup (time_now + bk_ss_$wakeup_interval, "00"b, chname); 396 call ioa_ ("Dumper going to sleep.^/"); 397 398 restart_IO: call ios_$order ("user_i/o", "start", null, sp -> status_bits); /* Ensure tty does not lock up. */ 399 400 if status.code ^= 0 then /* OK? */ 401 call com_err_ (status.code, bk_ss_$myname, "ios_$order on user_i/o"); /* No, give error comment. */ 402 dump_in_progress = ""b; /* Indicate dump no longer active. */ 403 bk_ss_$myname = ""; /* done for now */ 404 return; 405 end; 406 407 go to ended; 408 409 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 410 411 412 end_dump: entry; /* Finish up dumping. */ 413 414 bk_ss_$myname = "end_dump"; 415 416 if ^dumper_initialized then do; 417 call com_err_ (0, bk_ss_$myname, "Dumper not initialized; ""end_dump"" ignored."); 418 return; 419 end; 420 421 sp = addr (status); /* Gotta set it again. */ 422 423 ended: bk_ss_$mapsw = ""b; /* Clear map enabling switch for following comment. */ 424 425 bk_ss_$holdsw = ""b; /* Dismount tape when finished */ 426 if bk_ss_$tapesw then /* Detach only if tape present */ 427 call bk_output$output_finish (); 428 call finish_maps (1); /* Detach and dprint map and error file. */ 429 430 stop: call ios_$detach ("dump_control", "", "", sp -> status_bits); /* Detach control segment. */ 431 432 if status.code ^= 0 then /* Terminated OK? */ 433 call com_err_ (status.code, bk_ss_$myname, "ios_$detach for ^a", bk_ss_$control_name); /* Give comment. */ 434 if type ^= 1 then do; /* Is this incremental? */ 435 call ipc_$delete_ev_chn (chname, code); /* Remove the event channel. */ 436 if code ^= 0 then do; /* OK? */ 437 call com_err_ (code, bk_ss_$myname, "ipc_$delete_ev_chn"); 438 go to final; /* Give up. */ 439 end; 440 end; 441 442 443 final: bk_ss_$myname = ""; /* reset name */ 444 445 dumper_initialized = "0"b; /* can't call end_dump twice in a row */ 446 447 return; /* terminate processing */ 448 449 /* ------------------------------------------------------ */ 450 451 finish_maps: proc (detsw); 452 453 dcl detsw fixed bin; /* 0 if det err file only on complete, 1 if always. */ 454 dcl (have_error_file, have_map) bit (1) aligned init ("0"b); 455 456 sp = addr (status); 457 dir = get_wdir_ (); 458 call ios_$detach ("map", "", "", sp -> status_bits); 459 if status.code ^= 0 then /* All OK? */ 460 if status.code ^= error_table_$ioname_not_found then 461 call com_err_ (status.code, bk_ss_$myname, "ios_$detach for ^a", map_name); /* Give comment. */ 462 else; 463 else have_map = "1"b; 464 465 if detsw = 0 then if type ^= 1 then go to skip_errfile; 466 /* Detach error file sometimes only. */ 467 call ios_$get_at_entry_ ("err_file", device, err_name, mode, status.code); /* see if error file made */ 468 if status.code ^= 0 then if status.code ^= error_table_$ioname_not_found 469 then call com_err_ (status.code, bk_ss_$myname, "ios_$get_at_entry_ for err_file"); 470 else; 471 else do; 472 call ios_$detach ("err_file", "", "", sp -> status_bits); 473 if status.code ^= 0 then if status.code ^= error_table_$ioname_not_found then 474 call com_err_ (status.code, bk_ss_$myname, "ios_$detach for ^a", err_name); 475 else; 476 else do; 477 have_error_file = "1"b; 478 i = index (dir, " "); /* make full name */ 479 efpath = substr (dir, 1, i-1) || ">" || err_name; 480 rb (1), rb (2), rb (3) = max ((cu_$level_get ()), 4); 481 call hcs_$set_ring_brackets (efpath, "", rb, code); 482 if code ^= 0 then call com_err_ (code, bk_ss_$myname, "hcs_$set_ring_brackets for err file"); 483 end; 484 end; 485 486 /* Queue maps for printing. */ 487 488 skip_errfile: if ^bk_ss_$dprintsw then return; 489 dpap = addr (dprint_arg_buf); /* Set up args to dprint */ 490 unspec (dprint_arg) = "0"b; 491 dprint_arg.version = dprint_arg_version_9; 492 dprint_arg.copies = 1; 493 dprint_arg.delete = 1; 494 dprint_arg.queue = bk_ss_$dprint_queue; 495 dprint_arg.pt_pch = 1; 496 dprint_arg.notify = 0; 497 dprint_arg.output_module = 1; 498 dprint_arg.lmargin = 0; 499 dprint_arg.line_lth = -1; 500 dprint_arg.page_lth = -1; 501 dprint_arg.top_label = ""; 502 dprint_arg.bottom_label = ""; 503 dprint_arg.form_name = ""; 504 dprint_arg.chan_stop_path = ""; 505 if bk_ss_$dprint_heading_setsw then dprint_arg.heading = bk_ss_$dprint_heading; 506 else 507 dprint_arg.heading = " for " || substr (bk_ss_$control_name, 1, length (dprint_arg.heading) - length (" for ")); 508 if bk_ss_$dprint_request_type_setsw then dprint_arg.request_type = bk_ss_$dprint_request_type; 509 else dprint_arg.request_type = ""; 510 if have_error_file then do; 511 efl_name = err_name; 512 dir_name = dir; 513 if ^bk_ss_$debugsw then call copy_seg_ (dir_name, efl_name, ">udd>SysDaemon>error_file", efl_name, 514 bk_ss_$myname, errsw, code); 515 if code ^= 0 & code ^= error_table_$no_dir then call 516 com_err_ (code, bk_ss_$myname, "copy of error file"); 517 if bk_ss_$dprint_destination_setsw then dprint_arg.destination = bk_ss_$dprint_destination; 518 else dprint_arg.destination = "ERROR FILE"; 519 call dprint_ (dir, err_name, dpap, code); 520 if code ^= 0 then call com_err_ (code, bk_ss_$myname, "Unable to dprint ^a>^a", dir, err_name); 521 end; 522 if ^have_map then return; 523 if type = 0 then do; /* Is this a normal incremental dump? */ 524 dprint_arg.destination = "INCREMENTAL"; 525 DPRINT: if bk_ss_$dprint_destination_setsw then dprint_arg.destination = bk_ss_$dprint_destination; 526 call dprint_ (dir, static_map_name, dpap, code); 527 if code ^= 0 then 528 call com_err_ (code, bk_ss_$myname, "Unable to dprint ^a>^a", dir, static_map_name); 529 end; 530 else if type = 2 then do; /* Is this a catchup dump? */ 531 if bk_ss_$dprint_destination_setsw then dprint_arg.destination = bk_ss_$dprint_destination; 532 else dprint_arg.destination = "CATCHUP MAP"; 533 go to DPRINT; 534 end; 535 else do; /* This is a complete dump. */ 536 if bk_ss_$dprint_destination_setsw then dprint_arg.destination = bk_ss_$dprint_destination; 537 else dprint_arg.destination = "COMPLETE MAP"; 538 dprint_arg.copies = bk_ss_$ntapes; /* Want a map for each set. */ 539 go to DPRINT; 540 end; 541 542 end finish_maps; 543 544 end start_dump; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1302.3 start_dump.pl1 >special_ldd>install>MR12.2-1199>start_dump.pl1 141 1 04/02/87 2006.7 bk_ss_.incl.pl1 >ldd>include>bk_ss_.incl.pl1 142 2 10/28/88 1227.7 dprint_arg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_arg.incl.pl1 143 3 05/06/74 1742.1 io_status.incl.pl1 >ldd>include>io_status.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. aclcode 12 000454 automatic fixed bin(35,0) initial level 2 dcl 132 set ref 132* aclmode 10 000454 automatic bit(36) initial level 2 dcl 132 set ref 132* aclname 000454 automatic char(32) initial level 2 dcl 132 set ref 132* addr builtin function dcl 138 ref 253 253 253 253 265 266 279 279 300 312 327 327 357 357 357 357 421 456 489 ap 000112 automatic pointer dcl 48 set ref 172* 250* backup_dump$abort_on_tape_errors 000034 constant entry external dcl 88 ref 367 backup_map_$beginning_line 000032 constant entry external dcl 88 ref 339 backup_util$get_real_name 000036 constant entry external dcl 88 ref 253 357 bits 1 001014 automatic structure level 2 packed packed unaligned dcl 3-2 bk_arg_reader_$dump_arg_reader 000054 constant entry external dcl 99 ref 250 bk_output$output_finish 000040 constant entry external dcl 88 ref 174 381 426 bk_ss_$control_name 000152 external static char(168) packed unaligned dcl 1-17 set ref 176* 198* 200* 259 267* 269* 319* 336* 344* 432* 506 bk_ss_$date 000154 external static fixed bin(52,0) dcl 1-17 set ref 159* 160* 160 bk_ss_$datesw 000156 external static bit(1) dcl 1-17 set ref 147* 158* 170* 388* bk_ss_$debugsw 000160 external static bit(1) dcl 1-17 ref 286 389 513 bk_ss_$dprint_destination 000162 external static char(24) packed unaligned dcl 1-17 ref 517 525 531 536 bk_ss_$dprint_destination_setsw 000164 external static bit(1) dcl 1-17 ref 517 525 531 536 bk_ss_$dprint_heading 000166 external static char(64) packed unaligned dcl 1-17 ref 505 bk_ss_$dprint_heading_setsw 000170 external static bit(1) dcl 1-17 ref 505 bk_ss_$dprint_queue 000172 external static fixed bin(17,0) dcl 1-17 ref 494 bk_ss_$dprint_request_type 000174 external static char(24) packed unaligned dcl 1-17 ref 508 bk_ss_$dprint_request_type_setsw 000176 external static bit(1) dcl 1-17 ref 508 bk_ss_$dprintsw 000200 external static bit(1) dcl 1-17 ref 488 bk_ss_$dtdsw 000202 external static bit(1) dcl 1-17 set ref 148* 157* 170* 386* bk_ss_$holdsw 000204 external static bit(1) dcl 1-17 set ref 179* 380* 387* 425* bk_ss_$mapsw 000206 external static bit(1) dcl 1-17 set ref 338* 377* 423* bk_ss_$myname 000210 external static char(16) packed unaligned dcl 1-17 set ref 146* 156* 169* 188* 227 243* 261* 269* 276* 281* 310* 319* 331* 344* 385* 400* 403* 414* 417* 432* 437* 443* 459* 468* 473* 482* 513* 515* 520* 527* bk_ss_$no_contin 000212 external static bit(1) dcl 1-17 ref 379 bk_ss_$no_primary 000214 external static bit(1) dcl 1-17 ref 253 357 bk_ss_$ntapes 000216 external static fixed bin(17,0) dcl 1-17 set ref 217* 223* 224* 538 bk_ss_$operator 000220 external static char(32) packed unaligned dcl 1-17 set ref 177* 209* 259 336* bk_ss_$pathsw 000222 external static bit(1) dcl 1-17 set ref 355* bk_ss_$restart_dumpsw 000224 external static bit(1) dcl 1-17 ref 253 356 bk_ss_$restart_path 000226 external static char(168) dcl 1-17 set ref 253 253 253 253 359 361 bk_ss_$restart_plen 000230 external static fixed bin(17,0) dcl 1-17 set ref 253* 361 bk_ss_$save_path 000232 external static char(168) packed unaligned dcl 1-17 set ref 353* 357 357 357 357 359 bk_ss_$save_plen 000234 external static fixed bin(17,0) dcl 1-17 set ref 354* 357* 359 359 361 361 bk_ss_$tapesw 000236 external static bit(1) dcl 1-17 set ref 178* 381 426 bk_ss_$wakeup_interval 000240 external static fixed bin(52,0) dcl 1-17 set ref 180* 240* 241 242 243* 246* 246 395 bottom_label 142 based char(136) level 2 dcl 2-24 set ref 502* chan_stop_path 221 based char(168) level 2 dcl 2-24 set ref 504* char1 based char(1) packed unaligned dcl 72 ref 197 207 222 238 chname 000024 internal static fixed bin(71,0) dcl 75 set ref 274* 279* 309* 395* 435* cleanup 000446 stack reference condition dcl 84 ref 174 clock_ 000064 constant entry external dcl 101 ref 315 code 001014 automatic fixed bin(17,0) level 2 in structure "status" dcl 3-2 in procedure "start_dump" set ref 268 269* 318 319* 330 331* 343 344* 400 400* 432 432* 459 459 459* 467* 468 468 468* 473 473 473* code 000434 automatic fixed bin(17,0) dcl 77 in procedure "start_dump" set ref 159* 181* 186* 187 188* 193* 204* 205 213* 214 214 218* 229* 230 230 234* 250* 252 253* 260* 261* 274* 275 276* 279* 280 281* 326* 327 327 327* 357* 367* 368 435* 436 437* 481* 482 482* 513* 515 515 515* 519* 520 520* 526* 527 527* com_err_ 000124 constant entry external dcl 101 ref 188 261 269 276 281 319 331 344 400 417 432 437 459 468 473 482 515 520 527 convert_date_to_binary_ 000066 constant entry external dcl 101 ref 159 copies 1 based fixed bin(17,0) level 2 dcl 2-24 set ref 492* 538* copy_seg_ 000062 constant entry external dcl 101 ref 513 cu_$arg_list_ptr 000070 constant entry external dcl 101 ref 172 cu_$arg_ptr 000072 constant entry external dcl 101 ref 186 204 213 229 cu_$level_get 000146 constant entry external dcl 124 ref 324 480 cv_dec_ 000074 constant entry external dcl 101 ref 240 delete 2 based fixed bin(17,0) level 2 dcl 2-24 set ref 493* destination 213 based char(24) level 2 dcl 2-24 set ref 517* 518* 524* 525* 531* 532* 536* 537* detsw parameter fixed bin(17,0) dcl 453 ref 451 465 device 000135 automatic char(16) packed unaligned dcl 57 set ref 467* dir 000270 automatic char(168) dcl 57 set ref 325* 326* 327* 457* 478 479 512 519* 520* 526* 527* dir_name 000342 automatic char(168) packed unaligned dcl 57 set ref 512* 513* dpap 000470 automatic pointer dcl 2-21 set ref 489* 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 506 508 509 517 518 519* 524 525 526* 531 532 536 537 538 dprint_ 000122 constant entry external dcl 101 ref 519 526 dprint_arg based structure level 1 dcl 2-24 set ref 490* dprint_arg_buf 000472 automatic structure level 1 dcl 2-22 set ref 489 dprint_arg_version_9 constant fixed bin(17,0) initial dcl 2-77 ref 491 dump_dir 000144 automatic char(168) packed unaligned dcl 57 set ref 266 312 336* 341 341 351 dump_in_progress 000010 internal static bit(1) packed unaligned dcl 54 set ref 291* 301 311* 402* dumper_initialized 000011 internal static bit(1) initial packed unaligned dcl 55 set ref 292* 416 445* efl_name 000435 automatic char(32) packed unaligned dcl 80 set ref 511* 513* 513* efpath 000216 automatic char(168) dcl 57 set ref 479* 481* end_of_data 1(09) 001014 automatic bit(1) level 3 packed packed unaligned dcl 3-2 set ref 372 err_name 000125 automatic char(32) packed unaligned dcl 57 set ref 467* 473* 479 511 519* 520* error_string 000414 automatic char(32) packed unaligned dcl 57 set ref 184* 188* 202* 211* error_table_$argerr 000046 external static fixed bin(35,0) dcl 93 ref 260 error_table_$ioname_not_found 000050 external static fixed bin(35,0) dcl 93 ref 459 468 473 error_table_$namedup 000052 external static fixed bin(35,0) dcl 93 ref 327 error_table_$no_dir 000044 external static fixed bin(35,0) dcl 93 ref 515 error_table_$noarg 000042 external static fixed bin(35,0) dcl 93 ref 193 214 230 errsw 000445 automatic bit(1) dcl 82 set ref 513* form_name 205 based char(24) level 2 dcl 2-24 set ref 503* get_group_id_$get_process_id_ 000076 constant entry external dcl 101 ref 287 get_group_id_$tag_star 000144 constant entry external dcl 124 ref 326 get_wdir_ 000150 constant entry external dcl 124 ref 325 457 have_error_file 001024 automatic bit(1) initial dcl 454 set ref 454* 477* 510 have_map 001025 automatic bit(1) initial dcl 454 set ref 454* 463* 522 hcs_$add_acl_entries 000142 constant entry external dcl 124 ref 327 hcs_$append_branchx 000136 constant entry external dcl 124 ref 326 hcs_$set_ring_brackets 000140 constant entry external dcl 124 ref 481 heading 6 based char(64) level 2 dcl 2-24 set ref 505* 506* 506 hphcs_$pxss_set_timax 000134 constant entry external dcl 121 ref 288 389 i 000102 automatic fixed bin(17,0) dcl 46 set ref 478* 479 index builtin function dcl 138 ref 478 ioa_ 000126 constant entry external dcl 101 ref 243 303 313 349 383 393 396 ioa_$rs 000130 constant entry external dcl 101 ref 336 ios_$attach 000100 constant entry external dcl 101 ref 267 329 ios_$detach 000102 constant entry external dcl 101 ref 430 458 472 ios_$get_at_entry_ 000104 constant entry external dcl 101 ref 467 ios_$order 000106 constant entry external dcl 101 ref 398 ios_$read 000110 constant entry external dcl 101 ref 341 ios_$seek 000112 constant entry external dcl 101 ref 317 ipc_$create_ev_chn 000114 constant entry external dcl 101 ref 274 ipc_$decl_ev_call_chn 000120 constant entry external dcl 101 ref 279 ipc_$delete_ev_chn 000116 constant entry external dcl 101 ref 435 length builtin function dcl 138 ref 341 341 351 506 506 line 000104 automatic pointer dcl 48 set ref 266* 312* 339* 341* 349 353 line_lth 74 based fixed bin(17,0) level 2 dcl 2-24 set ref 499* listen_$start 000132 constant entry external dcl 101 ref 305 lmargin 73 based fixed bin(17,0) level 2 dcl 2-24 set ref 498* m 000100 automatic fixed bin(17,0) dcl 46 set ref 185* 186* 203* 204* 212* 213* 227* 247* 250* map_name 000115 automatic char(32) packed unaligned dcl 57 set ref 323* 326* 327* 329* 331* 459* max builtin function dcl 138 ref 324 480 mode 000142 automatic char(6) packed unaligned dcl 57 set ref 467* n 000101 automatic fixed bin(17,0) dcl 46 set ref 186* 192 198 198 198 200 204* 206 209 213* 223 229* 240 336* 339* 341* 348* 348 349 349 353 354 notify 5 based fixed bin(17,0) level 2 dcl 2-24 set ref 496* null builtin function dcl 138 ref 279 279 398 398 output_module 26 based fixed bin(17,0) level 2 dcl 2-24 set ref 497* p 000106 automatic pointer dcl 48 set ref 186* 197 198 198 200 204* 207 209 213* 222 223 229* 238 240 page_lth 77 based fixed bin(17,0) level 2 dcl 2-24 set ref 500* pid 000114 automatic fixed bin(35,0) dcl 57 set ref 287* 288* 389* pt_pch 4 based fixed bin(17,0) level 2 dcl 2-24 set ref 495* queue 3 based fixed bin(17,0) level 2 dcl 2-24 set ref 494* rb 000427 automatic fixed bin(5,0) array dcl 57 set ref 480* 480* 480* 481* request_type 273 based char(24) level 2 packed packed unaligned dcl 2-24 set ref 508* 509* rings 000424 automatic fixed bin(6,0) array dcl 57 set ref 324* 324* 324* 326* sp 000110 automatic pointer dcl 48 set ref 265* 267 300* 317 329 341 398 421* 430 456* 458 472 start_dump$wakeup_dump 000030 external static fixed bin(17,0) dcl 86 set ref 279 279 static_map_name 000013 internal static char(32) packed unaligned dcl 71 set ref 323* 526* 527* status 001014 automatic structure level 1 unaligned dcl 3-2 set ref 265 300 421 456 status_bits based bit(72) dcl 3-2 set ref 267* 317* 329* 341* 398* 430* 458* 472* string based char packed unaligned dcl 50 ref 198 198 200 209 223 240 substr builtin function dcl 138 ref 198 351 359 359 361 479 506 substring based char dcl 52 set ref 349* 353 sysd_acl 000454 automatic structure level 1 dcl 132 set ref 327 327 time_now 000432 automatic fixed bin(52,0) dcl 72 set ref 315* 339* 395 timer_manager_$alarm_wakeup 000056 constant entry external dcl 101 ref 395 timer_manager_$reset_alarm_wakeup 000060 constant entry external dcl 101 ref 309 top_label 100 based char(136) level 2 dcl 2-24 set ref 501* type 000012 internal static fixed bin(17,0) dcl 57 set ref 145* 155* 168* 273 286 378 384* 394 434 465 523 530 unique_chars_ 000026 constant entry external dcl 57 ref 323 unspec builtin function dcl 138 set ref 490* version based fixed bin(17,0) level 2 dcl 2-24 set ref 491* zeropad 11 000454 automatic bit(36) initial level 2 dcl 132 set ref 132* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DP_PLOT internal static fixed bin(17,0) initial dcl 2-81 DP_PRINT internal static fixed bin(17,0) initial dcl 2-81 DP_PUNCH internal static fixed bin(17,0) initial dcl 2-81 bk_ss_$allow_dir_overwrite external static bit(1) dcl 1-17 bk_ss_$areap external static pointer dcl 1-17 bk_ss_$brief_mapsw external static bit(1) dcl 1-17 bk_ss_$caller_handles_conditions external static bit(1) dcl 1-17 bk_ss_$check_effective_access external static bit(1) dcl 1-17 bk_ss_$control_ptr external static pointer dcl 1-17 bk_ss_$cross_retrievesw external static bit(1) dcl 1-17 bk_ss_$data_iocb external static pointer dcl 1-17 bk_ss_$dir_trim external static bit(1) dcl 1-17 bk_ss_$dont_dump_upgraded_dirs external static bit(1) dcl 1-17 bk_ss_$ename external static char(32) dcl 1-17 bk_ss_$enforce_max_access_class external static bit(1) dcl 1-17 bk_ss_$enforce_min_access_class external static bit(1) dcl 1-17 bk_ss_$enforce_minimum_ring external static bit(1) dcl 1-17 bk_ss_$err_label external static label variable dcl 1-17 bk_ss_$err_onlinesw external static bit(1) dcl 1-17 bk_ss_$error external static fixed bin(17,0) dcl 1-17 bk_ss_$hp external static pointer dcl 1-17 bk_ss_$ignore_dates external static bit(1) dcl 1-17 bk_ss_$maximum_access_class external static bit(72) dcl 1-17 bk_ss_$maximum_dir_access_class external static bit(72) dcl 1-17 bk_ss_$minimum_access_class external static bit(72) dcl 1-17 bk_ss_$minimum_ring external static fixed bin(17,0) dcl 1-17 bk_ss_$namesw external static bit(1) dcl 1-17 bk_ss_$no_output external static bit(1) dcl 1-17 bk_ss_$no_reload external static bit(1) dcl 1-17 bk_ss_$no_setlvid external static bit(1) dcl 1-17 bk_ss_$onlysw external static bit(1) dcl 1-17 bk_ss_$path_index external static fixed bin(17,0) dcl 1-17 bk_ss_$preattached external static bit(1) dcl 1-17 bk_ss_$pvname external static char(32) dcl 1-17 bk_ss_$pvsw external static bit(1) dcl 1-17 bk_ss_$qchecksw external static bit(1) dcl 1-17 bk_ss_$quotasw external static bit(1) dcl 1-17 bk_ss_$restore_access_class external static bit(1) dcl 1-17 bk_ss_$retrieval_index external static fixed bin(17,0) dcl 1-17 bk_ss_$retrievesw external static bit(1) dcl 1-17 bk_ss_$rlen external static fixed bin(17,0) dcl 1-17 bk_ss_$rname external static char(168) packed unaligned dcl 1-17 bk_ss_$rsize external static fixed bin(17,0) dcl 1-17 bk_ss_$save_time external static fixed bin(52,0) dcl 1-17 bk_ss_$segptr external static pointer dcl 1-17 bk_ss_$set_dtd external static bit(1) dcl 1-17 bk_ss_$set_dtd_explicit external static bit(1) dcl 1-17 bk_ss_$source_attributes_ptr external static pointer dcl 1-17 bk_ss_$sp external static pointer dcl 1-17 bk_ss_$sub_entry external static bit(1) dcl 1-17 bk_ss_$sub_entry_errfile external static bit(1) dcl 1-17 bk_ss_$target_attributes_ptr external static pointer dcl 1-17 bk_ss_$translate_access_class external static bit(1) dcl 1-17 bk_ss_$trimsw external static bit(1) dcl 1-17 bk_ss_$upgrade_to_user_auth external static bit(1) dcl 1-17 bk_ss_$user_authorization external static bit(72) dcl 1-17 bk_ss_$user_id external static char(32) packed unaligned dcl 1-17 bk_ss_$user_ring external static fixed bin(17,0) dcl 1-17 bk_ss_$volume_set_name external static char(32) packed unaligned dcl 1-17 bk_ss_$wasnt_known external static bit(1) dcl 1-17 bk_ss_$writing_map external static bit(1) dcl 1-17 dprint_arg_version_1 internal static fixed bin(17,0) initial dcl 2-69 dprint_arg_version_10 internal static fixed bin(17,0) initial dcl 2-78 dprint_arg_version_2 internal static fixed bin(17,0) initial dcl 2-70 dprint_arg_version_3 internal static fixed bin(17,0) initial dcl 2-71 dprint_arg_version_4 internal static fixed bin(17,0) initial dcl 2-72 dprint_arg_version_5 internal static fixed bin(17,0) initial dcl 2-73 dprint_arg_version_6 internal static fixed bin(17,0) initial dcl 2-74 dprint_arg_version_7 internal static fixed bin(17,0) initial dcl 2-75 dprint_arg_version_8 internal static fixed bin(17,0) initial dcl 2-76 NAMES DECLARED BY EXPLICIT CONTEXT. DPRINT 004162 constant label dcl 525 ref 533 539 arg_error 000651 constant label dcl 188 ref 194 205 214 230 arg_reader 001204 constant label dcl 250 ref 197 207 222 238 args_done 001221 constant label dcl 253 ref 219 235 catchup_dump 000471 constant entry external dcl 153 check_end 002552 constant label dcl 372 ref 359 361 complete_dump 000541 constant entry external dcl 166 done 002555 constant label dcl 376 ref 345 end_dump 003007 constant entry external dcl 412 ended 003052 constant label dcl 423 ref 368 379 407 examine_arguments 000560 constant label dcl 172 ref 149 161 final 003217 constant label dcl 443 ref 189 244 252 262 270 277 282 438 finish_maps 003226 constant entry internal dcl 451 ref 376 428 interval_error 001152 constant label dcl 243 ref 241 next 002334 constant label dcl 341 ref 372 noarg 000675 constant label dcl 193 ref 206 over 001655 constant label dcl 315 set ref 293 390 restart_IO 002715 constant label dcl 398 ref 306 skip_errfile 003641 constant label dcl 488 ref 465 start_dump 000450 constant entry external dcl 29 stop 003067 constant label dcl 430 ref 320 332 wakeup_dump 001564 constant entry external dcl 298 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5350 5612 4323 5360 Length 6276 4323 242 450 1025 16 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME start_dump 732 external procedure is an external procedure. on unit on line 174 64 on unit finish_maps internal procedure shares stack frame of external procedure start_dump. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 dump_in_progress start_dump 000011 dumper_initialized start_dump 000012 type start_dump 000013 static_map_name start_dump 000024 chname start_dump STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME start_dump 000100 m start_dump 000101 n start_dump 000102 i start_dump 000104 line start_dump 000106 p start_dump 000110 sp start_dump 000112 ap start_dump 000114 pid start_dump 000115 map_name start_dump 000125 err_name start_dump 000135 device start_dump 000142 mode start_dump 000144 dump_dir start_dump 000216 efpath start_dump 000270 dir start_dump 000342 dir_name start_dump 000414 error_string start_dump 000424 rings start_dump 000427 rb start_dump 000432 time_now start_dump 000434 code start_dump 000435 efl_name start_dump 000445 errsw start_dump 000454 sysd_acl start_dump 000470 dpap start_dump 000472 dprint_arg_buf start_dump 001014 status start_dump 001024 have_error_file finish_maps 001025 have_map finish_maps THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac mpfx2 enable_op shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. backup_dump$abort_on_tape_errors backup_map_$beginning_line backup_util$get_real_name bk_arg_reader_$dump_arg_reader bk_output$output_finish clock_ com_err_ convert_date_to_binary_ copy_seg_ cu_$arg_list_ptr cu_$arg_ptr cu_$level_get cv_dec_ dprint_ get_group_id_$get_process_id_ get_group_id_$tag_star get_wdir_ hcs_$add_acl_entries hcs_$append_branchx hcs_$set_ring_brackets hphcs_$pxss_set_timax ioa_ ioa_$rs ios_$attach ios_$detach ios_$get_at_entry_ ios_$order ios_$read ios_$seek ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn listen_$start timer_manager_$alarm_wakeup timer_manager_$reset_alarm_wakeup unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bk_ss_$control_name bk_ss_$date bk_ss_$datesw bk_ss_$debugsw bk_ss_$dprint_destination bk_ss_$dprint_destination_setsw bk_ss_$dprint_heading bk_ss_$dprint_heading_setsw bk_ss_$dprint_queue bk_ss_$dprint_request_type bk_ss_$dprint_request_type_setsw bk_ss_$dprintsw bk_ss_$dtdsw bk_ss_$holdsw bk_ss_$mapsw bk_ss_$myname bk_ss_$no_contin bk_ss_$no_primary bk_ss_$ntapes bk_ss_$operator bk_ss_$pathsw bk_ss_$restart_dumpsw bk_ss_$restart_path bk_ss_$restart_plen bk_ss_$save_path bk_ss_$save_plen bk_ss_$tapesw bk_ss_$wakeup_interval error_table_$argerr error_table_$ioname_not_found error_table_$namedup error_table_$no_dir error_table_$noarg start_dump$wakeup_dump LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 132 000436 29 000447 145 000456 146 000460 147 000464 148 000465 149 000467 153 000470 155 000477 156 000502 157 000506 158 000507 159 000511 160 000533 161 000537 166 000540 168 000547 169 000552 170 000556 172 000560 174 000566 176 000607 177 000614 178 000620 179 000622 180 000623 181 000625 184 000626 185 000631 186 000633 187 000647 188 000651 189 000672 192 000673 193 000675 194 000700 197 000701 198 000706 200 000731 202 000737 203 000742 204 000744 205 000760 206 000762 207 000764 209 000771 211 000776 212 001001 213 001003 214 001017 217 001024 218 001026 219 001027 222 001030 223 001035 224 001046 227 001051 229 001061 230 001077 234 001104 235 001105 238 001106 240 001113 241 001143 242 001146 243 001152 244 001175 246 001176 247 001202 250 001204 252 001217 253 001221 259 001246 260 001261 261 001263 262 001306 265 001307 266 001311 267 001313 268 001352 269 001354 270 001407 273 001410 274 001414 275 001424 276 001426 277 001452 279 001453 280 001500 281 001502 282 001526 286 001527 287 001535 288 001543 291 001556 292 001561 293 001562 298 001563 300 001572 301 001574 303 001577 305 001612 306 001617 309 001620 310 001626 311 001633 312 001635 313 001637 315 001655 317 001664 318 001726 319 001730 320 001763 323 001764 324 002016 325 002033 326 002042 327 002126 329 002167 330 002226 331 002230 332 002263 336 002264 338 002317 339 002322 341 002334 343 002376 344 002400 345 002433 348 002434 349 002436 351 002460 353 002464 354 002473 355 002475 356 002477 357 002501 359 002522 361 002532 367 002542 368 002550 372 002552 376 002555 377 002560 378 002562 379 002565 380 002567 381 002570 383 002576 384 002612 385 002614 386 002620 387 002622 388 002623 389 002624 390 002637 393 002640 394 002656 395 002662 396 002701 398 002715 400 002750 402 002776 403 003000 404 003004 407 003005 412 003006 414 003015 416 003022 417 003024 418 003047 421 003050 423 003052 425 003054 426 003055 428 003063 430 003067 432 003117 434 003151 435 003155 436 003165 437 003167 438 003216 443 003217 445 003224 447 003225 451 003226 454 003230 456 003232 457 003234 458 003243 459 003271 462 003325 463 003326 465 003330 467 003337 468 003372 470 003422 472 003423 473 003451 475 003505 477 003506 478 003510 479 003521 480 003547 481 003566 482 003613 488 003641 489 003645 490 003647 491 003652 492 003654 493 003656 494 003657 495 003661 496 003663 497 003664 498 003665 499 003666 500 003670 501 003671 502 003674 503 003677 504 003702 505 003705 506 003714 508 003732 509 003742 510 003745 511 003747 512 003752 513 003755 515 004021 517 004051 518 004062 519 004066 520 004112 522 004150 523 004153 524 004156 525 004162 526 004172 527 004216 529 004254 530 004255 531 004257 532 004267 533 004273 536 004274 537 004304 538 004310 539 004312 542 004313 ----------------------------------------------------------- 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