COMPILATION LISTING OF SEGMENT system_link_meters Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1720.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 /* Updated by Alan Bier March 1974 */ 13 14 /* Cleaned up substantially by J. Bongiovanni December 80 */ 15 16 system_link_meters: slm: proc; 17 18 /* Automatic */ 19 20 dcl arg_count fixed bin; 21 dcl arglen fixed bin (21); 22 dcl argptr ptr; 23 dcl atime (4) char (12) aligned; 24 dcl avgpf (4) float; 25 dcl avgt (4) float; 26 dcl code fixed bin (35); 27 dcl count (4, 2) fixed bin (35); 28 dcl cpu_time float; 29 dcl cur_buff_ptrs (3) ptr; 30 dcl cur_meters ptr; 31 dcl formatted_meter_time char (10); 32 dcl i fixed bin; 33 dcl idle_time float; 34 dcl j fixed bin; 35 dcl meter_time fixed bin (71); 36 dcl name (3) char (20) init ("Segment Search", "Get Linkage", "Definition Search"); 37 dcl pcc (4) float; 38 dcl pct (4) float; 39 dcl pc_lk_cpu_time float; 40 dcl pc_linker_time float; 41 dcl pgfault (4, 5) fixed bin (35); 42 dcl prev_buff_ptrs (3) ptr; 43 dcl prev_meters ptr; 44 dcl repsw bit (1) init ("0"b); 45 dcl rs char (12); 46 dcl rsw bit (1) init ("0"b); 47 dcl slot_count fixed bin (35); 48 dcl slot_time fixed bin (35); 49 dcl ti float; 50 dcl time (4, 5) fixed bin (35); 51 dcl total_counts fixed bin (35); 52 dcl total_linker_time fixed bin (35); 53 dcl total_time float; 54 55 /* Static */ 56 57 dcl our_name char (18) init ("system_link_meters") int static options (constant); 58 dcl unique fixed bin int static init (0); 59 60 /* External */ 61 62 dcl error_table_$badopt fixed bin (35) external; 63 64 /* Based */ 65 66 dcl arg char(arglen) based (argptr); 67 dcl cur_cpu_time fixed bin (71) based (cur_buff_ptrs (1)); 68 dcl cur_idle_time fixed bin (71) based (cur_buff_ptrs (2)); 69 dcl prev_cpu_time fixed bin (71) based (prev_buff_ptrs (1)); 70 dcl prev_idle_time fixed bin (71) based (prev_buff_ptrs (2)); 71 1 1 /* START OF: link_meters.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 /* Written December 1980 by J. Bongiovanni */ 1 4 1 5 /* link_meters is an array of data maintained by link_snap. 1 6* It is updated on each successful call to link_snap, based 1 7* on the virtual cpu time consumed during the call, as follows: 1 8* 1 9* vcpu time (ms.) array index 1 10* 1 11* < 25 1 1 12* 25 - 50 2 1 13* 50 - 75 3 1 14* > 75 4 1 15**/ 1 16 1 17 dcl 1 link_meters (4) aligned based, 1 18 2 total fixed bin (35), /* total number calls */ 1 19 2 pf fixed bin (30), /* total number page faults */ 1 20 2 time fixed bin (35), /* total vcpu time (microsec.) */ 1 21 2 search_pf fixed bin (30), /* page faults while searching for segment */ 1 22 2 search_time fixed bin (35), /* vcpu time while searching for segment */ 1 23 2 get_linkage_pf fixed bin (30), /* page faults while combining linkage */ 1 24 2 get_linkage_time fixed bin (35), /* vcpu time while combining linkage */ 1 25 2 defsearch_pf fixed bin (30), /* page faults while searching definitions */ 1 26 2 defsearch_time fixed bin (35), /* vcpu time while searching definitions */ 1 27 2 total_others fixed bin (30), /* count of types 1, 2, and 5 */ 1 28 2 others_pf fixed bin (30), /* page faults while processing types 1, 2, 5 */ 1 29 2 others_time fixed bin (35), /* vcpu time while processing types 1, 2, 5 */ 1 30 2 tot_make_ptr fixed bin (30), /* count of calls to make_ptr and make_seg */ 1 31 2 total_type_6 fixed bin (30), /* count of type 6 */ 1 32 2 create_pf fixed bin (30), /* obsolete - retained for metering consistency */ 1 33 2 create_time fixed bin (35), /* obsolete - retained for metering consistency */ 1 34 2 type_6_pf fixed bin (30), /* page faults while processing type 6 */ 1 35 2 type_6_time fixed bin (35); /* vcpu time while processing type 6 */ 1 36 1 37 1 38 /* END OF: link_meters.incl.pl1 * * * * * * * * * * * * * * * * */ 73 74 /* Entry */ 75 76 dcl com_err_ entry() options(variable); 77 dcl cu_$arg_count entry (fixed bin); 78 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)); 79 dcl ioa_ entry entry options(variable); 80 dcl metering_util_$define_regions entry options (variable); 81 dcl metering_util_$fill_buffers entry (fixed bin, fixed bin (71), char (*), (*) ptr, (*) ptr, fixed bin (35)); 82 dcl metering_util_$reset entry (fixed bin, fixed bin (35)); 83 84 /* Builtin */ 85 86 dcl divide builtin; 87 dcl mod builtin; 88 dcl size builtin; 89 90 /* */ 91 92 93 call cu_$arg_count (arg_count); 94 95 do i = 1 to arg_count; 96 call cu_$arg_ptr (i, argptr, arglen, code); 97 if code ^= 0 | arglen = 0 then go to start; 98 if arg = "-report_reset" | arg = "-rr" then rsw, repsw = "1"b; 99 else if arg = "-reset" | arg = "-rs" then rsw = "1"b; 100 else do; 101 call com_err_ (error_table_$badopt, our_name, arg); 102 return; 103 end; 104 end; 105 106 107 start: if ^rsw then repsw = "1"b; 108 109 if unique=0 then do; /* not initialized yet */ 110 call metering_util_$define_regions (unique, code, 111 "tc_data", "processor_time", 2, 112 "tc_data", "idle", 2, 113 "active_hardcore_data", "link_meters", size (link_meters)); 114 if code^=0 then do; 115 call com_err_ (code, our_name, "Error initializing"); 116 return; 117 end; 118 end; 119 120 121 122 get_data: 123 total_linker_time = 0; 124 total_counts = 0; 125 call metering_util_$fill_buffers (unique, meter_time, formatted_meter_time, 126 cur_buff_ptrs, prev_buff_ptrs, code); 127 if code^=0 then do; 128 call com_err_(code, our_name, "Filling buffers"); 129 return; 130 end; 131 cur_meters = cur_buff_ptrs (3); 132 prev_meters = prev_buff_ptrs (3); 133 134 do i = 1 to 4; 135 count (i, 1) = cur_meters -> link_meters (i).total 136 - prev_meters -> link_meters (i).total; 137 count (i, 2) = cur_meters -> link_meters (i).total_others 138 - prev_meters -> link_meters (i).total_others; 139 pgfault (i, 5) = cur_meters -> link_meters (i).others_pf 140 - prev_meters -> link_meters (i).others_pf; 141 time (i, 5) = cur_meters -> link_meters (i).others_time 142 - prev_meters -> link_meters (i).others_time; 143 time (i, 1) = cur_meters -> link_meters (i).time 144 - prev_meters -> link_meters (i).time; 145 time (i, 2) = cur_meters -> link_meters (i).search_time 146 - prev_meters -> link_meters (i).search_time; 147 time (i, 3) = cur_meters -> link_meters (i).get_linkage_time 148 - prev_meters -> link_meters (i).get_linkage_time; 149 time (i, 4) = cur_meters -> link_meters (i).defsearch_time 150 - prev_meters -> link_meters (i).defsearch_time; 151 pgfault (i, 1) = cur_meters -> link_meters (i).pf 152 - prev_meters -> link_meters (i).pf; 153 pgfault (i, 2) = cur_meters -> link_meters (i).search_pf 154 - prev_meters -> link_meters (i).search_pf; 155 pgfault (i, 3) = cur_meters -> link_meters (i).get_linkage_pf 156 - prev_meters -> link_meters (i).get_linkage_pf; 157 pgfault (i, 4) = cur_meters -> link_meters (i).defsearch_pf 158 - prev_meters -> link_meters (i).defsearch_pf; 159 160 total_linker_time = total_linker_time + time (i, 1); 161 total_counts = total_counts + count (i, 1); 162 end; 163 164 if repsw then do; /* user wants report */ 165 166 idle_time = cur_idle_time - prev_idle_time; 167 cpu_time = cur_cpu_time - prev_cpu_time - idle_time; 168 169 call ioa_ ("^/Linkage Meters:"); 170 total_time = meter_time; 171 172 173 if total_time = 0 then pc_linker_time = 0; 174 else pc_linker_time = (total_linker_time * 1e2/ total_time); 175 if cpu_time = 0 then pc_lk_cpu_time = 0; 176 else pc_lk_cpu_time = (total_linker_time * 1e2/ cpu_time); 177 178 call ioa_ ("CPU Metering time^-^-^-^a", formatted_meter_time); 179 180 ti = total_linker_time; 181 call get_time; 182 if total_linker_time = 0 then total_linker_time = 1; 183 if total_counts = 0 then total_counts = 1; 184 call ioa_ ("^/Total time in linker^-^-^a", rs); 185 call ioa_ ("Average time per link^-^-^6.2f msec.", (total_linker_time * 1e-3/total_counts)); 186 call ioa_ ("Percentage of real time in linker^-^6.2f", pc_linker_time); 187 call ioa_ ("Percentage of CPU time in linker^-^6.2f", pc_lk_cpu_time); 188 189 call ioa_ ("^/Time slot (msec)^-^7x<25^10x25-50^10x50-75^12x>75"); 190 191 call ioa_ ("^/Calls^-^-^10d ^10d ^10d ^10d", count (1, 1), count (2, 1), count (3, 1), count (4, 1)); 192 193 do i = 1 to 4; 194 ti = time (i, 1); 195 call get_time; 196 atime (i) = rs; 197 pcc (i) = (count (i, 1)*1e2/total_counts); 198 if count (i, 1) = 0 then count (i, 1) = 1; 199 avgt (i) = (time (i, 1)*1e-3/count (i, 1)); 200 avgpf (i) = (pgfault (i, 1)*1e0/count (i, 1)); 201 pct (i) = (time (i, 1)*1e2/total_linker_time); 202 end; 203 204 call ioa_ ("Total time in slot^-^a ^12a ^12a ^12a", 205 atime (1), atime (2), atime (3), atime (4)); 206 207 call ioa_ ("Percent total time ^-^10.2f^15.2f^15.2f^15.2f", 208 pct (1), pct (2), pct (3), pct (4)); 209 call ioa_ ("Percent total calls^-^10.2f^15.2f^15.2f^15.2f", 210 pcc (1), pcc (2), pcc (3), pcc (4)); 211 call ioa_ ("Average time^-^10.2f^15.2f^15.2f^15.2f", avgt (1), avgt (2), avgt (3), avgt (4)); 212 call ioa_ ("Average page faults^-^10.2f^15.2f^15.2f^15.2f", avgpf (1), avgpf (2), avgpf (3), avgpf (4)); 213 214 do i = 2 to 4; 215 call ioa_ ("^/^a", name (i-1)); 216 do j = 1 to 4; 217 slot_time = time (j, 1) - time (j, 5); 218 slot_count = count (j, 1) - count (j, 2); 219 if slot_count = 0 then slot_count = 1; 220 if slot_time = 0 then slot_time = 1; 221 avgt (j) = (time (j, i)*1e-3/slot_count); 222 avgpf (j) = (pgfault (j, i)*1e0/slot_count); 223 pct (j) = (time (j, i)*1e2/slot_time); 224 end; 225 call ioa_ (" Average time^-^10.2f^15.2f^15.2f^15.2f", avgt (1), avgt (2), avgt (3), avgt (4)); 226 call ioa_ (" Average page faults^10.2f^15.2f^15.2f^15.2f", avgpf (1), avgpf (2), avgpf (3), avgpf (4)); 227 call ioa_ (" Percent time in slot^9.2f^15.2f^15.2f^15.2f", pct (1), pct (2), pct (3), pct (4)); 228 end; 229 end; 230 231 if rsw then call metering_util_$reset (unique, code); 232 233 234 return; 235 236 237 get_time: proc; 238 239 dcl HR pic "zzz9"; 240 dcl min fixed bin; 241 dcl MIN pic "99"; 242 dcl sec fixed bin; 243 dcl SEC pic "99"; 244 245 246 sec = ti*1e-6; 247 min = divide (sec, 60, 17, 0); 248 HR = divide (min, 60, 17, 0); 249 MIN = mod (min, 60); 250 SEC = mod (sec, 60); 251 rs = HR || ":" || MIN || ":" || SEC; 252 return; 253 end; 254 255 256 257 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1512.8 system_link_meters.pl1 >dumps>old>recomp>system_link_meters.pl1 72 1 05/08/81 1853.7 link_meters.incl.pl1 >ldd>include>link_meters.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. HR 000320 automatic picture(4) unaligned dcl 239 set ref 248* 251 MIN 000322 automatic picture(2) unaligned dcl 241 set ref 249* 251 SEC 000324 automatic picture(2) unaligned dcl 243 set ref 250* 251 arg based char unaligned dcl 66 set ref 98 98 99 99 101* arg_count 000100 automatic fixed bin(17,0) dcl 20 set ref 93* 95 arglen 000101 automatic fixed bin(21,0) dcl 21 set ref 96* 97 98 98 99 99 101 101 argptr 000102 automatic pointer dcl 22 set ref 96* 98 98 99 99 101 atime 000104 automatic char(12) array dcl 23 set ref 196* 204* 204* 204* 204* avgpf 000120 automatic float bin(27) array dcl 24 set ref 200* 212* 212* 212* 212* 222* 226* 226* 226* 226* avgt 000124 automatic float bin(27) array dcl 25 set ref 199* 211* 211* 211* 211* 221* 225* 225* 225* 225* code 000130 automatic fixed bin(35,0) dcl 26 set ref 96* 97 110* 114 115* 125* 127 128* 231* com_err_ 000014 constant entry external dcl 76 ref 101 115 128 count 000131 automatic fixed bin(35,0) array dcl 27 set ref 135* 137* 161 191* 191* 191* 191* 197 198 198* 199 200 218 218 cpu_time 000141 automatic float bin(27) dcl 28 set ref 167* 175 176 cu_$arg_count 000016 constant entry external dcl 77 ref 93 cu_$arg_ptr 000020 constant entry external dcl 78 ref 96 cur_buff_ptrs 000142 automatic pointer array dcl 29 set ref 125* 131 166 167 cur_cpu_time based fixed bin(71,0) dcl 67 ref 167 cur_idle_time based fixed bin(71,0) dcl 68 ref 166 cur_meters 000150 automatic pointer dcl 30 set ref 131* 135 137 139 141 143 145 147 149 151 153 155 157 defsearch_pf 7 based fixed bin(30,0) array level 2 dcl 1-17 ref 157 157 defsearch_time 10 based fixed bin(35,0) array level 2 dcl 1-17 ref 149 149 divide builtin function dcl 86 ref 247 248 error_table_$badopt 000012 external static fixed bin(35,0) dcl 62 set ref 101* formatted_meter_time 000152 automatic char(10) unaligned dcl 31 set ref 125* 178* get_linkage_pf 5 based fixed bin(30,0) array level 2 dcl 1-17 ref 155 155 get_linkage_time 6 based fixed bin(35,0) array level 2 dcl 1-17 ref 147 147 i 000155 automatic fixed bin(17,0) dcl 32 set ref 95* 96* 134* 135 135 135 137 137 137 139 139 139 141 141 141 143 143 143 145 145 145 147 147 147 149 149 149 151 151 151 153 153 153 155 155 155 157 157 157 160 161* 193* 194 196 197 197 198 198 199 199 199 200 200 200 201 201* 214* 215 221 222 223* idle_time 000156 automatic float bin(27) dcl 33 set ref 166* 167 ioa_ 000022 constant entry external dcl 79 ref 169 178 184 185 186 187 189 191 204 207 209 211 212 215 225 226 227 j 000157 automatic fixed bin(17,0) dcl 34 set ref 216* 217 217 218 218 221 221 222 222 223 223* link_meters based structure array level 1 dcl 1-17 ref 110 110 meter_time 000160 automatic fixed bin(71,0) dcl 35 set ref 125* 170 metering_util_$define_regions 000024 constant entry external dcl 80 ref 110 metering_util_$fill_buffers 000026 constant entry external dcl 81 ref 125 metering_util_$reset 000030 constant entry external dcl 82 ref 231 min 000321 automatic fixed bin(17,0) dcl 240 set ref 247* 248 249 mod builtin function dcl 87 ref 249 250 name 000162 automatic char(20) initial array unaligned dcl 36 set ref 36* 36* 36* 215* others_pf 12 based fixed bin(30,0) array level 2 dcl 1-17 ref 139 139 others_time 13 based fixed bin(35,0) array level 2 dcl 1-17 ref 141 141 our_name 000000 constant char(18) initial unaligned dcl 57 set ref 101* 115* 128* pc_linker_time 000212 automatic float bin(27) dcl 40 set ref 173* 174* 186* pc_lk_cpu_time 000211 automatic float bin(27) dcl 39 set ref 175* 176* 187* pcc 000201 automatic float bin(27) array dcl 37 set ref 197* 209* 209* 209* 209* pct 000205 automatic float bin(27) array dcl 38 set ref 201* 207* 207* 207* 207* 223* 227* 227* 227* 227* pf 1 based fixed bin(30,0) array level 2 dcl 1-17 ref 151 151 pgfault 000213 automatic fixed bin(35,0) array dcl 41 set ref 139* 151* 153* 155* 157* 200 222 prev_buff_ptrs 000240 automatic pointer array dcl 42 set ref 125* 132 166 167 prev_cpu_time based fixed bin(71,0) dcl 69 ref 167 prev_idle_time based fixed bin(71,0) dcl 70 ref 166 prev_meters 000246 automatic pointer dcl 43 set ref 132* 135 137 139 141 143 145 147 149 151 153 155 157 repsw 000250 automatic bit(1) initial unaligned dcl 44 set ref 44* 98* 107* 164 rs 000251 automatic char(12) unaligned dcl 45 set ref 184* 196 251* rsw 000254 automatic bit(1) initial unaligned dcl 46 set ref 46* 98* 99* 107 231 search_pf 3 based fixed bin(30,0) array level 2 dcl 1-17 ref 153 153 search_time 4 based fixed bin(35,0) array level 2 dcl 1-17 ref 145 145 sec 000323 automatic fixed bin(17,0) dcl 242 set ref 246* 247 250 size builtin function dcl 88 ref 110 110 slot_count 000255 automatic fixed bin(35,0) dcl 47 set ref 218* 219 219* 221 222 slot_time 000256 automatic fixed bin(35,0) dcl 48 set ref 217* 220 220* 223 ti 000257 automatic float bin(27) dcl 49 set ref 180* 194* 246 time 2 based fixed bin(35,0) array level 2 in structure "link_meters" dcl 1-17 in procedure "slm" ref 143 143 time 000260 automatic fixed bin(35,0) array dcl 50 in procedure "slm" set ref 141* 143* 145* 147* 149* 160 194 199 201 217 217 221 223 total based fixed bin(35,0) array level 2 dcl 1-17 ref 135 135 total_counts 000304 automatic fixed bin(35,0) dcl 51 set ref 124* 161* 161 183 183* 185 197 total_linker_time 000305 automatic fixed bin(35,0) dcl 52 set ref 122* 160* 160 174 176 180 182 182* 185 201 total_others 11 based fixed bin(30,0) array level 2 dcl 1-17 ref 137 137 total_time 000306 automatic float bin(27) dcl 53 set ref 170* 173 174 unique 000010 internal static fixed bin(17,0) initial dcl 58 set ref 109 110* 125* 231* NAMES DECLARED BY EXPLICIT CONTEXT. get_data 000727 constant label dcl 122 get_time 002204 constant entry internal dcl 237 ref 181 195 slm 000425 constant entry external dcl 16 start 000560 constant label dcl 107 ref 97 system_link_meters 000435 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2432 2464 2310 2442 Length 2676 2310 32 175 121 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME slm 300 external procedure is an external procedure. get_time internal procedure shares stack frame of external procedure slm. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 unique slm STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME slm 000100 arg_count slm 000101 arglen slm 000102 argptr slm 000104 atime slm 000120 avgpf slm 000124 avgt slm 000130 code slm 000131 count slm 000141 cpu_time slm 000142 cur_buff_ptrs slm 000150 cur_meters slm 000152 formatted_meter_time slm 000155 i slm 000156 idle_time slm 000157 j slm 000160 meter_time slm 000162 name slm 000201 pcc slm 000205 pct slm 000211 pc_lk_cpu_time slm 000212 pc_linker_time slm 000213 pgfault slm 000240 prev_buff_ptrs slm 000246 prev_meters slm 000250 repsw slm 000251 rs slm 000254 rsw slm 000255 slot_count slm 000256 slot_time slm 000257 ti slm 000260 time slm 000304 total_counts slm 000305 total_linker_time slm 000306 total_time slm 000320 HR get_time 000321 min get_time 000322 MIN get_time 000323 sec get_time 000324 SEC get_time THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 alloc_cs call_ext_out_desc call_ext_out return fl2_to_fx1 mod_fx1 shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr ioa_ metering_util_$define_regions metering_util_$fill_buffers metering_util_$reset THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 36 000372 44 000420 46 000421 16 000424 93 000443 95 000452 96 000461 97 000476 98 000502 99 000517 101 000532 102 000555 104 000556 107 000560 109 000564 110 000567 114 000675 115 000677 116 000726 122 000727 124 000730 125 000731 127 000765 128 000767 129 001014 131 001015 132 001017 134 001021 135 001026 137 001043 139 001046 141 001054 143 001062 145 001070 147 001076 149 001104 151 001112 153 001115 155 001120 157 001123 160 001126 161 001132 162 001136 164 001140 166 001142 167 001147 169 001155 170 001171 173 001175 174 001201 175 001207 176 001214 178 001222 180 001242 181 001245 182 001246 183 001252 184 001256 185 001276 186 001326 187 001346 189 001366 191 001402 193 001434 194 001441 195 001445 196 001446 197 001457 198 001473 199 001500 200 001514 201 001521 202 001530 204 001532 207 001564 209 001616 211 001650 212 001702 214 001734 215 001741 216 001761 217 001766 218 001776 219 002007 220 002013 221 002017 222 002035 223 002042 224 002051 225 002053 226 002104 227 002135 228 002166 231 002170 234 002203 237 002204 246 002205 247 002211 248 002213 249 002224 250 002240 251 002253 252 002303 ----------------------------------------------------------- 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