COMPILATION LISTING OF SEGMENT proc_int_handler Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1001.7 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 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(85-11-27,Herbst), approve(87-07-20,MCR7697), 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1055): 17* Added system_message_sct_index. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style2,indcomtxt */ 22 23 /* DESCRIPTION: 24* Process Interrupts Are Sent Here. 25**/ 26 27 /* HISTORY: 28*Written by N. I. Morris, 09/14/71. 29*Modified: 30*10/02/72 by N. I. Morris: for 6090. 31*12/04/75 by D. M. Wells: to add neti condition. 32*02/12/76 by Noel I. Morris: for new connect mechanism. 33*07/01/77 by T. Casey: to add susp and term. 34*01/12/79 by C. Hornig: to add wkp_. 35*12/03/83 by BIM: for pgt_. 36*07/16/84 by R. Michael Tague: Added dm_shutdown_warning_ and dm_user_shutdown_ 37*08/22/84 by R. Michael Tague: Removed dm_shutdown_warning_ and 38* dm_user_shutdown_. Added system_shutdown_scheduled_ and 39* dm_shutdown_scheduled_. 40**/ 41 42 proc_int_handler: 43 procedure; 44 45 dcl msg bit (36) aligned, /* IPS message after masking */ 46 stacq_temp bit (36) aligned, 47 new_ips_message bit (36) aligned, 48 mc_ptr ptr, /* pointer to machine conditions */ 49 fim_code fixed bin (17), /* code to index into SCT */ 50 i fixed bin, /* index into mask data table */ 51 ringno fixed bin (3), /* ring number */ 52 r fixed bin (3), /* ring number iteration variable */ 53 name char (31); /* condition name from table */ 54 55 dcl ( 56 pds$apt_ptr ptr, /* pointer to APT entry for this process */ 57 pds$ips_mask (0:7) bit (36), /* IPS masks for this process */ 58 pds$auto_mask (0:7) bit (36), /* automatic IPS masks for this process */ 59 pds$signal_data (32) fixed bin 60 ) ext; /* machine conditions for signalling */ 61 62 dcl 1 pds$condition_name external, 63 ( 2 lth fixed bin (9) unsigned, 64 2 name char (31) 65 ) unal; 66 67 dcl pds$process_group_id char (32) ext static; 68 69 dcl (addr, bit, fixed, length, rtrim, stacq, substr) 70 builtin; 71 72 dcl signaller ext entry; 73 dcl ring_alarm$set ext entry (fixed bin (3)); 74 dcl syserr entry options (variable); 75 76 77 /* Get pointers to machine conditions and extract information. */ 78 79 mc_ptr = addr (pds$signal_data); /* Machine conditions have been put here for us. */ 80 scup = addr (mc_ptr -> mc.scu); /* Generate a pointer to SCU info. */ 81 ringno = fixed (scup -> scu.ppr.prr, 3); /* Extract ring number from machine conditions. */ 82 aptep = pds$apt_ptr; /* Get a pointer to APT entry for this process. */ 83 84 85 /* See if any of the events set in the APT entry ips_message are unmasked 86* in this ring or any higher ring. If not, just return; */ 87 88 do r = ringno to 7; /* Start checking in this ring. */ 89 msg = apte.ips_message & pds$ips_mask (r); /* Are we taking this signal in this ring? */ 90 if msg 91 then do; /* If so ... */ 92 do i = 1 to sys_info$ips_mask_data.count; 93 /* Search for bit. */ 94 if msg & sys_info$ips_mask_data.mask (i).mask 95 then goto found_ips; /* If found, go process it. */ 96 end; 97 /*** got an invalid bit */ 98 call syserr (LOG, "proc_int_handler: Invalid IPS interrupt(s) ^w for ^a.", msg, 99 pds$process_group_id); 100 stacq_temp = apte.ips_message; 101 new_ips_message = stacq_temp & sys_info$all_valid_ips_mask; 102 do while (^stacq (apte.ips_message, new_ips_message, stacq_temp)); 103 stacq_temp = apte.ips_message; 104 new_ips_message = stacq_temp & sys_info$all_valid_ips_mask; 105 end; 106 return; /* Ignore unmeaningful messages. */ 107 end; 108 end; 109 return; /* Message not unmasked in any ring. */ 110 111 112 /* The message was found in some ring. If the ring is higher than 113* current ring, set ring alarm to catch exit to that ring. */ 114 115 found_ips: 116 if r > ringno 117 then do; /* If unmasked in a higher ring ... */ 118 call ring_alarm$set (r); /* Set a ring alarm to go off later. */ 119 return; /* Return to caller. */ 120 end; 121 122 123 /* The message was found in this ring. Remove appropriate bit 124* from APT entry ips_message, and check for automatic masking. 125* If automatic masking is indicated, mask _a_l_l IPS events after 126* saving the current mask in the machine conditions. */ 127 128 msg = sys_info$ips_mask_data.mask (i).mask; /* Get only the correct bit. */ 129 stacq_temp = apte.ips_message; 130 new_ips_message = stacq_temp & ^msg; 131 do while (^stacq (apte.ips_message, new_ips_message, stacq_temp)); 132 stacq_temp = apte.ips_message; 133 new_ips_message = stacq_temp & ^msg; 134 end; 135 136 if msg & pds$auto_mask (ringno) 137 then do; /* If automatic masking to take place ... */ 138 mc_ptr -> mc.ips_temp = pds$ips_mask (ringno) | "000000000000000000000000000000000001"b; 139 /* Save the mask with low-order bit on. */ 140 pds$ips_mask (ringno) = "0"b; /* Now mask everything. */ 141 end; 142 else /* If not automatic masking ... */ 143 mc_ptr -> mc.ips_temp = "0"b; /* Clear the IPS mask in machine conditions. */ 144 145 146 /* Copy the condition name and the machine conditions in PDS 147* in preparation for signalling. Finally, call the signaller 148* to signal this event. */ 149 150 name = substr(sys_info$ips_mask_data.mask (i).name,1,length(name)); 151 /* Grab the name. */ 152 pds$condition_name.lth = length (rtrim (name)); /* Determine the length of the name. */ 153 pds$condition_name.name = name; /* Set the condition name. */ 154 155 if i = 1 156 then fim_code = quit_sct_index; 157 else if i = 2 158 then fim_code = cput_sct_index; 159 else if i = 3 160 then fim_code = alrm_sct_index; 161 else if i = 4 162 then fim_code = neti_sct_index; 163 else if i = 5 164 then fim_code = susp_sct_index; 165 else if i = 6 166 then fim_code = term_sct_index; 167 else if i = 7 168 then fim_code = wkp_sct_index; 169 else if i = 8 170 then fim_code = pgt_sct_index; 171 else if i = 9 172 then fim_code = system_shutdown_scheduled_sct_index; 173 else if i = 10 174 then fim_code = dm_shutdown_scheduled_sct_index; 175 else if i = 11 176 then fim_code = system_message_sct_index; 177 else fim_code = 0; 178 mc_ptr -> mc.fcode = bit (fim_code, 17); /* place code in MC for outer-ring use */ 179 180 call signaller; /* Transfer control to the signaller. */ 181 182 /* format: off */ 183 /* */ 1 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 1 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 1 4 /* Modified 07/07/76 by Morris for fault register data */ 1 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 1 6 /* Modified '82 to make values constant */ 1 7 1 8 /* words 0-15 pointer registers */ 1 9 1 10 dcl mcp ptr; 1 11 1 12 dcl 1 mc based (mcp) aligned, 1 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 1 14 (2 regs, /* registers */ 1 15 3 x (0:7) bit (18), /* index registers */ 1 16 3 a bit (36), /* accumulator */ 1 17 3 q bit (36), /* q-register */ 1 18 3 e bit (8), /* exponent */ 1 19 3 pad1 bit (28), 1 20 3 t bit (27), /* timer register */ 1 21 3 pad2 bit (6), 1 22 3 ralr bit (3), /* ring alarm register */ 1 23 1 24 2 scu (0:7) bit (36), 1 25 1 26 2 mask bit (72), /* mem controller mask at time of fault */ 1 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 1 28 2 errcode fixed bin (35), /* fault handler's error code */ 1 29 2 fim_temp, 1 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 1 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 1 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 1 33 2 fault_reg bit (36), /* fault register */ 1 34 2 pad2 bit (1), 1 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 1 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 1 37 2 fault_time bit (54), /* time of fault */ 1 38 1 39 2 eis_info (0:7) bit (36)) unaligned; 1 40 1 41 1 42 dcl (apx fixed bin init (0), 1 43 abx fixed bin init (1), 1 44 bpx fixed bin init (2), 1 45 bbx fixed bin init (3), 1 46 lpx fixed bin init (4), 1 47 lbx fixed bin init (5), 1 48 spx fixed bin init (6), 1 49 sbx fixed bin init (7)) internal static options (constant); 1 50 1 51 1 52 1 53 1 54 dcl scup ptr; 1 55 1 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 1 57 1 58 1 59 /* WORD (0) */ 1 60 1 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 1 62 3 prr bit (3), /* procedure ring register */ 1 63 3 psr bit (15), /* procedure segment register */ 1 64 3 p bit (1), /* procedure privileged bit */ 1 65 1 66 2 apu, /* APPENDING UNIT STATUS */ 1 67 3 xsf bit (1), /* ext seg flag - IT modification */ 1 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 1 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 1 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 1 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 1 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 1 73 3 dsptw bit (1), /* Fetch of DSPTW */ 1 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 1 75 3 sdwp bit (1), /* Fetch of SDW paged */ 1 76 3 ptw bit (1), /* Fetch of PTW */ 1 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 1 78 3 fap bit (1), /* Fetch of final address paged */ 1 79 3 fanp bit (1), /* Fetch of final address non-paged */ 1 80 3 fabs bit (1), /* Fetch of final address absolute */ 1 81 1 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 1 83 1 84 1 85 /* WORD (1) */ 1 86 1 87 2 fd, /* FAULT DATA */ 1 88 3 iro bit (1), /* illegal ring order */ 1 89 3 oeb bit (1), /* out of execute bracket */ 1 90 3 e_off bit (1), /* no execute */ 1 91 3 orb bit (1), /* out of read bracket */ 1 92 3 r_off bit (1), /* no read */ 1 93 3 owb bit (1), /* out of write bracket */ 1 94 3 w_off bit (1), /* no write */ 1 95 3 no_ga bit (1), /* not a gate */ 1 96 3 ocb bit (1), /* out of call bracket */ 1 97 3 ocall bit (1), /* outward call */ 1 98 3 boc bit (1), /* bad outward call */ 1 99 3 inret bit (1), /* inward return */ 1 100 3 crt bit (1), /* cross ring transfer */ 1 101 3 ralr bit (1), /* ring alarm register */ 1 102 3 am_er bit (1), /* associative memory fault */ 1 103 3 oosb bit (1), /* out of segment bounds */ 1 104 3 paru bit (1), /* processor parity upper */ 1 105 3 parl bit (1), /* processor parity lower */ 1 106 3 onc_1 bit (1), /* op not complete type 1 */ 1 107 3 onc_2 bit (1), /* op not complete type 2 */ 1 108 1 109 2 port_stat, /* PORT STATUS */ 1 110 3 ial bit (4), /* illegal action lines */ 1 111 3 iac bit (3), /* illegal action channel */ 1 112 3 con_chan bit (3), /* connect channel */ 1 113 1 114 2 fi_num bit (5), /* (fault/interrupt) number */ 1 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 1 116 1 117 1 118 /* WORD (2) */ 1 119 1 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 1 121 3 trr bit (3), /* temporary ring register */ 1 122 3 tsr bit (15), /* temporary segment register */ 1 123 1 124 2 pad2 bit (9), 1 125 1 126 2 cpu_no bit (3), /* CPU number */ 1 127 1 128 2 delta bit (6), /* tally modification DELTA */ 1 129 1 130 1 131 /* WORD (3) */ 1 132 1 133 2 word3 bit (18), 1 134 1 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 1 136 3 tsna, /* Word 1 status */ 1 137 4 prn bit (3), /* Word 1 PR number */ 1 138 4 prv bit (1), /* Word 1 PR valid bit */ 1 139 3 tsnb, /* Word 2 status */ 1 140 4 prn bit (3), /* Word 2 PR number */ 1 141 4 prv bit (1), /* Word 2 PR valid bit */ 1 142 3 tsnc, /* Word 3 status */ 1 143 4 prn bit (3), /* Word 3 PR number */ 1 144 4 prv bit (1), /* Word 3 PR valid bit */ 1 145 1 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 1 147 1 148 1 149 /* WORD (4) */ 1 150 1 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 1 152 1 153 2 ir, /* INDICATOR REGISTERS */ 1 154 3 zero bit (1), /* zero indicator */ 1 155 3 neg bit (1), /* negative indicator */ 1 156 3 carry bit (1), /* carryry indicator */ 1 157 3 ovfl bit (1), /* overflow indicator */ 1 158 3 eovf bit (1), /* eponent overflow */ 1 159 3 eufl bit (1), /* exponent underflow */ 1 160 3 oflm bit (1), /* overflow mask */ 1 161 3 tro bit (1), /* tally runout */ 1 162 3 par bit (1), /* parity error */ 1 163 3 parm bit (1), /* parity mask */ 1 164 3 bm bit (1), /* ^bar mode */ 1 165 3 tru bit (1), /* truncation mode */ 1 166 3 mif bit (1), /* multi-word instruction mode */ 1 167 3 abs bit (1), /* absolute mode */ 1 168 3 hex bit (1), /* hexadecimal exponent mode */ 1 169 3 pad bit (3), 1 170 1 171 1 172 /* WORD (5) */ 1 173 1 174 2 ca bit (18), /* COMPUTED ADDRESS */ 1 175 1 176 2 cu, /* CONTROL UNIT STATUS */ 1 177 3 rf bit (1), /* on first cycle of repeat instr */ 1 178 3 rpt bit (1), /* repeat instruction */ 1 179 3 rd bit (1), /* repeat double instruction */ 1 180 3 rl bit (1), /* repeat link instruciton */ 1 181 3 pot bit (1), /* IT modification */ 1 182 3 pon bit (1), /* return type instruction */ 1 183 3 xde bit (1), /* XDE from Even location */ 1 184 3 xdo bit (1), /* XDE from Odd location */ 1 185 3 poa bit (1), /* operation preparation */ 1 186 3 rfi bit (1), /* tells CPU to refetch instruction */ 1 187 3 its bit (1), /* ITS modification */ 1 188 3 if bit (1), /* fault occured during instruction fetch */ 1 189 1 190 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 1 191 1 192 1 193 /* WORDS (6,7) */ 1 194 1 195 2 even_inst bit (36), /* even instruction of faulting pair */ 1 196 1 197 2 odd_inst bit (36); /* odd instruction of faulting pair */ 1 198 1 199 1 200 1 201 1 202 1 203 1 204 /* ALTERNATE SCU DECLARATION */ 1 205 1 206 1 207 dcl 1 scux based (scup) aligned, 1 208 1 209 (2 pad0 bit (36), 1 210 1 211 2 fd, /* GROUP II FAULT DATA */ 1 212 3 isn bit (1), /* illegal segment number */ 1 213 3 ioc bit (1), /* illegal op code */ 1 214 3 ia_am bit (1), /* illegal address - modifier */ 1 215 3 isp bit (1), /* illegal slave procedure */ 1 216 3 ipr bit (1), /* illegal procedure */ 1 217 3 nea bit (1), /* non existent address */ 1 218 3 oobb bit (1), /* out of bounds */ 1 219 3 pad bit (29), 1 220 1 221 2 pad2 bit (36), 1 222 1 223 2 pad3a bit (18), 1 224 1 225 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 1 226 3 prn bit (3), /* PR number */ 1 227 3 prv bit (1), /* PR valid bit */ 1 228 1 229 2 pad3b bit (6)) unaligned, 1 230 1 231 2 pad45 (0:1) bit (36), 1 232 1 233 2 instr (0:1) bit (36); /* Instruction ARRAY */ 1 234 1 235 1 236 1 237 /* END INCLUDE FILE mc.incl.pl1 */ 183 184 /* BEGIN INCLUDE FILE static_handlers.incl.pl1 */ 2 2 2 3 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 2 4 2 5 /* HISTORY: 2 6*Written by S. H. Webber, 06/20/75. 2 7*Modified: 2 8*12/15/83 by Benson Margulies: added undefined_pointer_sct_index and 2 9* pgt_sct_index. 2 10*06/11/84 by Lee A. Newcomb: added dm_shutdown_warning_sct_index and 2 11* dm_user_shutdown_sct_index for handling of Data Management 2 12* shutdown. 2 13*08/22/84 by R. Michael Tague: Removed dm_shutdown_warning_sct_index and 2 14* dm_user_shutdown_sct_index. Added 2 15* system_shutdown_scheduled_sct_index and 2 16* dm_shutdown_scheduled_sct_index. 2 17**/ 2 18 2 19 2 20 /****^ HISTORY COMMENTS: 2 21* 1) change(85-11-13,Herbst), approve(87-07-21,MCR7697), 2 22* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 2 23* Add system_message_sct_index. 2 24* END HISTORY COMMENTS */ 2 25 2 26 2 27 dcl ( 2 28 shutdown_sct_index init (0), 2 29 store_sct_index init (1), 2 30 mme1_sct_index init (2), 2 31 fault_tag_1_sct_index init (3), 2 32 timer_runout_sct_index init (4), 2 33 command_sct_index init (5), 2 34 derail_sct_index init (6), 2 35 lockup_sct_index init (7), 2 36 connect_sct_index init (8), 2 37 parity_sct_index init (9), 2 38 illegal_procedure_sct_index init (10), 2 39 op_not_complete_sct_index init (11), 2 40 startup_sct_index init (12), 2 41 ovrflo_sct_index init (13), 2 42 zerodivide_sct_index init (14), 2 43 execute_sct_index init (15), 2 44 seg_fault_error_sct_index init (16), 2 45 page_fault_error_sct_index init (17), 2 46 directed_fault_2_sct_index init (18), 2 47 directed_fault_3_sct_index init (19), 2 48 accessviolation_sct_index init (20), 2 49 mme2_sct_index init (21), 2 50 mme3_sct_index init (22), 2 51 mme4_sct_index init (23), 2 52 linkage_error_sct_index init (24), 2 53 fault_tag_3_sct_index init (25), 2 54 undefined_fault_sct_index init (26), 2 55 trouble_sct_index init (31), 2 56 illegal_opcode_sct_index init (32), 2 57 simfault_000000_sct_index init (33), 2 58 illegal_modifier_sct_index init (34), 2 59 illegal_ring_order_sct_index init (35), 2 60 not_in_execute_bracket_sct_index init (36), 2 61 no_execute_permission_sct_index init (37), 2 62 not_in_read_bracket_sct_index init (38), 2 63 no_read_permission_sct_index init (39), 2 64 not_in_write_bracket_sct_index init (40), 2 65 no_write_permission_sct_index init (41), 2 66 not_a_gate_sct_index init (42), 2 67 not_in_call_bracket_sct_index init (43), 2 68 outward_call_sct_index init (44), 2 69 bad_outward_call_sct_index init (45), 2 70 inward_return_sct_index init (46), 2 71 cross_ring_transfer_sct_index init (47), 2 72 ring_alarm_fault_sct_index init (48), 2 73 am_fault_sct_index init (49), 2 74 out_of_bounds_sct_index init (50), 2 75 fixedoverflow_sct_index init (51), 2 76 overflow_sct_index init (52), 2 77 underflow_sct_index init (53), 2 78 stringsize_sct_index init (54), 2 79 other_illegal_proc_sct_index init (55), 2 80 storage_sct_index init (56), 2 81 packed_pointer_fault_sct_index init (57), 2 82 lot_fault_sct_index init (58), 2 83 isot_fault_sct_index init (59), 2 84 system_packed_pointer_sct_index init (60), 2 85 quit_sct_index init (61), 2 86 alrm_sct_index init (62), 2 87 cput_sct_index init (63), 2 88 record_quota_overflow_sct_index init (64), 2 89 size_sct_index init (65), 2 90 neti_sct_index init (66), 2 91 other_command_sct_index init (67), 2 92 susp_sct_index init (68), 2 93 term_sct_index init (69), 2 94 wkp_sct_index init (70), 2 95 undefined_pointer_sct_index init (71), 2 96 pgt_sct_index init (72), 2 97 system_shutdown_scheduled_sct_index 2 98 init (73), 2 99 dm_shutdown_scheduled_sct_index init (74), 2 100 system_message_sct_index init (75) 2 101 ) fixed bin (17) int static options (constant); 2 102 2 103 /* END INCLUDE FILE static_handlers.incl.pl1 */ 184 185 /* BEGIN INCLUDE FILE ... apte.incl.pl1 */ 3 2 3 3 /* Modified 1984-11-11 by E. Swenson for IPC event channel validation. */ 3 4 3 5 dcl aptep pointer; 3 6 3 7 dcl 1 apte based (aptep) aligned, /* APT entry declaration for an active (known) process */ 3 8 2 thread unaligned, /* List thread */ 3 9 3 fp bit (18), /* Forward pointer */ 3 10 3 bp bit (18), /* Backward pointer */ 3 11 2 flags unaligned, /* Flags and miscellaneous */ 3 12 3 mbz bit (1), /* This bit must be zero (sentinel bit) */ 3 13 3 wakeup_waiting bit (1), /* ON if process has received wakeup */ 3 14 3 stop_pending bit (1), /* ON if process has received stop connect */ 3 15 3 pre_empted bit (1), /* ON if process is being pre-empted by get_processor */ 3 16 3 hproc bit (1), /* ON if process is hardcore process */ 3 17 3 loaded bit (1), /* ON if required per-process pages are in memory and wired */ 3 18 3 eligible bit (1), /* ON if process is eligible */ 3 19 3 idle bit (1), /* ON if this is an idle process */ 3 20 3 interaction bit (1), /* ON if process has interacted recently */ 3 21 3 pre_empt_pending bit (1), /* ON if process has received pre-empt connect */ 3 22 3 default_procs_required bit (1), /* ON if apte.procs_required is system default */ 3 23 3 realtime_burst bit (1), /* ON if next eligibility is realtime */ 3 24 3 always_loaded bit (1), /* ON if process is not to be unloaded */ 3 25 3 dbr_loaded bit (1), /* ON if DBR is loaded on some CPU */ 3 26 3 being_loaded bit (1), /* ON if somebody loading this process */ 3 27 3 shared_stack_0 bit (1), /* ON if a shared stack_0 is assigned */ 3 28 3 page_wait_flag bit (1), /* flag ON if waiting for page */ 3 29 3 firstsw bit (1), /* OFF until process is intialized */ 3 30 3 state bit (18), /* execution state */ 3 31 2 page_faults fixed bin (35), /* total page faults for the process */ 3 32 2 processid bit (36), /* bit 0-17: offset of ATPE */ 3 33 /* bit 18-35: sequential number */ 3 34 2 te fixed bin (35), /* virtual time since eligibility award */ 3 35 2 ts fixed bin (35), /* virtual time since scheduling */ 3 36 2 ti fixed bin (35), /* virtual time since interaction */ 3 37 2 timax fixed bin (35), /* maximum value allowed for apte.ti */ 3 38 3 39 /* * * * * * * * */ 3 40 3 41 2 ipc_pointers unaligned, 3 42 3 event_thread bit (18), /* relative pointer to ITT list */ 3 43 3 pad3 bit (18), 3 44 2 ips_message bit (36), /* IPS signals pending */ 3 45 2 asteps unaligned, /* relative ASTE pointers */ 3 46 3 pds bit (18), /* PDS (per-process) */ 3 47 3 dseg bit (18), /* DSEG (per-process) */ 3 48 3 prds bit (18), /* PRDS (per-processor) */ 3 49 2 savex7 bit (18) unaligned, /* x7 at call to getwork (return point in pxss) */ 3 50 2 term_processid bit (36), /* process to send wakeup at temination */ 3 51 2 lock_id bit (36), /* File System unqieu ID associated with process */ 3 52 2 time_used_clock fixed bin (71), /* Total CPU time when process last lost CPU */ 3 53 3 54 /* * * * * * * * */ 3 55 3 56 2 wait_event bit (36) aligned, /* Event ID process awaiting */ 3 57 2 wct_index bit (18) unaligned, /* rel offset of WCTE */ 3 58 2 flags2 unaligned, 3 59 3 priority_scheduling bit (1), /* ON if guaranteed eligibility */ 3 60 3 special_wakeups bit (6), /* Special wakeup channels */ 3 61 3 pad7 bit (7), 3 62 3 batch bit (1), /* ON if absentee */ 3 63 3 pr_tag bit (3), /* CPU tag running or last run */ 3 64 2 state_change_time fixed bin (71), /* Time apte.state last changed */ 3 65 2 alarm_event fixed bin (71), /* wakeup event for alarm clock manager */ 3 66 2 alarm_time_thread bit (18) unaligned, /* thread of processes with pending alarms */ 3 67 2 alarm_time bit (54) unaligned, /* wakeup time for alarm */ 3 68 3 69 /* * * * * * */ 3 70 3 71 2 term_channel fixed bin (71), /* wakeup event for account overflow */ 3 72 2 ws_size fixed bin, /* working set estimate for the process */ 3 73 2 temax fixed bin (35), /* maximum eligibility slice (vcpu) */ 3 74 2 deadline fixed bin (71), /* time of next run */ 3 75 2 lock bit (18) unaligned, /* 0 => APTE locked, unlocked => return point of last unlock */ 3 76 2 unusable bit (18) unaligned, /* locking routines destroy */ 3 77 2 cpu_monitor fixed bin (35), /* if not 0, send wakeup to term_processid when virtual cpu 3 78* /* reaches this (units = 1/1024 sec) */ 3 79 2 paging_measure fixed bin (71), /* cumulative memory units */ 3 80 2 access_authorization bit (72), /* authorization of this process */ 3 81 2 dbr fixed bin (71), /* DBR value (constant since DSEG entry-held) */ 3 82 3 83 2 virtual_cpu_time fixed bin (71), /* cumulative virtual CPU time for the process */ 3 84 2 ittes_sent fixed bin (18), /* Unprocessed ITTs sent by this process */ 3 85 2 ittes_got fixed bin (18), /* Unprocessed ITTs received by this process */ 3 86 3 87 /* Cells used to drive and instrument finite-state model for response time 3 88* measurement. Maintained by meter_response_time */ 3 89 3 90 2 current_response_state fixed bin (17) unaligned, /* Process state in modle */ 3 91 2 pad18 bit (18) unaligned, 3 92 2 number_processing fixed bin (35), /* Number interactions */ 3 93 2 last_response_state_time fixed bin (71), /* Clock time at last response state change */ 3 94 2 total_processing_time fixed bin (71), /* Total interaction processing time */ 3 95 3 96 /* * * * * * */ 3 97 3 98 2 begin_interaction_vcpu fixed bin (71), /* Virtual cpu at beginning of last interaction */ 3 99 3 100 /* End of cells for finite-state model */ 3 101 3 102 2 saved_temax fixed bin (35), /* temax at eligibility award */ 3 103 2 procs_required bit (8) unaligned, /* bit mask of CPUs this process can run */ 3 104 2 pad4 bit (28) unaligned, 3 105 2 ipc_r_offset fixed bin (18) unsigned, 3 106 2 ipc_r_factor fixed bin (35) unsigned, 3 107 2 apad (10) fixed bin (35); 3 108 3 109 /* END INCLUDE FILE ... apte.incl.pl1 */ 185 186 /* BEGIN INCLUDE FILE ips_mask_data.incl.pl1 */ 4 2 /* Added all_valid_ips_mask, Benson Margulies 83-12 */ 4 3 4 4 dcl 1 sys_info$ips_mask_data ext aligned, /* structure of mask/name associations for IPS masks */ 4 5 2 count fixed bin, /* number of ips signals currently in the system */ 4 6 2 mask (35), 4 7 3 name char (32), /* name of the ips signal */ 4 8 3 mask bit (36); /* has one bit ON, the one for the current ips signal */ 4 9 4 10 dcl sys_info$all_valid_ips_mask bit (36) aligned external; 4 11 4 12 /* END INCLUDE FILE ips_mask_data.incl.pl1 */ 186 187 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 5 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 5 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 5 4 5 5 /* This include file has an ALM version. Keep 'em in sync! */ 5 6 5 7 dcl ( 5 8 5 9 /* The following constants define the message action codes. This indicates 5 10*how a message is to be handled. */ 5 11 5 12 SYSERR_CRASH_SYSTEM init (1), 5 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 5 14 5 15 SYSERR_TERMINATE_PROCESS init (2), 5 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 5 17 5 18 SYSERR_PRINT_WITH_ALARM init (3), 5 19 BEEP init (3), /* Beep and print the message on the console. */ 5 20 5 21 SYSERR_PRINT_ON_CONSOLE init (0), 5 22 ANNOUNCE init (0), /* Just print the message on the console. */ 5 23 5 24 SYSERR_LOG_OR_PRINT init (4), 5 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 5 26 5 27 SYSERR_LOG_OR_DISCARD init (5), 5 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 5 29 5 30 5 31 /* The following constants are added to the normal severities to indicate 5 32*different sorting classes of messages. */ 5 33 5 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 5 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 5 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 5 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 5 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 5 39 ) fixed bin internal static options (constant); 5 40 5 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 187 188 189 /* BEGIN MESSAGE DOCUMENTATION 190* 191* Message: 192* proc_int_handler: Invalid IPS interrupt(s) IPS_BITS for USERNAME. 193* 194* S: $info 195* 196* T: $run 197* 198* M: One or more undefined IPS messages as indicated by IPS_BITS 199* have been sent to user USERNAME. They are ignored. 200* 201* A: $contact 202* 203* 204* END MESSAGE DOCUMENTATION */ 205 206 end proc_int_handler; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.8 proc_int_handler.pl1 >spec>install>1112>proc_int_handler.pl1 183 1 12/15/83 1100.4 mc.incl.pl1 >ldd>include>mc.incl.pl1 184 2 08/06/87 0913.5 static_handlers.incl.pl1 >ldd>include>static_handlers.incl.pl1 185 3 01/06/85 1422.2 apte.incl.pl1 >ldd>include>apte.incl.pl1 186 4 07/11/84 0937.3 ips_mask_data.incl.pl1 >ldd>include>ips_mask_data.incl.pl1 187 5 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.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. LOG 000004 constant fixed bin(17,0) initial dcl 5-7 set ref 98* addr builtin function dcl 69 ref 79 80 alrm_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 159 apte based structure level 1 dcl 3-7 aptep 000124 automatic pointer dcl 3-5 set ref 82* 89 100 102 103 129 131 132 bit builtin function dcl 69 ref 178 count 000032 external static fixed bin(17,0) level 2 dcl 4-4 ref 92 cput_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 157 dm_shutdown_scheduled_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 173 fcode 44(19) based bit(17) level 3 packed packed unaligned dcl 1-12 set ref 178* fim_code 000106 automatic fixed bin(17,0) dcl 45 set ref 155* 157* 159* 161* 163* 165* 167* 169* 171* 173* 175* 177* 178 fim_temp 44 based structure level 2 packed packed unaligned dcl 1-12 fixed builtin function dcl 69 ref 81 i 000107 automatic fixed bin(17,0) dcl 45 set ref 92* 94* 128 150 155 157 159 161 163 165 167 169 171 173 175 ips_message 11 based bit(36) level 2 dcl 3-7 ref 89 100 102 103 129 131 132 ips_temp 42 based bit(36) level 2 packed packed unaligned dcl 1-12 set ref 138* 142* length builtin function dcl 69 ref 150 152 lth 000020 external static fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 62 set ref 152* mask 11 000032 external static bit(36) array level 3 in structure "sys_info$ips_mask_data" dcl 4-4 in procedure "proc_int_handler" ref 94 128 mask 1 000032 external static structure array level 2 in structure "sys_info$ips_mask_data" dcl 4-4 in procedure "proc_int_handler" mc based structure level 1 dcl 1-12 mc_ptr 000104 automatic pointer dcl 45 set ref 79* 80 138 142 178 msg 000100 automatic bit(36) dcl 45 set ref 89* 90 94 98* 128* 130 133 136 name 0(09) 000020 external static char(31) level 2 in structure "pds$condition_name" packed packed unaligned dcl 62 in procedure "proc_int_handler" set ref 153* name 1 000032 external static char(32) array level 3 in structure "sys_info$ips_mask_data" dcl 4-4 in procedure "proc_int_handler" ref 150 name 000112 automatic char(31) packed unaligned dcl 45 in procedure "proc_int_handler" set ref 150* 150 152 153 neti_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 161 new_ips_message 000102 automatic bit(36) dcl 45 set ref 101* 102 104* 130* 131 133* pds$apt_ptr 000010 external static pointer dcl 55 ref 82 pds$auto_mask 000014 external static bit(36) array packed unaligned dcl 55 ref 136 pds$condition_name 000020 external static structure level 1 packed packed unaligned dcl 62 pds$ips_mask 000012 external static bit(36) array packed unaligned dcl 55 set ref 89 138 140* pds$process_group_id 000022 external static char(32) packed unaligned dcl 67 set ref 98* pds$signal_data 000016 external static fixed bin(17,0) array dcl 55 set ref 79 pgt_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 169 ppr based structure level 2 packed packed unaligned dcl 1-56 prr based bit(3) level 3 packed packed unaligned dcl 1-56 ref 81 quit_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 155 r 000111 automatic fixed bin(3,0) dcl 45 set ref 88* 89* 115 118* ring_alarm$set 000026 constant entry external dcl 73 ref 118 ringno 000110 automatic fixed bin(3,0) dcl 45 set ref 81* 88 115 136 138 140 rtrim builtin function dcl 69 ref 152 scu based structure level 1 dcl 1-56 in procedure "proc_int_handler" scu 30 based bit(36) array level 2 in structure "mc" packed packed unaligned dcl 1-12 in procedure "proc_int_handler" set ref 80 scup 000122 automatic pointer dcl 1-54 set ref 80* 81 signaller 000024 constant entry external dcl 72 ref 180 stacq builtin function dcl 69 ref 102 131 stacq_temp 000101 automatic bit(36) dcl 45 set ref 100* 101 102 103* 104 129* 130 131 132* 133 substr builtin function dcl 69 ref 150 susp_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 163 sys_info$all_valid_ips_mask 000034 external static bit(36) dcl 4-10 ref 101 104 sys_info$ips_mask_data 000032 external static structure level 1 dcl 4-4 syserr 000030 constant entry external dcl 74 ref 98 system_message_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 175 system_shutdown_scheduled_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 171 term_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 165 wkp_sct_index constant fixed bin(17,0) initial dcl 2-27 ref 167 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ANNOUNCE internal static fixed bin(17,0) initial dcl 5-7 BEEP internal static fixed bin(17,0) initial dcl 5-7 CRASH internal static fixed bin(17,0) initial dcl 5-7 JUST_LOG internal static fixed bin(17,0) initial dcl 5-7 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 5-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 5-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 5-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 5-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 5-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 5-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 5-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 5-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 5-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 5-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 5-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 5-7 abx internal static fixed bin(17,0) initial dcl 1-42 accessviolation_sct_index internal static fixed bin(17,0) initial dcl 2-27 am_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 apx internal static fixed bin(17,0) initial dcl 1-42 bad_outward_call_sct_index internal static fixed bin(17,0) initial dcl 2-27 bbx internal static fixed bin(17,0) initial dcl 1-42 bpx internal static fixed bin(17,0) initial dcl 1-42 command_sct_index internal static fixed bin(17,0) initial dcl 2-27 connect_sct_index internal static fixed bin(17,0) initial dcl 2-27 cross_ring_transfer_sct_index internal static fixed bin(17,0) initial dcl 2-27 derail_sct_index internal static fixed bin(17,0) initial dcl 2-27 directed_fault_2_sct_index internal static fixed bin(17,0) initial dcl 2-27 directed_fault_3_sct_index internal static fixed bin(17,0) initial dcl 2-27 execute_sct_index internal static fixed bin(17,0) initial dcl 2-27 fault_tag_1_sct_index internal static fixed bin(17,0) initial dcl 2-27 fault_tag_3_sct_index internal static fixed bin(17,0) initial dcl 2-27 fixedoverflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_modifier_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_opcode_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_procedure_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_ring_order_sct_index internal static fixed bin(17,0) initial dcl 2-27 inward_return_sct_index internal static fixed bin(17,0) initial dcl 2-27 isot_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 lbx internal static fixed bin(17,0) initial dcl 1-42 linkage_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 lockup_sct_index internal static fixed bin(17,0) initial dcl 2-27 lot_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 lpx internal static fixed bin(17,0) initial dcl 1-42 mcp automatic pointer dcl 1-10 mme1_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme2_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme3_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme4_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_execute_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_read_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_write_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_a_gate_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_call_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_execute_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_read_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_write_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 op_not_complete_sct_index internal static fixed bin(17,0) initial dcl 2-27 other_command_sct_index internal static fixed bin(17,0) initial dcl 2-27 other_illegal_proc_sct_index internal static fixed bin(17,0) initial dcl 2-27 out_of_bounds_sct_index internal static fixed bin(17,0) initial dcl 2-27 outward_call_sct_index internal static fixed bin(17,0) initial dcl 2-27 overflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 ovrflo_sct_index internal static fixed bin(17,0) initial dcl 2-27 packed_pointer_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 page_fault_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 parity_sct_index internal static fixed bin(17,0) initial dcl 2-27 record_quota_overflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 ring_alarm_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 sbx internal static fixed bin(17,0) initial dcl 1-42 scux based structure level 1 dcl 1-207 seg_fault_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 shutdown_sct_index internal static fixed bin(17,0) initial dcl 2-27 simfault_000000_sct_index internal static fixed bin(17,0) initial dcl 2-27 size_sct_index internal static fixed bin(17,0) initial dcl 2-27 spx internal static fixed bin(17,0) initial dcl 1-42 startup_sct_index internal static fixed bin(17,0) initial dcl 2-27 storage_sct_index internal static fixed bin(17,0) initial dcl 2-27 store_sct_index internal static fixed bin(17,0) initial dcl 2-27 stringsize_sct_index internal static fixed bin(17,0) initial dcl 2-27 system_packed_pointer_sct_index internal static fixed bin(17,0) initial dcl 2-27 timer_runout_sct_index internal static fixed bin(17,0) initial dcl 2-27 trouble_sct_index internal static fixed bin(17,0) initial dcl 2-27 undefined_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 undefined_pointer_sct_index internal static fixed bin(17,0) initial dcl 2-27 underflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 zerodivide_sct_index internal static fixed bin(17,0) initial dcl 2-27 NAMES DECLARED BY EXPLICIT CONTEXT. found_ips 000154 constant label dcl 115 ref 94 proc_int_handler 000024 constant entry external dcl 42 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 530 566 366 540 Length 1050 366 36 246 141 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME proc_int_handler 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME proc_int_handler 000100 msg proc_int_handler 000101 stacq_temp proc_int_handler 000102 new_ips_message proc_int_handler 000104 mc_ptr proc_int_handler 000106 fim_code proc_int_handler 000107 i proc_int_handler 000110 ringno proc_int_handler 000111 r proc_int_handler 000112 name proc_int_handler 000122 scup proc_int_handler 000124 aptep proc_int_handler THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry stacq_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ring_alarm$set signaller syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. pds$apt_ptr pds$auto_mask pds$condition_name pds$ips_mask pds$process_group_id pds$signal_data sys_info$all_valid_ips_mask sys_info$ips_mask_data LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 42 000023 79 000031 80 000033 81 000035 82 000040 88 000043 89 000047 90 000054 92 000055 94 000065 96 000073 98 000075 100 000125 101 000130 102 000133 103 000142 104 000144 105 000147 106 000150 108 000151 109 000153 115 000154 118 000157 119 000165 128 000166 129 000171 130 000174 131 000200 132 000206 133 000210 134 000214 136 000215 138 000222 140 000226 141 000227 142 000230 150 000232 152 000241 153 000255 155 000261 157 000267 159 000274 161 000301 163 000306 165 000313 167 000320 169 000325 171 000332 173 000337 175 000344 177 000351 178 000352 180 000361 206 000365 ----------------------------------------------------------- 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