COMPILATION LISTING OF SEGMENT iox_propagate 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 0958.7 mst Sat Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright (c) 1987 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * Copyright (c) 1972 by Massachusetts Institute of * 9* * Technology and Honeywell Information Systems, Inc. * 10* * * 11* ****************************************************** */ 12 13 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 14 iox_propagate: proc(); 15 16 return; /* Not a legal entry. */ 17 18 /* Pointers. */ 19 20 dcl (iocb_ptr, a_iocb_ptr, father_iocb_ptr) ptr; 21 22 /* Based. */ 23 1 1 /* BEGIN INCLUDE FILE iocbx.incl.pl1 */ 1 2 /* written 27 Dec 1973, M. G. Smith */ 1 3 /* returns attributes removed, hashing support BIM Spring 1981 */ 1 4 /* version made character string June 1981 BIM */ 1 5 /* Modified 11/29/82 by S. Krupp to add new entries and to change 1 6* version number to IOX2. */ 1 7 /* format: style2 */ 1 8 1 9 dcl 1 iocb aligned based, /* I/O control block. */ 1 10 2 version character (4) aligned, /* IOX2 */ 1 11 2 name char (32), /* I/O name of this block. */ 1 12 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 13 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 14 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 15 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 16 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 17 2 event_channel bit (72), /* Event channel for asynchronous I/O. */ 1 18 2 detach_iocb entry (ptr, fixed bin (35)), 1 19 /* detach_iocb(p) */ 1 20 2 open entry (ptr, fixed, bit (1) aligned, fixed bin (35)), 1 21 /* open(p,mode,not_used) */ 1 22 2 close entry (ptr, fixed bin (35)), 1 23 /* close(p) */ 1 24 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed bin (35)), 1 25 /* get_line(p,bufptr,buflen,actlen) */ 1 26 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed bin (35)), 1 27 /* get_chars(p,bufptr,buflen,actlen) */ 1 28 2 put_chars entry (ptr, ptr, fixed (21), fixed bin (35)), 1 29 /* put_chars(p,bufptr,buflen) */ 1 30 2 modes entry (ptr, char (*), char (*), fixed bin (35)), 1 31 /* modes(p,newmode,oldmode) */ 1 32 2 position entry (ptr, fixed, fixed (21), fixed bin (35)), 1 33 /* position(p,u1,u2) */ 1 34 2 control entry (ptr, char (*), ptr, fixed bin (35)), 1 35 /* control(p,order,infptr) */ 1 36 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed bin (35)), 1 37 /* read_record(p,bufptr,buflen,actlen) */ 1 38 2 write_record entry (ptr, ptr, fixed (21), fixed bin (35)), 1 39 /* write_record(p,bufptr,buflen) */ 1 40 2 rewrite_record entry (ptr, ptr, fixed (21), fixed bin (35)), 1 41 /* rewrite_record(p,bufptr,buflen) */ 1 42 2 delete_record entry (ptr, fixed bin (35)), 1 43 /* delete_record(p) */ 1 44 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed bin (35)), 1 45 /* seek_key(p,key,len) */ 1 46 2 read_key entry (ptr, char (256) varying, fixed (21), fixed bin (35)), 1 47 /* read_key(p,key,len) */ 1 48 2 read_length entry (ptr, fixed (21), fixed bin (35)), 1 49 /* read_length(p,len) */ 1 50 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 1 51 /* open_file(p,mode,desc,not_used,s) */ 1 52 2 close_file entry (ptr, char (*), fixed bin (35)), 1 53 /* close_file(p,desc,s) */ 1 54 2 detach entry (ptr, char (*), fixed bin (35)), 1 55 /* detach(p,desc,s) */ 1 56 /* Hidden information, to support SYN attachments. */ 1 57 2 ios_compatibility ptr, /* Ptr to old DIM's IOS transfer vector. */ 1 58 2 syn_inhibits bit (36), /* Operations inhibited by SYN. */ 1 59 2 syn_father ptr, /* IOCB immediately SYNed to. */ 1 60 2 syn_brother ptr, /* Next IOCB SYNed as this one is. */ 1 61 2 syn_son ptr, /* First IOCB SYNed to this one. */ 1 62 2 hash_chain_ptr ptr; /* Next IOCB in hash bucket */ 1 63 1 64 declare iox_$iocb_version_sentinel 1 65 character (4) aligned external static; 1 66 1 67 /* END INCLUDE FILE iocbx.incl.pl1 */ 24 25 26 /* Constants. */ 27 28 29 dcl iox_$err_no_operation ext entry options (variable); 30 dcl iox_$err_not_attached ext entry options (variable); 31 dcl iox_$err_not_closed ext entry options (variable); 32 dcl iox_$err_not_open ext entry options (variable); 33 dcl iox_$err_old_dim ext entry options (variable); 34 dcl open_bit bit (36) int static init ("100000000000000"b); 35 dcl close_bit bit (36) int static init ("010000000000000"b); 36 dcl get_line_bit bit (36) int static init ("001000000000000"b); 37 dcl get_chars_bit bit (36) int static init ("000100000000000"b); 38 dcl put_chars_bit bit (36) int static init ("000010000000000"b); 39 dcl modes_bit bit (36) int static init ("000001000000000"b); 40 dcl position_bit bit (36) int static init ("000000100000000"b); 41 dcl control_bit bit (36) int static init ("000000010000000"b); 42 dcl read_record_bit bit (36) int static init ("000000001000000"b); 43 dcl write_record_bit bit (36) int static init ("000000000100000"b); 44 dcl rewrite_record_bit bit (36) int static init ("000000000010000"b); 45 dcl delete_record_bit bit (36) int static init ("000000000001000"b); 46 dcl seek_key_bit bit (36) int static init ("000000000000100"b); 47 dcl read_key_bit bit (36) int static init ("000000000000010"b); 48 dcl read_length_bit bit (36) int static init ("000000000000001"b); 49 50 /* Built-in. */ 51 52 dcl null builtin; 53 54 /* End of declarations. */ 55 56 57 58 59 60 /* Beginning of entry point ..... iox_$propagate(iocb_ptr) ..... */ 61 62 propagate: entry(a_iocb_ptr); 63 64 iocb_ptr = a_iocb_ptr; 65 if iocb_ptr = null () then return; 66 if iocb_ptr -> iocb.version ^= iox_$iocb_version_sentinel then return; 67 if iocb_ptr -> iocb.actual_iocb_ptr = iocb_ptr then do; 68 /* Not a SYN attachment, ensure IOCB consistent. */ 69 if iocb_ptr -> iocb.attach_descrip_ptr = null () then do; 70 /* IOCB is detached. */ 71 iocb_ptr -> iocb.attach_data_ptr, iocb_ptr -> iocb.open_descrip_ptr, 72 /* "open_data_ptr" is reset below. */ 73 iocb_ptr -> iocb.ios_compatibility = null (); 74 iocb_ptr -> iocb.event_channel = "0"b; 75 iocb_ptr -> iocb.detach_iocb = iox_$err_not_attached; 76 iocb_ptr -> iocb.open = iox_$err_not_attached; 77 iocb_ptr -> iocb.modes = iox_$err_not_attached; 78 iocb_ptr -> iocb.control = iox_$err_not_attached; 79 end; 80 else if iocb_ptr -> iocb.open_descrip_ptr = null () then do; 81 /* IOCB is closed. */ 82 if iocb_ptr -> iocb.open = iox_$err_not_attached | iocb_ptr -> iocb.open = iox_$err_not_closed 83 then iocb_ptr -> iocb.open = iox_$err_no_operation; 84 if iocb_ptr -> iocb.control = iox_$err_no_operation | iocb_ptr -> iocb.control = iox_$err_not_attached 85 then iocb_ptr -> iocb.control = iox_$err_not_open; 86 if iocb_ptr -> iocb.modes = iox_$err_no_operation | iocb_ptr -> iocb.modes = iox_$err_not_attached 87 then iocb_ptr -> iocb.modes = iox_$err_not_open; 88 end; 89 if iocb_ptr -> iocb.open_descrip_ptr = null () then do; 90 /* IOCB is detached or closed. */ 91 iocb_ptr -> iocb.open_data_ptr = null (); 92 if iocb_ptr -> iocb.close ^= iox_$err_old_dim then iocb_ptr -> iocb.close = iox_$err_not_open; 93 if iocb_ptr -> iocb.get_line ^= iox_$err_old_dim then iocb_ptr -> iocb.get_line = iox_$err_not_open; 94 if iocb_ptr -> iocb.get_chars ^= iox_$err_old_dim then iocb_ptr -> iocb.get_chars = iox_$err_not_open; 95 if iocb_ptr -> iocb.put_chars ^= iox_$err_old_dim then iocb_ptr -> iocb.put_chars = iox_$err_not_open; 96 if iocb_ptr -> iocb.position ^= iox_$err_old_dim then iocb_ptr -> iocb.position = iox_$err_not_open; 97 if iocb_ptr -> iocb.read_record ^= iox_$err_old_dim 98 then iocb_ptr -> iocb.read_record = iox_$err_not_open; 99 if iocb_ptr -> iocb.write_record ^= iox_$err_old_dim 100 then iocb_ptr -> iocb.write_record = iox_$err_not_open; 101 if iocb_ptr -> iocb.rewrite_record ^= iox_$err_old_dim 102 then iocb_ptr -> iocb.rewrite_record = iox_$err_not_open; 103 if iocb_ptr -> iocb.delete_record ^= iox_$err_old_dim 104 then iocb_ptr -> iocb.delete_record = iox_$err_not_open; 105 if iocb_ptr -> iocb.seek_key ^= iox_$err_old_dim then iocb_ptr -> iocb.seek_key = iox_$err_not_open; 106 if iocb_ptr -> iocb.read_key ^= iox_$err_old_dim then iocb_ptr -> iocb.read_key = iox_$err_not_open; 107 if iocb_ptr -> iocb.read_length ^= iox_$err_old_dim 108 then iocb_ptr -> iocb.read_length = iox_$err_not_open; 109 end; 110 else do; /* IOCB is open. */ 111 if iocb_ptr -> iocb.detach_iocb ^= iox_$err_old_dim 112 then iocb_ptr -> iocb.detach_iocb = iox_$err_not_closed; 113 if iocb_ptr -> iocb.open ^= iox_$err_old_dim then iocb_ptr -> iocb.open = iox_$err_not_closed; 114 if iocb_ptr -> iocb.get_line = iox_$err_not_open 115 then iocb_ptr -> iocb.get_line = iox_$err_no_operation; 116 if iocb_ptr -> iocb.get_chars = iox_$err_not_open 117 then iocb_ptr -> iocb.get_chars = iox_$err_no_operation; 118 if iocb_ptr -> iocb.put_chars = iox_$err_not_open 119 then iocb_ptr -> iocb.put_chars = iox_$err_no_operation; 120 if iocb_ptr -> iocb.modes = iox_$err_not_open then iocb_ptr -> iocb.modes = iox_$err_no_operation; 121 if iocb_ptr -> iocb.position = iox_$err_not_open 122 then iocb_ptr -> iocb.position = iox_$err_no_operation; 123 if iocb_ptr -> iocb.control = iox_$err_not_open then iocb_ptr -> iocb.control = iox_$err_no_operation; 124 if iocb_ptr -> iocb.read_record = iox_$err_not_open 125 then iocb_ptr -> iocb.read_record = iox_$err_no_operation; 126 if iocb_ptr -> iocb.write_record = iox_$err_not_open 127 then iocb_ptr -> iocb.write_record = iox_$err_no_operation; 128 if iocb_ptr -> iocb.rewrite_record = iox_$err_not_open 129 then iocb_ptr -> iocb.rewrite_record = iox_$err_no_operation; 130 if iocb_ptr -> iocb.delete_record = iox_$err_not_open 131 then iocb_ptr -> iocb.delete_record = iox_$err_no_operation; 132 if iocb_ptr -> iocb.seek_key = iox_$err_not_open 133 then iocb_ptr -> iocb.seek_key = iox_$err_no_operation; 134 if iocb_ptr -> iocb.read_key = iox_$err_not_open 135 then iocb_ptr -> iocb.read_key = iox_$err_no_operation; 136 if iocb_ptr -> iocb.read_length = iox_$err_not_open 137 then iocb_ptr -> iocb.read_length = iox_$err_no_operation; 138 end; 139 end; 140 141 father_iocb_ptr = iocb_ptr; 142 go to skip; 143 144 recurse: 145 entry (a_iocb_ptr); 146 147 father_iocb_ptr = a_iocb_ptr; 148 149 /* Propagate corrected IOCB fields to all SYN offspring. */ 150 151 skip: 152 do iocb_ptr = father_iocb_ptr -> iocb.syn_son repeat iocb_ptr -> iocb.syn_brother while (iocb_ptr ^= null ()); 153 iocb_ptr -> iocb.actual_iocb_ptr = father_iocb_ptr -> iocb.actual_iocb_ptr; 154 /* Update each son. */ 155 iocb_ptr -> iocb.open_descrip_ptr = father_iocb_ptr -> iocb.open_descrip_ptr; 156 iocb_ptr -> iocb.open_data_ptr = father_iocb_ptr -> iocb.open_data_ptr; 157 iocb_ptr -> iocb.event_channel = father_iocb_ptr -> iocb.event_channel; 158 iocb_ptr -> iocb.ios_compatibility = father_iocb_ptr -> iocb.ios_compatibility; 159 if iocb_ptr -> iocb.syn_inhibits & open_bit 160 then iocb_ptr -> iocb.open = iox_$err_no_operation; 161 else iocb_ptr -> iocb.open = father_iocb_ptr -> iocb.open; 162 if iocb_ptr -> iocb.syn_inhibits & close_bit 163 then iocb_ptr -> iocb.close = iox_$err_no_operation; 164 else iocb_ptr -> iocb.close = father_iocb_ptr -> iocb.close; 165 if iocb_ptr -> iocb.syn_inhibits & get_line_bit 166 then iocb_ptr -> iocb.get_line = iox_$err_no_operation; 167 else iocb_ptr -> iocb.get_line = father_iocb_ptr -> iocb.get_line; 168 if iocb_ptr -> iocb.syn_inhibits & get_chars_bit 169 then iocb_ptr -> iocb.get_chars = iox_$err_no_operation; 170 else iocb_ptr -> iocb.get_chars = father_iocb_ptr -> iocb.get_chars; 171 if iocb_ptr -> iocb.syn_inhibits & put_chars_bit 172 then iocb_ptr -> iocb.put_chars = iox_$err_no_operation; 173 else iocb_ptr -> iocb.put_chars = father_iocb_ptr -> iocb.put_chars; 174 if iocb_ptr -> iocb.syn_inhibits & modes_bit 175 then iocb_ptr -> iocb.modes = iox_$err_no_operation; 176 else iocb_ptr -> iocb.modes = father_iocb_ptr -> iocb.modes; 177 if iocb_ptr -> iocb.syn_inhibits & position_bit 178 then iocb_ptr -> iocb.position = iox_$err_no_operation; 179 else iocb_ptr -> iocb.position = father_iocb_ptr -> iocb.position; 180 if iocb_ptr -> iocb.syn_inhibits & control_bit 181 then iocb_ptr -> iocb.control = iox_$err_no_operation; 182 else iocb_ptr -> iocb.control = father_iocb_ptr -> iocb.control; 183 if iocb_ptr -> iocb.syn_inhibits & read_record_bit 184 then iocb_ptr -> iocb.read_record = iox_$err_no_operation; 185 else iocb_ptr -> iocb.read_record = father_iocb_ptr -> iocb.read_record; 186 if iocb_ptr -> iocb.syn_inhibits & write_record_bit 187 then iocb_ptr -> iocb.write_record = iox_$err_no_operation; 188 else iocb_ptr -> iocb.write_record = father_iocb_ptr -> iocb.write_record; 189 if iocb_ptr -> iocb.syn_inhibits & rewrite_record_bit 190 then iocb_ptr -> iocb.rewrite_record = iox_$err_no_operation; 191 else iocb_ptr -> iocb.rewrite_record = father_iocb_ptr -> iocb.rewrite_record; 192 if iocb_ptr -> iocb.syn_inhibits & delete_record_bit 193 then iocb_ptr -> iocb.delete_record = iox_$err_no_operation; 194 else iocb_ptr -> iocb.delete_record = father_iocb_ptr -> iocb.delete_record; 195 if iocb_ptr -> iocb.syn_inhibits & seek_key_bit 196 then iocb_ptr -> iocb.seek_key = iox_$err_no_operation; 197 else iocb_ptr -> iocb.seek_key = father_iocb_ptr -> iocb.seek_key; 198 if iocb_ptr -> iocb.syn_inhibits & read_key_bit 199 then iocb_ptr -> iocb.read_key = iox_$err_no_operation; 200 else iocb_ptr -> iocb.read_key = father_iocb_ptr -> iocb.read_key; 201 if iocb_ptr -> iocb.syn_inhibits & read_length_bit 202 then iocb_ptr -> iocb.read_length = iox_$err_no_operation; 203 else iocb_ptr -> iocb.read_length = father_iocb_ptr -> iocb.read_length; 204 if iocb_ptr -> iocb.syn_son ^= null then call recurse (iocb_ptr); 205 end; 206 return; 207 208 end iox_propagate; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0803.9 iox_propagate.pl1 >spec>install>1111>iox_propagate.pl1 24 1 06/03/83 1008.5 iocbx.incl.pl1 >ldd>include>iocbx.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. a_iocb_ptr parameter pointer dcl 20 ref 62 64 144 147 actual_iocb_ptr 12 based pointer level 2 dcl 1-9 set ref 67 153* 153 attach_data_ptr 16 based pointer level 2 dcl 1-9 set ref 71* attach_descrip_ptr 14 based pointer level 2 dcl 1-9 ref 69 close 36 based entry variable level 2 dcl 1-9 set ref 92 92* 162* 164* 164 close_bit constant bit(36) initial packed unaligned dcl 35 ref 162 control 66 based entry variable level 2 dcl 1-9 set ref 78* 84 84 84* 123 123* 180* 182* 182 control_bit constant bit(36) initial packed unaligned dcl 41 ref 180 delete_record 106 based entry variable level 2 dcl 1-9 set ref 103 103* 130 130* 192* 194* 194 delete_record_bit constant bit(36) initial packed unaligned dcl 45 ref 192 detach_iocb 26 based entry variable level 2 dcl 1-9 set ref 75* 111 111* event_channel 24 based bit(72) level 2 dcl 1-9 set ref 74* 157* 157 father_iocb_ptr 000102 automatic pointer dcl 20 set ref 141* 147* 151 153 155 156 157 158 161 164 167 170 173 176 179 182 185 188 191 194 197 200 203 get_chars 46 based entry variable level 2 dcl 1-9 set ref 94 94* 116 116* 168* 170* 170 get_chars_bit constant bit(36) initial packed unaligned dcl 37 ref 168 get_line 42 based entry variable level 2 dcl 1-9 set ref 93 93* 114 114* 165* 167* 167 get_line_bit constant bit(36) initial packed unaligned dcl 36 ref 165 iocb based structure level 1 dcl 1-9 iocb_ptr 000100 automatic pointer dcl 20 set ref 64* 65 66 67 67 69 71 71 71 74 75 76 77 78 80 82 82 82 84 84 84 86 86 86 89 91 92 92 93 93 94 94 95 95 96 96 97 97 99 99 101 101 103 103 105 105 106 106 107 107 111 111 113 113 114 114 116 116 118 118 120 120 121 121 123 123 124 124 126 126 128 128 130 130 132 132 134 134 136 136 141 151* 151* 153 155 156 157 158 159 159 161 162 162 164 165 165 167 168 168 170 171 171 173 174 174 176 177 177 179 180 180 182 183 183 185 186 186 188 189 189 191 192 192 194 195 195 197 198 198 200 201 201 203 204 204* 205 ios_compatibility 142 based pointer level 2 dcl 1-9 set ref 71* 158* 158 iox_$err_no_operation 000012 constant entry external dcl 29 ref 82 84 86 114 116 118 120 121 123 124 126 128 130 132 134 136 159 162 165 168 171 174 177 180 183 186 189 192 195 198 201 iox_$err_not_attached 000014 constant entry external dcl 30 ref 75 76 77 78 82 84 86 iox_$err_not_closed 000016 constant entry external dcl 31 ref 82 111 113 iox_$err_not_open 000020 constant entry external dcl 32 ref 84 86 92 93 94 95 96 97 99 101 103 105 106 107 114 116 118 120 121 123 124 126 128 130 132 134 136 iox_$err_old_dim 000022 constant entry external dcl 33 ref 92 93 94 95 96 97 99 101 103 105 106 107 111 113 iox_$iocb_version_sentinel 000010 external static char(4) dcl 1-64 ref 66 modes 56 based entry variable level 2 dcl 1-9 set ref 77* 86 86 86* 120 120* 174* 176* 176 modes_bit constant bit(36) initial packed unaligned dcl 39 ref 174 null builtin function dcl 52 ref 65 69 71 80 89 91 151 204 open 32 based entry variable level 2 dcl 1-9 set ref 76* 82 82 82* 113 113* 159* 161* 161 open_bit constant bit(36) initial packed unaligned dcl 34 ref 159 open_data_ptr 22 based pointer level 2 dcl 1-9 set ref 91* 156* 156 open_descrip_ptr 20 based pointer level 2 dcl 1-9 set ref 71* 80 89 155* 155 position 62 based entry variable level 2 dcl 1-9 set ref 96 96* 121 121* 177* 179* 179 position_bit constant bit(36) initial packed unaligned dcl 40 ref 177 put_chars 52 based entry variable level 2 dcl 1-9 set ref 95 95* 118 118* 171* 173* 173 put_chars_bit constant bit(36) initial packed unaligned dcl 38 ref 171 read_key 116 based entry variable level 2 dcl 1-9 set ref 106 106* 134 134* 198* 200* 200 read_key_bit constant bit(36) initial packed unaligned dcl 47 ref 198 read_length 122 based entry variable level 2 dcl 1-9 set ref 107 107* 136 136* 201* 203* 203 read_length_bit constant bit(36) initial packed unaligned dcl 48 ref 201 read_record 72 based entry variable level 2 dcl 1-9 set ref 97 97* 124 124* 183* 185* 185 read_record_bit constant bit(36) initial packed unaligned dcl 42 ref 183 rewrite_record 102 based entry variable level 2 dcl 1-9 set ref 101 101* 128 128* 189* 191* 191 rewrite_record_bit constant bit(36) initial packed unaligned dcl 44 ref 189 seek_key 112 based entry variable level 2 dcl 1-9 set ref 105 105* 132 132* 195* 197* 197 seek_key_bit constant bit(36) initial packed unaligned dcl 46 ref 195 syn_brother 150 based pointer level 2 dcl 1-9 ref 205 syn_inhibits 144 based bit(36) level 2 dcl 1-9 ref 159 162 165 168 171 174 177 180 183 186 189 192 195 198 201 syn_son 152 based pointer level 2 dcl 1-9 ref 151 204 version based char(4) level 2 dcl 1-9 ref 66 write_record 76 based entry variable level 2 dcl 1-9 set ref 99 99* 126 126* 186* 188* 188 write_record_bit constant bit(36) initial packed unaligned dcl 43 ref 186 NAMES DECLARED BY EXPLICIT CONTEXT. iox_propagate 000007 constant entry external dcl 14 propagate 000020 constant entry external dcl 62 recurse 001116 constant entry external dcl 144 ref 204 skip 001127 constant label dcl 151 ref 142 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1624 1650 1504 1634 Length 2104 1504 24 217 117 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iox_propagate 74 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME iox_propagate 000100 iocb_ptr iox_propagate 000102 father_iocb_ptr iox_propagate THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_in return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$err_no_operation iox_$err_not_attached iox_$err_not_closed iox_$err_not_open iox_$err_old_dim THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$iocb_version_sentinel LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000006 16 000014 62 000015 64 000025 65 000031 66 000035 67 000041 69 000045 71 000051 74 000055 75 000060 76 000064 77 000066 78 000070 79 000072 80 000073 82 000077 84 000133 86 000167 89 000223 91 000227 92 000231 93 000251 94 000271 95 000311 96 000331 97 000351 99 000371 101 000411 103 000431 105 000451 106 000471 107 000511 109 000531 111 000532 113 000552 114 000572 116 000612 118 000632 120 000652 121 000672 123 000712 124 000732 126 000752 128 000772 130 001012 132 001032 134 001052 136 001072 141 001112 142 001113 144 001114 147 001123 151 001127 153 001136 155 001142 156 001145 157 001150 158 001155 159 001157 161 001170 162 001174 164 001205 165 001211 167 001222 168 001226 170 001237 171 001243 173 001254 174 001260 176 001271 177 001275 179 001306 180 001312 182 001323 183 001327 185 001340 186 001344 188 001355 189 001361 191 001372 192 001376 194 001407 195 001413 197 001424 198 001430 200 001441 201 001445 203 001456 204 001462 205 001474 206 001500 ----------------------------------------------------------- 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