COMPILATION LISTING OF SEGMENT bce_ioi_post 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 1014.0 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,declareind10,dclind10,idind20,indattr,delnl,insnl,tree,ifthenstmt */ 10 11 bce_ioi_post: 12 proc (ioi_event_channel, ioi_message); 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-09-05,Farley), approve(86-07-18,MCR7439), 16* audit(86-09-24,Fawcett), install(86-10-20,MR12.0-1189): 17* Program to post an I/O complete for IOI at BCE. 18* END HISTORY COMMENTS */ 19 20 if sys_info$service_system /* shouldn't be here */ 21 then call syserr (CRASH, "bce_ioi_post: System not at correct level to post I/O completion."); 22 ioi_post_area_ptr = addr (bce_ioi_post_seg$); 23 imp = addr (ioi_message); 24 do bufx = 1 to ioi_post_area.number; 25 if ioi_post_area.buffer (bufx).ev_chn = ioi_event_channel then do; 26 io_post_buffer_ptr = addr (ioi_post_area.buffer (bufx)); 27 if imess.level = "7"b3 then do; 28 if io_post_buffer.state ^= WAITING_SPECIAL then goto next_post_buffer; 29 io_post_buffer.message = ioi_message; 30 io_post_buffer.state = SPECIAL_ARRIVED; 31 end; 32 else if io_post_buffer.state ^= IO_OUTSTANDING 33 then goto next_post_buffer; 34 else do; 35 io_post_buffer.message = ioi_message; 36 io_post_buffer.state = IO_COMPLETE; 37 end; 38 return; 39 end; 40 next_post_buffer: 41 end; 42 crash: 43 if imess.level = "1"b3 44 then call syserr (ANNOUNCE, 45 "bce_ioi_post: Unexpected System Fault.^/^14xioi_event_channel: ^24.3b^/^14xioi_message: ^24.3b", 46 unspec (ioi_event_channel), unspec (ioi_message)); 47 else if imess.level ^= "7"b3 /* ignore unwanted specials, but crash on others.. */ 48 then call syserr (CRASH, 49 "bce_ioi_post: Error posting I/O event.^/^14xioi_event_channel: ^24.3b^/^14xioi_message: ^24.3b", 50 unspec (ioi_event_channel), unspec (ioi_message)); 51 return; 52 53 dcl based_bin fixed bin based; 54 dcl bufx fixed bin; 55 dcl ioi_event_channel fixed bin (71) parameter; 56 dcl ioi_message fixed bin (71) parameter; 57 dcl sys_info$service_system 58 bit (1) aligned external static; 59 dcl syserr entry options (variable); 60 1 1 /* BEGIN include file bce_ioi_post_area.incl.pl1 */ 1 2 1 3 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-18,Farley), approve(86-07-18,MCR7439), 1 7* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189): 1 8* Area used for posting completion of peripheral i/o for IOI while at BCE. 1 9* END HISTORY COMMENTS */ 1 10 1 11 dcl bce_ioi_post_seg$ aligned external; 1 12 1 13 dcl 1 ioi_post_area aligned based (ioi_post_area_ptr), 1 14 2 number fixed bin, /* buffers currently active */ 1 15 2 pad (7) bit (36), 1 16 2 buffer (0 refer (ioi_post_area.number)) like io_post_buffer; 1 17 1 18 dcl 1 io_post_buffer aligned based (io_post_buffer_ptr), 1 19 2 ev_chn fixed bin (71), /* from dte.ev_chn */ 1 20 2 message fixed bin (71), /* like imess */ 1 21 2 state fixed bin, /* current buffer state */ 1 22 2 pad bit (36); /* pad to even word boundary */ 1 23 1 24 dcl io_post_buffer_ptr ptr; 1 25 dcl ioi_post_area_ptr ptr; 1 26 1 27 /* Buffer State Constants */ 1 28 1 29 dcl IO_OUTSTANDING fixed bin static options (constant) init (1); 1 30 dcl IO_COMPLETE fixed bin static options (constant) init (2); 1 31 dcl WAITING_SPECIAL fixed bin static options (constant) init (3); 1 32 dcl SPECIAL_ARRIVED fixed bin static options (constant) init (4); 1 33 1 34 /* END include file bce_ioi_post_area.incl.pl1 */ 61 62 2 1 2 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 2 3 /* Last modified 3/24/75 by Noel I. Morris */ 2 4 2 5 dcl isp ptr; /* pointer to status structure */ 2 6 2 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 2 8 2 completion, /* completion flags */ 2 9 (3 st bit (1), /* "1"b if status returned */ 2 10 3 er bit (1), /* "1"b if status indicates error condition */ 2 11 3 run bit (1), /* "1"b if channel still running */ 2 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 2 13 2 level fixed bin (3), /* IOM interrupt level */ 2 14 2 offset fixed bin (18), /* DCW list offset */ 2 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 2 16 2 iom_stat bit (72), /* IOM status */ 2 17 2 lpw bit (72); /* LPW residue */ 2 18 2 19 dcl imp ptr; /* pointer to message structure */ 2 20 2 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 2 22 (2 completion like istat.completion, /* completion flags */ 2 23 2 pad bit (11), 2 24 2 level bit (3), /* interrupt level */ 2 25 2 offset bit (18), /* DCW list offset */ 2 26 2 status bit (36)) unal; /* first 36 bits of status */ 2 27 2 28 /* End of include file ...... ioi_stat.incl.pl1 */ 2 29 63 64 3 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 3 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 3 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 3 4 3 5 /* This include file has an ALM version. Keep 'em in sync! */ 3 6 3 7 dcl ( 3 8 3 9 /* The following constants define the message action codes. This indicates 3 10*how a message is to be handled. */ 3 11 3 12 SYSERR_CRASH_SYSTEM init (1), 3 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 3 14 3 15 SYSERR_TERMINATE_PROCESS init (2), 3 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 3 17 3 18 SYSERR_PRINT_WITH_ALARM init (3), 3 19 BEEP init (3), /* Beep and print the message on the console. */ 3 20 3 21 SYSERR_PRINT_ON_CONSOLE init (0), 3 22 ANNOUNCE init (0), /* Just print the message on the console. */ 3 23 3 24 SYSERR_LOG_OR_PRINT init (4), 3 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 3 26 3 27 SYSERR_LOG_OR_DISCARD init (5), 3 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 3 29 3 30 3 31 /* The following constants are added to the normal severities to indicate 3 32*different sorting classes of messages. */ 3 33 3 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 3 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 3 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 3 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 3 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 3 39 ) fixed bin internal static options (constant); 3 40 3 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 65 66 67 /* BEGIN MESSAGE DOCUMENTATION 68* 69* Message: 70* bce_ioi_post: System not at correct level to post I/O completion. 71* 72* S: $crash 73* 74* T: $init 75* 76* M: The flag sys_info$service_system indicates that the system is up and 77* should be posting I/O completions via pxss$io_wakeup, not this program. 78* $err 79* 80* A: $notify 81* 82* Message: 83* bce_ioi_post: Unexpected System Fault. 84* ioi_event_channel: CCCCCCCCCCCC ioi_message: MMMMMMMMMMMM 85* 86* S: $crash 87* 88* T: $init 89* 90* M: $err 91* 92* A: $notify 93* 94* Message: 95* bce_ioi_post: Error posting i/o completion. 96* ioi_event_channel: CCCCCCCCCCCC ioi_message: MMMMMMMMMMMM 97* 98* S: $crash 99* 100* T: $init 101* 102* M: No posting buffer was found in an "I/O outstanding" state for the 103* above event channel. 104* $err 105* 106* A: $notify 107* 108* END MESSAGE DOCUMENTATION */ 109 110 end bce_ioi_post; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0839.1 bce_ioi_post.pl1 >special_ldd>install>MR12.3-1114>bce_ioi_post.pl1 61 1 10/21/86 1251.6 bce_ioi_post_area.incl.pl1 >ldd>include>bce_ioi_post_area.incl.pl1 63 2 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 65 3 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. ANNOUNCE 000000 constant fixed bin(17,0) initial dcl 3-7 set ref 42* CRASH 000005 constant fixed bin(17,0) initial dcl 3-7 set ref 20* 47* IO_COMPLETE constant fixed bin(17,0) initial dcl 1-30 ref 36 IO_OUTSTANDING constant fixed bin(17,0) initial dcl 1-29 ref 32 SPECIAL_ARRIVED constant fixed bin(17,0) initial dcl 1-32 ref 30 WAITING_SPECIAL constant fixed bin(17,0) initial dcl 1-31 ref 28 bce_ioi_post_seg$ 000014 external static fixed bin(17,0) dcl 1-11 set ref 22 buffer 10 based structure array level 2 dcl 1-13 set ref 26 bufx 000100 automatic fixed bin(17,0) dcl 54 set ref 24* 25 26* completion based structure level 2 dcl 2-7 ev_chn 10 based fixed bin(71,0) array level 3 dcl 1-13 set ref 25 imess based structure level 1 dcl 2-21 imp 000106 automatic pointer dcl 2-19 set ref 23* 27 42 47 io_post_buffer based structure level 1 dcl 1-18 io_post_buffer_ptr 000102 automatic pointer dcl 1-24 set ref 26* 28 29 30 32 35 36 ioi_event_channel parameter fixed bin(71,0) dcl 55 ref 11 25 42 42 47 47 ioi_message parameter fixed bin(71,0) dcl 56 set ref 11 23 29 35 42 42 47 47 ioi_post_area based structure level 1 dcl 1-13 ioi_post_area_ptr 000104 automatic pointer dcl 1-25 set ref 22* 24 25 26 istat based structure level 1 dcl 2-7 level 0(15) based bit(3) level 2 packed packed unaligned dcl 2-21 ref 27 42 47 message 2 based fixed bin(71,0) level 2 dcl 1-18 set ref 29* 35* number based fixed bin(17,0) level 2 dcl 1-13 ref 24 state 4 based fixed bin(17,0) level 2 dcl 1-18 set ref 28 30* 32 36* sys_info$service_system 000010 external static bit(1) dcl 57 ref 20 syserr 000012 constant entry external dcl 59 ref 20 42 47 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 3-7 JUST_LOG internal static fixed bin(17,0) initial dcl 3-7 LOG internal static fixed bin(17,0) initial dcl 3-7 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 3-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 3-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 3-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 3-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 3-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 3-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 3-7 based_bin based fixed bin(17,0) dcl 53 isp automatic pointer dcl 2-5 NAMES DECLARED BY EXPLICIT CONTEXT. bce_ioi_post 000114 constant entry external dcl 11 crash 000220 constant label dcl 42 next_post_buffer 000216 constant label dcl 40 ref 28 32 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 22 23 26 unspec builtin function ref 42 42 42 42 47 47 47 47 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 406 424 332 416 Length 646 332 16 205 54 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bce_ioi_post 148 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bce_ioi_post 000100 bufx bce_ioi_post 000102 io_post_buffer_ptr bce_ioi_post 000104 ioi_post_area_ptr bce_ioi_post 000106 imp bce_ioi_post THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bce_ioi_post_seg$ sys_info$service_system LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000110 20 000121 22 000142 23 000145 24 000150 25 000157 26 000166 27 000171 28 000176 29 000201 30 000203 31 000205 32 000206 35 000211 36 000213 38 000215 40 000216 42 000220 47 000267 51 000331 ----------------------------------------------------------- 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