COMPILATION LISTING OF SEGMENT iod_overseer_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1657.5 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 12 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 13 14 iodc_overseer_: 15 iod_overseer_: 16 procedure; 17 18 /* Login responder for I/O Daemon (IO.SysDaemon) */ 19 /* It asks if it is supposed to be coordinator or driver, 20* * so it can call the appropriate initializing routine. 21* * For a coordinator, the "coordinator lock" is checked to make sure 22* * that there is not already a coordinator running; for a driver process, 23* * the lock is checked to make sure that a coordinator IS running, and if 24* * not, we wait a bit and try once more. 25**/ 26 27 /* Modified by J. Stern, 12/31/74 */ 28 /* Modified by B. Margulies November 1980 for search rules and test improvements, and to rename to iod_overseer_ */ 29 /* Modified: 6 May 1982 by G. Palter to set the working directory */ 30 31 dcl (Test_dir, Test_entry) char (*) parameter; 32 33 dcl home_dir character (168); 34 dcl iod_tables_entryname char (32); 35 dcl iod_tables_dir char (168); 36 dcl this_is_a_test bit (1) aligned; 37 dcl exit_command char (6) aligned; 38 dcl code fixed bin (35); 39 dcl lock_ptr ptr int static init (null); 40 dcl type char (32) varying; 41 dcl iod_tables char (32); 42 43 dcl any_other condition; 44 45 dcl 1 daemon_search aligned static options (constant), /* Daemon search rules */ 46 2 number fixed bin init (1), 47 2 dirs (1) char (168) init ("io_daemon"); 48 49 50 dcl 1 coord_lock_seg aligned based, 51 2 coord_lock bit (36), 52 2 driver_lock bit (36); 53 54 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 1 6 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 7 2 version fixed bin, /* version of this structure - must be set, see below */ 1 8 2 switches aligned, /* various bit switch values */ 1 9 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 10 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 11 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 12 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 13 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 14 3 padding bit (31) unaligned init (""b), /* pads it out to t word */ 1 15 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 16 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 17 1 18 /* Limit of data defined for version 2 */ 1 19 1 20 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 21 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 22 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 23 /* minimum of 30 seconds required for repeat */ 1 24 /* otherwise, no repeat will occur */ 1 25 /* Limit of data defined for version 4 */ 1 26 1 27 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 28 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 29 1 30 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 31 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 32 dcl query_info_version_5 fixed bin int static options (constant) init (5); /* the current version number */ 1 33 1 34 /* END INCLUDE FILE query_info.incl.pl1 */ 55 56 57 dcl change_wdir_ entry (char (168) aligned, fixed bin (35)); 58 dcl com_err_ entry options (variable); 59 dcl command_query_ entry () options (variable); 60 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, fixed bin (35)); 61 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 62 dcl hcs_$initiate_search_rules entry (ptr, fixed bin (35)); 63 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 64 dcl privileged_make_seg_ entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 65 dcl iodc_$iodc_init entry (char (*), bit (1) aligned, char (*)); 66 dcl iodd_$iodd_init entry (char (*), bit (1) aligned); 67 dcl ioa_ entry options (variable); 68 dcl logout entry; 69 dcl set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); 70 dcl set_lock_$unlock entry (bit (36) aligned, fixed bin (35)); 71 dcl system_privilege_$dir_priv_on entry (fixed bin (35)); 72 dcl system_privilege_$ipc_priv_on entry (fixed bin (35)); 73 dcl system_privilege_$ring1_priv_on entry (fixed bin (35)); 74 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 75 dcl user_info_$homedir entry (char (*)); 76 77 78 79 dcl error_table_$argerr fixed bin (35) ext static; 80 dcl error_table_$noentry fixed bin (35) ext static; 81 dcl error_table_$lock_wait_time_exceeded fixed bin (35) ext static; 82 dcl error_table_$invalid_lock_reset fixed bin (35) ext static; 83 dcl error_table_$locked_by_this_process fixed bin (35) ext static; 84 85 86 dcl (addr, null) builtin; 87 88 89 iod_tables_dir = ">daemon_dir_dir>io_daemon_dir"; 90 iod_tables_entryname = "iod_tables"; 91 this_is_a_test = "0"b; /* indicates we're not in test mode */ 92 93 exit_command = "logout"; 94 on any_other call early_handler; 95 call hcs_$initiate_search_rules (addr (daemon_search), code); 96 if code ^= 0 then 97 call com_err_ (code, "iod_overseer_", 98 "Warning: could not set search rules to the tagged set ""io_daemon"". Default search rules in use."); 99 call user_info_$homedir (home_dir); 100 call change_wdir_ ((home_dir), code); 101 if code ^= 0 then 102 call com_err_ (code, "iod_overseer_", "Warning: could not set working directory to ^a.", home_dir); 103 104 105 /* find out what kind of process we're supposed to be */ 106 107 common: 108 read: 109 query_info.version = query_info_version_4; 110 query_info.switches.suppress_name_sw = "1"b; 111 query_info.switches.cp_escape_control = "1"b || this_is_a_test; 112 /* allowed if in test mode */ 113 query_info.switches.suppress_spacing = "1"b; 114 call command_query_ (addr (query_info), type, "iod_overseer_", "Enter command: coordinator, driver, or ^a:^/", 115 exit_command); 116 117 if type = "driver" /* regular driver */ 118 then do; 119 if ^coord_running () /* no coordinator */ 120 then call com_err_ (0, "iod_overseer_", "Coordinator not ready or not logged in."); 121 122 else do; /* start up a driver */ 123 call iodd_$iodd_init (iod_tables_dir, this_is_a_test); 124 /* byvalue until the aligned attribute is flushed from iodd_ */ 125 go to exit; 126 end; 127 128 end; 129 130 else if type = "coord" | type = "coordinator" then do; 131 132 /* make sure there isn't already a Coordinator process */ 133 134 if ^first_coord () /* somebody goofed */ 135 then do; 136 call com_err_ (0, "iod_overseer_", "Coordinator is already running."); 137 goto read; 138 end; 139 140 if ^this_is_a_test then do; /* not testing, turn on privileges */ 141 call system_privilege_$dir_priv_on (code); 142 call system_privilege_$ipc_priv_on (code); 143 call system_privilege_$ring1_priv_on (code); 144 end; 145 146 call iodc_$iodc_init (iod_tables_dir, this_is_a_test, iod_tables_entryname); 147 call set_lock_$unlock (lock_ptr -> coord_lock, code); 148 /* unlock the coordinator lock */ 149 call set_lock_$unlock (lock_ptr -> driver_lock, code); 150 /* and the driver lock */ 151 go to exit; 152 end; 153 else if type = exit_command then go to exit; 154 155 else call com_err_ (0, "iod_overseer_", "Invalid response."); 156 157 go to read; 158 159 160 test: 161 entry (Test_dir); 162 iod_tables_dir = Test_dir; 163 iod_tables_entryname = "iod_tables"; 164 goto TEST_COMMON; 165 166 test_path: 167 entry (Test_dir, Test_entry); 168 iod_tables_dir = Test_dir; 169 iod_tables_entryname = Test_entry; 170 171 TEST_COMMON: 172 this_is_a_test = "1"b; 173 exit_command = "return"; 174 go to common; 175 176 exit: 177 if this_is_a_test then 178 return; 179 else call logout; 180 181 182 coord_ready: 183 entry; 184 185 /* This entry is called by the coordinator after it has initialized. 186* Until this entry is called, drivers will not be allowed to start. */ 187 188 189 if lock_ptr ^= null () then do; 190 lock_ptr -> driver_lock = ""b; /* erase any previous lock */ 191 call set_lock_$lock (lock_ptr -> driver_lock, 0, code); 192 end; 193 194 return; 195 196 /* */ 197 198 199 first_coord: 200 proc returns (bit (1) aligned); 201 202 /* This procedure verifies that no coordinator process yet exists. */ 203 204 205 dcl 1 acl aligned, 206 2 name char (32), 207 2 modes bit (36), 208 2 mbz bit (36), 209 2 status fixed bin (35); 210 211 212 if this_is_a_test then 213 call hcs_$make_seg (iod_tables_dir, "coord_lock", "", 01010b, lock_ptr, code); 214 else call privileged_make_seg_ (iod_tables_dir, "coord_lock", "", 01010b, lock_ptr, code); 215 if lock_ptr = null () then do; 216 call com_err_ (code, "iod_overseer_", "Cannot create coord_lock"); 217 go to exit; 218 end; 219 220 if code = 0 then do; /* if just created, set acl */ 221 acl.name = "*.*.*"; /* give everyone access to read the lock */ 222 acl.modes = "1"b; 223 acl.mbz = ""b; 224 call hcs_$add_acl_entries (iod_tables_dir, "coord_lock", addr (acl), 1, code); 225 if code ^= 0 then do; 226 if code = error_table_$argerr then code = acl.status; 227 call com_err_ (code, "iod_overseer_", "Cannot set access to coord_lock"); 228 go to exit; 229 end; 230 end; 231 232 call set_lock_$lock (lock_ptr -> coord_lock, 0, code); 233 if code = 0 then return ("1"b); /* we locked it */ 234 if code = error_table_$invalid_lock_reset then return ("1"b); 235 /* we locked it */ 236 if code = error_table_$lock_wait_time_exceeded then return ("0"b); 237 /* we didn't lock it */ 238 if this_is_a_test then /* we'll try anything in test mode */ 239 if code = error_table_$locked_by_this_process then return ("1"b); 240 call com_err_ (code, "iod_overseer_", "Attempting to lock coord_lock"); 241 go to exit; 242 243 end first_coord; 244 245 /* */ 246 247 248 coord_running: 249 proc returns (bit (1) aligned); 250 251 /* This procedure verifies that a coordinator process has been initialized. */ 252 253 dcl test_lock bit (36) aligned; 254 dcl i fixed bin; 255 256 257 call hcs_$initiate (iod_tables_dir, "coord_lock", "", 0, 1, lock_ptr, code); 258 if lock_ptr = null then 259 if code = error_table_$noentry then 260 return ("0"b); 261 else do; 262 call com_err_ (code, "iod_overseer_", "Cannot initiate coord_lock"); 263 go to exit; 264 end; 265 266 do i = 1 to 10; /* try 10 times */ 267 test_lock = lock_ptr -> driver_lock; /* copy driver_lock since we don't want to set it */ 268 call set_lock_$lock (test_lock, 0, code); 269 if code = error_table_$lock_wait_time_exceeded then return ("1"b); 270 /* it's locked */ 271 if code = 0 | code = error_table_$invalid_lock_reset then do; 272 /* it's not locked */ 273 call timer_manager_$sleep (6, "11"b); /* wait 6 seconds */ 274 go to retry; 275 end; 276 if this_is_a_test then /* if we're testing */ 277 if code = error_table_$locked_by_this_process then return ("1"b); 278 /* this is probably deliberate */ 279 call com_err_ (code, "iod_overseer_", "Attempting to test coord_lock"); 280 go to exit; 281 retry: 282 end; 283 284 return ("0"b); /* no luck, give up */ 285 286 end coord_running; 287 288 289 /* */ 290 291 early_handler: 292 proc; 293 294 /* 295* All conditions not recognized by early_handler are considered fatal. 296* A standard message is printed, after which the process is logged out. 297**/ 298 299 dcl ec fixed bin (35); 300 301 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 302 dcl condition_interpreter_ entry (ptr, ptr, fixed bin, fixed bin, ptr, char (*), ptr, ptr); 303 dcl default_error_handler_ entry (ptr, char (*), ptr, ptr, bit (1) aligned); 304 305 306 dcl 1 cond_info aligned, 2 1 /* BEGIN INCLUDE FILE ... cond_info.incl.pl1 2 2* coded by M. Weaver 12 July 1973 */ 2 3 2 4 2 mcptr ptr, /* ptr to machine conditions at time of fault */ 2 5 2 version fixed bin, /* version of this structure (now=1) */ 2 6 2 condition_name char(32) var, /* name of condition */ 2 7 2 infoptr ptr, /* ptr to software info structure */ 2 8 2 wcptr ptr, /* ptr to wall crossing machine conditions */ 2 9 2 loc_ptr ptr, /* ptr to location where condition occurred */ 2 10 2 flags aligned, 2 11 3 crawlout bit(1) unal, /* = "1"b if condition occurred in inner ring */ 2 12 3 pad1 bit(35) unal, 2 13 2 pad_word bit(36) aligned, 2 14 2 user_loc_ptr ptr, /* ptr to last non-support loc before condition */ 2 15 2 pad (4) bit(36) aligned; 2 16 2 17 /* END INCLUDE FILE ... cond_info.incl.pl1 */ 307 308 309 310 cond_info.version = 1; /* version of cond_info */ 311 call find_condition_info_ (null (), addr (cond_info), ec); 312 313 if cond_info.condition_name = "command_error" then return; 314 else if cond_info.condition_name = "command_question" then return; 315 316 else if cond_info.condition_name = "cput" | cond_info.condition_name = "alrm" 317 | cond_info.condition_name = "sus_" | cond_info.condition_name = "trm_" 318 | cond_info.condition_name = "wkp_" | cond_info.condition_name = "finish" then do; 319 call default_error_handler_ (mcptr, (condition_name), wcptr, infoptr, "0"b); 320 return; 321 end; 322 323 call ioa_ ("iod_overseer_: ^a condition intercepted. Process will be terminated.", cond_info.condition_name); 324 call condition_interpreter_ (null, null, 0, 3, mcptr, (condition_name), wcptr, infoptr); 325 go to exit; 326 327 end early_handler; 328 end /* iod_overseeer_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1450.8 iod_overseer_.pl1 >dumps>old>recomp>iod_overseer_.pl1 55 1 08/12/81 0911.2 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 307 2 05/06/74 1741.0 cond_info.incl.pl1 >ldd>include>cond_info.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. Test_dir parameter char unaligned dcl 31 ref 160 162 166 168 Test_entry parameter char unaligned dcl 31 ref 166 169 acl 000304 automatic structure level 1 dcl 205 set ref 224 224 addr builtin function dcl 86 ref 95 95 114 114 224 224 311 311 answer_iocbp 6 000260 automatic pointer initial level 2 dcl 1-6 set ref 1-6* any_other 000252 stack reference condition dcl 43 ref 94 change_wdir_ 000012 constant entry external dcl 57 ref 100 code 000240 automatic fixed bin(35,0) dcl 38 set ref 95* 96 96* 100* 101 101* 141* 142* 143* 147* 149* 191* 212* 214* 216* 220 224* 225 226 226* 227* 232* 233 234 236 238 240* 257* 258 262* 268* 269 271 271 276 279* com_err_ 000014 constant entry external dcl 58 ref 96 101 119 136 155 216 227 240 262 279 command_query_ 000016 constant entry external dcl 59 ref 114 cond_info 000110 automatic structure level 1 dcl 306 set ref 311 311 condition_interpreter_ 000074 constant entry external dcl 302 ref 324 condition_name 3 000110 automatic varying char(32) level 2 dcl 306 set ref 313 314 316 316 316 316 316 316 319 323* 324 coord_lock based bit(36) level 2 dcl 50 set ref 147* 232* coord_lock_seg based structure level 1 dcl 50 cp_escape_control 1(02) 000260 automatic bit(2) initial level 3 packed unaligned dcl 1-6 set ref 111* 1-6* daemon_search 000000 constant structure level 1 dcl 45 set ref 95 95 default_error_handler_ 000076 constant entry external dcl 303 ref 319 driver_lock 1 based bit(36) level 2 dcl 50 set ref 149* 190* 191* 267 ec 000106 automatic fixed bin(35,0) dcl 299 set ref 311* error_table_$argerr 000060 external static fixed bin(35,0) dcl 79 ref 226 error_table_$invalid_lock_reset 000066 external static fixed bin(35,0) dcl 82 ref 234 271 error_table_$lock_wait_time_exceeded 000064 external static fixed bin(35,0) dcl 81 ref 236 269 error_table_$locked_by_this_process 000070 external static fixed bin(35,0) dcl 83 ref 238 276 error_table_$noentry 000062 external static fixed bin(35,0) dcl 80 ref 258 exit_command 000236 automatic char(6) dcl 37 set ref 93* 114* 153 173* explanation_len 14 000260 automatic fixed bin(21,0) initial level 2 dcl 1-6 set ref 1-6* explanation_ptr 12 000260 automatic pointer initial level 2 dcl 1-6 set ref 1-6* find_condition_info_ 000072 constant entry external dcl 301 ref 311 hcs_$add_acl_entries 000020 constant entry external dcl 60 ref 224 hcs_$initiate 000022 constant entry external dcl 61 ref 257 hcs_$initiate_search_rules 000024 constant entry external dcl 62 ref 95 hcs_$make_seg 000026 constant entry external dcl 63 ref 212 home_dir 000100 automatic char(168) unaligned dcl 33 set ref 99* 100 101* i 000327 automatic fixed bin(17,0) dcl 254 set ref 266* infoptr 14 000110 automatic pointer level 2 dcl 306 set ref 319* 324* ioa_ 000036 constant entry external dcl 67 ref 323 iod_tables_dir 000162 automatic char(168) unaligned dcl 35 set ref 89* 123* 146* 162* 168* 212* 214* 224* 257* iod_tables_entryname 000152 automatic char(32) unaligned dcl 34 set ref 90* 146* 163* 169* iodc_$iodc_init 000032 constant entry external dcl 65 ref 146 iodd_$iodd_init 000034 constant entry external dcl 66 ref 123 lock_ptr 000010 internal static pointer initial dcl 39 set ref 147 149 189 190 191 212* 214* 215 232 257* 258 267 logout 000040 constant entry external dcl 68 ref 179 mbz 11 000304 automatic bit(36) level 2 dcl 205 set ref 223* mcptr 000110 automatic pointer level 2 dcl 306 set ref 319* 324* modes 10 000304 automatic bit(36) level 2 dcl 205 set ref 222* name 000304 automatic char(32) level 2 dcl 205 set ref 221* null builtin function dcl 86 ref 189 1-6 1-6 1-6 215 258 311 311 324 324 324 324 padding 1(05) 000260 automatic bit(31) initial level 3 packed unaligned dcl 1-6 set ref 1-6* privileged_make_seg_ 000030 constant entry external dcl 64 ref 214 query_code 3 000260 automatic fixed bin(35,0) initial level 2 dcl 1-6 set ref 1-6* query_info 000260 automatic structure level 1 dcl 1-6 set ref 114 114 query_info_version_4 constant fixed bin(17,0) initial dcl 1-31 ref 107 question_iocbp 4 000260 automatic pointer initial level 2 dcl 1-6 set ref 1-6* repeat_time 10 000260 automatic fixed bin(71,0) initial level 2 dcl 1-6 set ref 1-6* set_lock_$lock 000042 constant entry external dcl 69 ref 191 232 268 set_lock_$unlock 000044 constant entry external dcl 70 ref 147 149 status 12 000304 automatic fixed bin(35,0) level 2 dcl 205 set ref 226 status_code 2 000260 automatic fixed bin(35,0) initial level 2 dcl 1-6 set ref 1-6* suppress_name_sw 1(01) 000260 automatic bit(1) initial level 3 packed unaligned dcl 1-6 set ref 110* 1-6* suppress_spacing 1(04) 000260 automatic bit(1) initial level 3 packed unaligned dcl 1-6 set ref 113* 1-6* switches 1 000260 automatic structure level 2 dcl 1-6 system_privilege_$dir_priv_on 000046 constant entry external dcl 71 ref 141 system_privilege_$ipc_priv_on 000050 constant entry external dcl 72 ref 142 system_privilege_$ring1_priv_on 000052 constant entry external dcl 73 ref 143 test_lock 000326 automatic bit(36) dcl 253 set ref 267* 268* this_is_a_test 000234 automatic bit(1) dcl 36 set ref 91* 111 123* 140 146* 171* 176 212 238 276 timer_manager_$sleep 000054 constant entry external dcl 74 ref 273 type 000241 automatic varying char(32) dcl 40 set ref 114* 117 130 130 153 user_info_$homedir 000056 constant entry external dcl 75 ref 99 version 2 000110 automatic fixed bin(17,0) level 2 in structure "cond_info" dcl 306 in procedure "early_handler" set ref 310* version 000260 automatic fixed bin(17,0) level 2 in structure "query_info" dcl 1-6 in procedure "iod_overseer_" set ref 107* wcptr 16 000110 automatic pointer level 2 dcl 306 set ref 319* 324* yes_or_no_sw 1 000260 automatic bit(1) initial level 3 packed unaligned dcl 1-6 set ref 1-6* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. iod_tables automatic char(32) unaligned dcl 41 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-30 query_info_version_5 internal static fixed bin(17,0) initial dcl 1-32 NAMES DECLARED BY EXPLICIT CONTEXT. TEST_COMMON 001263 constant label dcl 171 ref 164 common 000617 constant label dcl 107 set ref 174 coord_ready 001302 constant entry external dcl 182 coord_running 001712 constant entry internal dcl 248 ref 119 early_handler 002152 constant entry internal dcl 291 ref 94 exit 001270 constant label dcl 176 ref 125 151 153 217 228 241 263 280 325 first_coord 001333 constant entry internal dcl 199 ref 134 iod_overseer_ 000422 constant entry external dcl 14 iodc_overseer_ 000432 constant entry external dcl 14 read 000617 constant label dcl 107 ref 137 157 retry 002145 constant label dcl 281 ref 274 test 001175 constant entry external dcl 160 test_path 001227 constant entry external dcl 166 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3026 3126 2424 3036 Length 3416 2424 100 253 401 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iod_overseer_ 422 external procedure is an external procedure. on unit on line 94 182 on unit first_coord internal procedure shares stack frame of external procedure iod_overseer_. coord_running internal procedure shares stack frame of external procedure iod_overseer_. early_handler internal procedure shares stack frame of on unit on line 94. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 lock_ptr iod_overseer_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME iod_overseer_ 000100 home_dir iod_overseer_ 000152 iod_tables_entryname iod_overseer_ 000162 iod_tables_dir iod_overseer_ 000234 this_is_a_test iod_overseer_ 000236 exit_command iod_overseer_ 000240 code iod_overseer_ 000241 type iod_overseer_ 000260 query_info iod_overseer_ 000304 acl first_coord 000326 test_lock coord_running 000327 i coord_running on unit on line 94 000106 ec early_handler 000110 cond_info early_handler THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return tra_ext enable shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. change_wdir_ com_err_ command_query_ condition_interpreter_ default_error_handler_ find_condition_info_ hcs_$add_acl_entries hcs_$initiate hcs_$initiate_search_rules hcs_$make_seg ioa_ iodc_$iodc_init iodd_$iodd_init logout privileged_make_seg_ set_lock_$lock set_lock_$unlock system_privilege_$dir_priv_on system_privilege_$ipc_priv_on system_privilege_$ring1_priv_on timer_manager_$sleep user_info_$homedir THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$argerr error_table_$invalid_lock_reset error_table_$lock_wait_time_exceeded error_table_$locked_by_this_process error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 6 000373 14 000421 89 000440 90 000443 91 000446 93 000447 94 000451 95 000467 96 000502 99 000534 100 000545 101 000561 107 000617 110 000621 111 000623 113 000633 114 000635 117 000677 119 000704 123 000743 125 000760 128 000761 130 000762 134 000774 136 001001 137 001032 140 001033 141 001036 142 001045 143 001054 146 001063 147 001104 149 001115 151 001127 153 001130 155 001135 157 001171 160 001172 162 001211 163 001217 164 001222 166 001223 168 001250 169 001256 171 001263 173 001265 174 001267 176 001270 179 001273 182 001300 189 001310 190 001315 191 001317 194 001332 199 001333 212 001335 214 001404 215 001447 216 001454 217 001503 220 001504 221 001506 222 001511 223 001513 224 001514 225 001554 226 001556 227 001563 228 001612 232 001613 233 001627 234 001635 236 001644 238 001651 240 001662 241 001711 248 001712 257 001714 258 001764 262 001777 263 002026 266 002027 267 002034 268 002040 269 002053 271 002063 273 002067 274 002103 276 002104 279 002115 280 002144 281 002145 284 002147 291 002152 310 002153 311 002155 313 002174 314 002202 316 002210 319 002246 320 002307 323 002311 324 002331 325 002407 ----------------------------------------------------------- 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