COMPILATION LISTING OF SEGMENT upd_status_task_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1724.8 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 11 upd_status_task_: procedure; 12 13 14 /* 15* 16* This procedure includes various utility task functions which return 17* status information about a directory entry, used by the Multics Online 18* Updater. The following are entries: 19* 20* upd_status_task_$get_uid get segment unique id 21* 22* The first 10 arguments are identical for each entry, being: 23* 24* (1) ctlw bit(36) aligned updater control word 25* (2) areap ptr caller area pointer 26* (3) parentp ptr pointer to parent arglist 27* (4) acode fixed bin(35) status code 28* (5) asev fixed bin severity code 29* (6) taskp ptr task pointer 30* (7) seqno fixed bin task sequence no. 31* (8) dir char(168) dirname of segment 32* (9) seg char(32) entryname of segment 33* (10) uid bit(36) aligned unique id (output for "uid" entry) 34* 35* These entry points are restartable. "acode", "asev", and "taskp" should 36* be initialized to "0", "0", and "null", respectively. upd_status_task_$get_uid 37* additionally expects "uid" to be initialized to "0"b; any non-zero value 38* will be assumed to have been output prior to a system or process failure, 39* and will be verified instead of being overwritten. 40* 41* P. Bos, May 1972 42* 43* Modified Apr. 4, 1973 by Peter B. Kelley to put in a check to issue a warning if 44* the "directory entry" is a directory. 45* 46**/ 47 48 /* */ 49 50 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 51 52 53 dcl ctlw bit(36) aligned, /* updater task control word */ 54 areap ptr, /* caller area pointer */ 55 parentp ptr, /* pointer to parent arglist */ 56 acode fixed bin(35), /* status code */ 57 asev fixed bin, /* severity code */ 58 taskp ptr, /* task pointer */ 59 seqno fixed bin, /* task sequence no. */ 60 dir char(168), /* dirname of segment */ 61 seg char(32), /* entryname of segment */ 62 uid bit(36) aligned; /* unique id of segment */ 63 64 dcl cu_$arg_list_ptr entry (ptr), 65 ioa_$ioa_stream entry options (variable), 66 upd_add_task_ entry (char(*), ptr), 67 upd_print_err_ entry options (variable), 68 upd_status_$long entry (char(*), char(*), fixed bin(1), ptr, ptr, fixed bin(35)), 69 upd_task_err_ entry options (variable); 70 71 dcl (addr, null) builtin; 72 73 dcl error_table_$non_matching_uid ext fixed bin(35), 74 error_table_$not_seg_type ext fixed bin(35); 75 76 dcl argp ptr, /* arglist pointer */ 77 cp ptr; /* control word pointer */ 78 79 dcl code fixed bin(35), /* status code for call */ 80 sev fixed bin init (3); /* severity code for call */ 81 82 dcl logsw bit(1) aligned, /* c.logsw | (c.errsw & asev ^= 0) */ 83 runsw bit(1) aligned; /* c.runsw | c.trunsw */ 84 85 dcl 1 c aligned based (cp), /* exploded control word */ 86 (2 rsw bit(1), /* non-zero if in reverse mode */ 87 2 tasksw bit(1), /* non-zero if to set up task */ 88 2 compsw bit(1), /* non-zero if compile-only task */ 89 2 runsw bit(1), /* non-zero if call to be processed immediately */ 90 2 trunsw bit(1), /* non-zero if subtask list to be processed */ 91 2 logsw bit(1), /* non-zero if in print mode */ 92 2 errsw bit(1)) unal; /* non-zero if to print error tasks only */ 93 94 dcl 1 stat aligned, /* data structure for status_ */ 95 (2 type bit(2), /* entry type */ 96 2 nnames bit(16), /* number of names returned */ 97 2 nrp bit(18), /* rel pointer to name array */ 98 2 dtm bit(36), /* date/time modified */ 99 2 dtu bit(36), /* date/time used */ 100 2 mode bit(5), /* t, r, e, w, a */ 101 2 pad bit(13), /* unused */ 102 2 recs bit(18), /* pages used */ 103 2 dtd bit(36), /* date/time dumped */ 104 2 dtem bit(36), /* date/time entry modified */ 105 2 acct bit(36), /* accounting data */ 106 2 curlen bit(12), /* length of segment */ 107 2 bitcnt bit(24), /* bitcount of segment */ 108 2 did bit(4), /* device id */ 109 2 mdid bit(4), /* ? */ 110 2 copysw bit(1), /* segment copy switch */ 111 2 pad2 bit(9), /* unused */ 112 2 rbs (0:2) bit(6), /* ring brackets */ 113 2 uid bit(36)) unal; /* unique id */ 114 115 /* */ 116 117 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 118 119 120 get_uid: entry (ctlw, areap, parentp, acode, asev, taskp, seqno, dir, seg, uid); 121 122 call cu_$arg_list_ptr (argp); /* get arglist pointer for alloc_task_, etc. */ 123 cp = addr (ctlw); /* get control word pointer */ 124 if c.rsw then /* if in restore phase, we don't do that */ 125 return; /* scram */ 126 if c.tasksw then /* are we to allocate a task? */ 127 call upd_add_task_("upd_status_task_$get_uid", argp); 128 logsw = c.logsw; /* non-zero if printing */ 129 if c.errsw then if asev = 0 then /* errors only? */ 130 logsw = "0"b; /* happy to oblige */ 131 runsw = c.runsw | c.trunsw; /* non-zero if processing */ 132 if logsw then do; /* user is nosy */ 133 call ioa_$ioa_stream ("installation_list_", "^5x^RGet unique id^B^-^a>^a", dir, seg); 134 if asev ^= 0 then /* was there an error last time? */ 135 call upd_print_err_(acode, asev); /* yes, tell user */ 136 end; 137 if runsw then do; /* are we in process mode? */ 138 call upd_status_$long (dir, seg, 1, addr(stat), null, code); 139 if code = 0 then if stat.type = "10"b then do; /* is entry a directory ? */ 140 code = error_table_$not_seg_type; /* give user some kind of error */ 141 sev = 0; /* but only a sev of 0, he might want this! */ 142 end; 143 if code = 0 then if uid ^= ""b then if uid ^= stat.uid then do; 144 code = error_table_$non_matching_uid; /* verify unique id */ 145 sev = 3; /* make sure severity is 3 here */ 146 end; 147 if code ^= 0 then do; /* error? */ 148 err: call upd_task_err_(code, sev, argp, "upd_status_task_$get_uid", "^a>^a", dir, seg); 149 return; /* exit */ 150 end; 151 end; 152 if runsw then /* do it? */ 153 uid = stat.uid; /* do it */ 154 if logsw then if uid ^= "0"b then /* printing too? */ 155 call ioa_$ioa_stream ("installation_list_", "^-^w", uid);/* yes, print non-zero uid */ 156 return; /* not much of a cough... */ 157 158 159 end upd_status_task_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1514.8 upd_status_task_.pl1 >dumps>old>recomp>upd_status_task_.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. acode parameter fixed bin(35,0) dcl 53 set ref 120 134* addr builtin function dcl 71 ref 123 138 138 areap parameter pointer dcl 53 ref 120 argp 000100 automatic pointer dcl 76 set ref 122* 126* 148* asev parameter fixed bin(17,0) dcl 53 set ref 120 129 134 134* c based structure level 1 dcl 85 code 000104 automatic fixed bin(35,0) dcl 79 set ref 138* 139 140* 143 144* 147 148* cp 000102 automatic pointer dcl 76 set ref 123* 124 126 128 129 131 131 ctlw parameter bit(36) dcl 53 set ref 120 123 cu_$arg_list_ptr 000010 constant entry external dcl 64 ref 122 dir parameter char(168) unaligned dcl 53 set ref 120 133* 138* 148* error_table_$non_matching_uid 000024 external static fixed bin(35,0) dcl 73 ref 144 error_table_$not_seg_type 000026 external static fixed bin(35,0) dcl 73 ref 140 errsw 0(06) based bit(1) level 2 packed unaligned dcl 85 ref 129 ioa_$ioa_stream 000012 constant entry external dcl 64 ref 133 154 logsw 000106 automatic bit(1) dcl 82 in procedure "upd_status_task_" set ref 128* 129* 132 154 logsw 0(05) based bit(1) level 2 in structure "c" packed unaligned dcl 85 in procedure "upd_status_task_" ref 128 null builtin function dcl 71 ref 138 138 parentp parameter pointer dcl 53 ref 120 rsw based bit(1) level 2 packed unaligned dcl 85 ref 124 runsw 0(03) based bit(1) level 2 in structure "c" packed unaligned dcl 85 in procedure "upd_status_task_" ref 131 runsw 000107 automatic bit(1) dcl 82 in procedure "upd_status_task_" set ref 131* 137 152 seg parameter char(32) unaligned dcl 53 set ref 120 133* 138* 148* seqno parameter fixed bin(17,0) dcl 53 ref 120 sev 000105 automatic fixed bin(17,0) initial dcl 79 set ref 79* 141* 145* 148* stat 000110 automatic structure level 1 dcl 94 set ref 138 138 taskp parameter pointer dcl 53 ref 120 tasksw 0(01) based bit(1) level 2 packed unaligned dcl 85 ref 126 trunsw 0(04) based bit(1) level 2 packed unaligned dcl 85 ref 131 type 000110 automatic bit(2) level 2 packed unaligned dcl 94 set ref 139 uid parameter bit(36) dcl 53 in procedure "upd_status_task_" set ref 120 143 143 152* 154 154* uid 11 000110 automatic bit(36) level 2 in structure "stat" packed unaligned dcl 94 in procedure "upd_status_task_" set ref 143 152 upd_add_task_ 000014 constant entry external dcl 64 ref 126 upd_print_err_ 000016 constant entry external dcl 64 ref 134 upd_status_$long 000020 constant entry external dcl 64 ref 138 upd_task_err_ 000022 constant entry external dcl 64 ref 148 NAMES DECLARED BY EXPLICIT CONTEXT. err 000341 constant label dcl 148 get_uid 000071 constant entry external dcl 120 upd_status_task_ 000052 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 610 640 455 620 Length 1022 455 30 145 133 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME upd_status_task_ 182 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME upd_status_task_ 000100 argp upd_status_task_ 000102 cp upd_status_task_ 000104 code upd_status_task_ 000105 sev upd_status_task_ 000106 logsw upd_status_task_ 000107 runsw upd_status_task_ 000110 stat upd_status_task_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_list_ptr ioa_$ioa_stream upd_add_task_ upd_print_err_ upd_status_$long upd_task_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$non_matching_uid error_table_$not_seg_type LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 79 000045 11 000051 120 000060 122 000077 123 000106 124 000111 126 000114 128 000137 129 000143 131 000152 132 000163 133 000165 134 000224 137 000244 138 000246 139 000311 140 000317 141 000322 143 000323 144 000332 145 000335 147 000337 148 000341 149 000410 152 000411 154 000416 156 000454 ----------------------------------------------------------- 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