COMPILATION LISTING OF SEGMENT mseg_upgrade_from_v2_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/09/85 1118.0 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* Support for upgrading version 2 message segments to the version supported by bound_mseg_ */ 8 9 /* Created: May 1985 by G. Palter */ 10 11 /* format: style3,linecom */ 12 13 mseg_upgrade_from_v2_: 14 procedure (); 15 16 return; /* not an entrypoint */ 17 18 19 /* Parameters */ 20 21 dcl P_mseg_operation_ptr /* -> description of the operation forcing the upgrade (I) */ 22 pointer parameter; 23 24 dcl P_salvage_completed bit (1) aligned parameter; /* salvage: set ON => salvage succeeded (O) */ 25 26 dcl P_callers_area_ptr pointer parameter; /* read_message: -> area in which to place the message (I) */ 27 dcl P_code fixed binary (35) parameter; /* read_message: set to standard system status code (O) */ 28 29 30 /* Local copies of parameters */ 31 32 dcl callers_area_ptr pointer; 33 34 dcl code fixed binary (35); 35 36 37 /* Remaining declarations */ 38 39 /* format: idind30 */ 40 41 dcl 1 v2_wakeup_state aligned, 42 2 state, 43 3 switches aligned, 44 4 allow_normal bit (1) unaligned, 45 4 allow_urgent bit (1) unaligned, 46 4 pad bit (34) unaligned, 47 3 lock_id bit (36) aligned, 48 3 event_channel fixed bin (71), 49 3 process_id bit (36) aligned, 50 2 pad (64 - 5) bit (36) aligned; 51 52 /* format: idind20 */ 53 54 dcl msg_ptr pointer; 55 dcl msg_sender_id character (32) aligned; 56 dcl (msg_time, old_msg_time) 57 fixed binary (54); 58 dcl (msg_location, msg_len, old_msg_location) 59 fixed binary (18); 60 dcl msg_sender_level fixed binary; 61 62 dcl error_table_$bad_subr_arg 63 fixed binary (35) external; 64 65 dcl ms_salvager_v2_ entry (pointer, fixed binary, fixed binary (35)); 66 dcl mseg_util_v2_$incremental_read 67 entry (pointer, bit (2) aligned, pointer, fixed binary (18), fixed binary (54), 68 fixed binary, pointer, fixed binary (18), fixed binary (18), fixed binary (54), 69 character (32) aligned, fixed binary, fixed binary (35)); 70 dcl mseg_util_v2_$read entry (pointer, bit (2) aligned, pointer, fixed binary (18), fixed binary (54), 71 fixed binary, pointer, fixed binary (18), character (32) aligned, fixed binary, 72 fixed binary (35)); 73 74 dcl (addr, bit, fixed, string, substr, unspec) 75 builtin; 76 77 /* Salvage the version 2 message segment */ 78 79 mseg_upgrade_from_v2_$salvage: 80 entry (P_mseg_operation_ptr, P_salvage_completed); 81 82 mseg_operation_ptr = P_mseg_operation_ptr; 83 84 mseg_ptr = mseg_operation.mseg_ptr; 85 86 call ms_salvager_v2_ (mseg_ptr, (0), code); /* it will report problems via admin_gate_ */ 87 88 P_salvage_completed = (code = 0); 89 90 return; 91 92 /* Get the wakeup acceptance state of a version 2 message segment -- In version 2 segments, the wakeup state is stored in 93* the header "message". We will convert said "message" into the appropriate wakeup_state structure. */ 94 95 mseg_upgrade_from_v2_$get_wakeup_state: 96 entry (P_mseg_operation_ptr); 97 98 mseg_operation_ptr = P_mseg_operation_ptr; 99 100 mseg_ptr = mseg_operation.mseg_ptr; 101 102 if mseg_ptr -> mseg_hdr_v2.ms_in_hdr 103 then do; 104 unspec (v2_wakeup_state) = unspec (mseg_ptr -> mseg_hdr_v2.hdr_ms); 105 mseg_operation.wakeup_state.version = MSEG_WAKEUP_STATE_VERSION_1; 106 string (mseg_operation.wakeup_state.flags) = string (v2_wakeup_state.switches); 107 mseg_operation.wakeup_state.event_channel = v2_wakeup_state.event_channel; 108 mseg_operation.wakeup_state.access_class = mseg_operation.access_info.access_class; 109 mseg_operation.wakeup_state.process_id = v2_wakeup_state.process_id; 110 mseg_operation.wakeup_state.lock_id = v2_wakeup_state.lock_id; 111 mseg_operation.wakeup_state_valid = "1"b; 112 end; 113 114 else mseg_operation.wakeup_state_valid = "0"b; 115 116 return; 117 118 /* Read the requested message from a version 2 message segment */ 119 120 mseg_upgrade_from_v2_$read_message: 121 entry (P_mseg_operation_ptr, P_callers_area_ptr, P_code); 122 123 mseg_operation_ptr = P_mseg_operation_ptr; 124 callers_area_ptr = P_callers_area_ptr; 125 code = error_table_$bad_subr_arg; /* in case our caller's mseg_message_info is invalid */ 126 127 mseg_ptr = mseg_operation.mseg_ptr; 128 129 mseg_message_info_ptr = addr (mseg_operation.message_info); 130 131 if mseg_message_info.message_code = MSEG_READ_FIRST 132 then call mseg_util_v2_$read (mseg_ptr, "10"b, callers_area_ptr, msg_location, msg_time, 0, msg_ptr, msg_len, 133 msg_sender_id, msg_sender_level, code); 134 135 else if mseg_message_info.message_code = MSEG_READ_LAST 136 then call mseg_util_v2_$read (mseg_ptr, "01"b, callers_area_ptr, msg_location, msg_time, 0, msg_ptr, msg_len, 137 msg_sender_id, msg_sender_level, code); 138 139 else do; 140 old_msg_location = fixed (substr (mseg_message_info.ms_id, 1, 18), 18, 0); 141 old_msg_time = fixed (substr (mseg_message_info.ms_id, 19, 54), 54, 0); 142 143 if mseg_message_info.message_code = MSEG_READ_SPECIFIED 144 then call mseg_util_v2_$incremental_read (mseg_ptr, "00"b, callers_area_ptr, old_msg_location, 145 old_msg_time, 0, msg_ptr, msg_len, msg_location, msg_time, msg_sender_id, msg_sender_level, 146 code); 147 148 else if mseg_message_info.message_code = MSEG_READ_BEFORE_SPECIFIED 149 then call mseg_util_v2_$incremental_read (mseg_ptr, "10"b, callers_area_ptr, old_msg_location, 150 old_msg_time, 0, msg_ptr, msg_len, msg_location, msg_time, msg_sender_id, msg_sender_level, 151 code); 152 153 else if mseg_message_info.message_code = MSEG_READ_AFTER_SPECIFIED 154 then call mseg_util_v2_$incremental_read (mseg_ptr, "01"b, callers_area_ptr, old_msg_location, 155 old_msg_time, 0, msg_ptr, msg_len, msg_location, msg_time, msg_sender_id, msg_sender_level, 156 code); 157 end; 158 159 if code = 0 160 then do; /*** Read succeeded -- Fill in the mseg_message_info appropriately */ 161 mseg_message_info.ms_ptr = msg_ptr; 162 mseg_message_info.ms_len = msg_len; 163 mseg_message_info.ms_id = bit (msg_location, 18) || bit (msg_time, 54); 164 mseg_message_info.ms_access_class = mseg_operation.access_info.access_class; 165 mseg_message_info.sender_id = msg_sender_id; 166 mseg_message_info.sender_process_id = ""b; 167 mseg_message_info.sender_level = msg_sender_level; 168 mseg_message_info.sender_authorization = mseg_operation.access_info.access_class; 169 mseg_message_info.sender_max_authorization = mseg_operation.access_info.access_class; 170 mseg_message_info.sender_audit = ""b; 171 end; 172 173 P_code = code; 174 175 return; 176 177 /* format: off */ 178 /* BEGIN INCLUDE FILE ... mseg_operation.incl.pl1 */ 1 2 1 3 /* format: style3,idind30,linecom */ 1 4 1 5 /**** Created 1985-04-16, BIM: from Pandolf's mseg_access_operation */ 1 6 1 7 /**** NOTES: 1 8* The caller of mseg_ must set mseg_operation.access_operation to record 1 9* the type of access checking it has performed and which mseg_ should 1 10* perform when needed (i.e., for those entrypoints which operate on 1 11* messages like mseg_$read_message). 1 12* 1 13* mseg_operation.operation is reserved explicitly for use by mseg_ and 1 14* its underlying modules. 1 15* 1 16* You must also include entry_access_info, mseg_message_info, and 1 17* mbx_wakeup_state along with this include file. */ 1 18 1 19 dcl mseg_operation_ptr pointer; 1 20 dcl MSEG_OPERATION_VERSION_1 fixed bin internal static options (constant) init (1); 1 21 dcl MSEG_TYPE_MBX fixed bin init (1) internal static options (constant); 1 22 dcl MSEG_TYPE_MS fixed bin init (2) internal static options (constant); 1 23 1 24 dcl 1 mseg_operation based (mseg_operation_ptr) aligned, 1 25 2 version fixed binary, /* current version is MSEG_OPERATION_VERSION_1 */ 1 26 2 type fixed binary, /* MBX or MS */ 1 27 2 access_operation fixed binary, /* type of access checks required for the operation */ 1 28 2 operation bit (36) aligned, /* for use by mseg_ and underlying modules */ 1 29 2 caller aligned, /* always collected in gate target */ 1 30 3 validation_level fixed bin (3), 1 31 3 privileges bit (18) aligned, /* factored for speed */ 1 32 3 pad_align_double fixed bin (71), /* just to force alignment */ 1 33 3 authorization bit (72) aligned, /* must be 2word aligned */ 1 34 3 max_authorization bit (72) aligned, 1 35 3 group_id char (32) unaligned, 1 36 2 flags aligned, 1 37 3 mseg_pathname_valid bit (1) unaligned, 1 38 3 mseg_ptr_valid bit (1) unaligned, 1 39 3 mseg_index_valid bit (1) unaligned, 1 40 3 access_info_valid bit (1) unaligned, 1 41 3 md_ptr_valid bit (1) unaligned, 1 42 3 message_info_valid bit (1) unaligned, /* note -- for some operations not all fields are used */ 1 43 3 wakeup_state_valid bit (1) unaligned, 1 44 3 suppress_access_checks bit (1) unaligned, /* set by privileged interfaces, suppresses ALL access checking */ 1 45 3 call_admin_gate bit (1) unaligned, /* we is in ring 1, boss */ 1 46 3 only_own_access bit (1) unaligned, /* the user had o rather than r/d */ 1 47 3 add_message_info_all_valid 1 48 bit (1) unaligned, /* Believe ALL the fields in message info on an add */ 1 49 3 pad bit (24) unaligned, 1 50 2 dir_name char (168) unaligned, 1 51 2 entryname char (32) unaligned, 1 52 2 mseg_ptr pointer, 1 53 2 md_ptr pointer, /* message descriptor */ 1 54 2 mseg_index fixed bin, 1 55 2 access_info aligned like entry_access_info, 1 56 2 message_info aligned like mseg_message_info, 1 57 2 wakeup_state aligned like mseg_wakeup_state; 1 58 1 59 /* END INCLUDE FILE ... mseg_operation.incl.pl1 */ 178 179 /* BEGIN INCLUDE FILE . . . mseg_message_info.incl.pl1 BIM 1984-10-10 */ 2 2 /* format: style3,idind30 */ 2 3 2 4 /* structure returned when message is read from a message segment */ 2 5 2 6 2 7 dcl mseg_message_info_ptr pointer; 2 8 2 9 dcl 1 mseg_message_info based (mseg_message_info_ptr) aligned, 2 10 2 version char (8) aligned, 2 11 2 message_code fixed bin, 2 12 2 control_flags unaligned, 2 13 3 own bit (1), 2 14 3 delete bit (1), 2 15 3 pad bit (34), 2 16 2 ms_ptr ptr, /* pointer to message */ 2 17 2 ms_len fixed bin (24), /* length of message in bits */ 2 18 2 ms_id bit (72), /* unique ID of message */ 2 19 /* input in some cases */ 2 20 2 ms_access_class bit (72), /* message access class */ 2 21 2 sender_id char (32) unaligned,/* process-group ID of sender */ 2 22 2 sender_process_id bit (36) aligned, /* if nonzero, process that sent */ 2 23 2 sender_level fixed bin, /* validation level of sender */ 2 24 2 sender_authorization bit (72), /* access authorization of message sender */ 2 25 2 sender_max_authorization bit (72), /* max authorization of sending process */ 2 26 2 sender_audit bit (36) aligned; /* audit flags */ 2 27 2 28 declare MSEG_MESSAGE_INFO_V1 char (8) aligned init ("msegmi01") int static options (constant); 2 29 2 30 declare ( 2 31 MSEG_READ_FIRST init (1), 2 32 MSEG_READ_LAST init (2), 2 33 MSEG_READ_SPECIFIED init (3), 2 34 MSEG_READ_BEFORE_SPECIFIED init (4), 2 35 MSEG_READ_AFTER_SPECIFIED init (5)) 2 36 fixed bin int static options (constant); 2 37 2 38 declare (MSEG_READ_OWN init ("1"b), 2 39 MSEG_READ_DELETE init ("01"b) 2 40 ) bit (36) aligned internal static options (constant); 2 41 2 42 /* END INCLUDE FILE . . . mseg_message_info.incl.pl1 */ 179 180 /* BEGIN INCLUDE FILE ... mseg_wakeup_state.incl.pl1 */ 3 2 /* Created: April 1985 by G. Palter */ 3 3 3 4 /* format: style3,linecom */ 3 5 3 6 /* Description of the wakeup state of a message segment -- 3 7* 3 8* The wakeup state defines which process, if any, is willing to receive normal or urgent IPC wakeups when a message which 3 9* requests such a wakeup is added to a message segment. The process is allowed to separately accept or defer normal and 3 10* urgent wakeups. Note that deferring a wakeup is not the same as not accepting wakeups. A process is not allowed to 3 11* stop accepting wakeups once it has accepted them as to do so would introduce a relatively high badnwidth covert 3 12* channel. (In the present implementation, urgent wakeups are really no different from normal wakeups. Eventually, 3 13* urgent wakeups should be implemented using an IPS signal along with the IPC wakeup). 3 14* 3 15* mseg_$get_wakeup_state_seg requires that the caller supply the proper value for mseg_wakeup_state.version in the 3 16* mseg_operation. If there is no wakeup state recorded in the message segment, mseg_$get_wakeup_state_seg will return 3 17* the status code error_table_$messages_off. 3 18* 3 19* mseg_$set_wakeup_state_seg ignores the values of the access_class, process_id, and lock_id elements supplied by the 3 20* caller in the mseg_operation. mseg_$set_wakeup_state_seg will, instead, furnish the values of the process making the 3 21* call for these elements and will return these values to its caller. In other words, mseg_$set_wakeup_state_seg can not 3 22* be used by one process to accept/defer wakeups on behalf of another process. */ 3 23 3 24 declare 1 mseg_wakeup_state aligned based (mseg_wakeup_state_ptr), 3 25 2 version character (8) unaligned, 3 26 2 flags aligned, 3 27 3 accepting_normal_wakeups /* ON => process has accepted normal wakeups */ 3 28 bit (1) unaligned, /* OFF => process has deferred normal wakeups */ 3 29 3 accepting_urgent_wakeups /* ON => process has accepted urgent wakeups */ 3 30 bit (1) unaligned, /* OFF => process has deferred urgent wakeups */ 3 31 3 pad bit (34) unaligned, 3 32 2 pad bit (36) aligned, 3 33 2 event_channel fixed binary (71), /* IPC event channel on which to send normal/urgent wakeups */ 3 34 2 access_class bit (72) aligned, /* AIM access class of the process accepting wakeups */ 3 35 2 process_id bit (36) aligned, /* ID of the process accepting wakeups */ 3 36 2 lock_id bit (36) aligned; /* lock ID used to test if said process is still alive */ 3 37 3 38 declare mseg_wakeup_state_ptr 3 39 pointer; 3 40 3 41 declare MSEG_WAKEUP_STATE_VERSION_1 3 42 character (8) static options (constant) initial ("msegwkp1"); 3 43 3 44 /* END INCLUDE FILE ... mseg_wakeup_state.incl.pl1 */ 180 181 /* BEGIN INCLUDE FILE ... entry_access_info.incl.pl1 */ 4 2 4 3 /* 4 4* Written 03/22/85 by M. Pandolf 4 5* Modified 1985-04-19, BIM: added parent access class. 4 6**/ 4 7 4 8 dcl entry_access_info_ptr pointer; 4 9 dcl ENTRY_ACCESS_INFO_VERSION_1 char (8) internal static options (constant) 4 10 init ("eainf001"); 4 11 4 12 dcl 1 entry_access_info aligned based (entry_access_info_ptr), 4 13 2 version char (8), /* = ENTRY_ACCESS_INFO_VERSION_1 */ 4 14 2 type fixed bin, /* see status_structures.incl.pl1 */ 4 15 2 dir_name char (168) unaligned, /* parent of this entry */ 4 16 2 entryname char (32) unaligned, /* primary name of this entry */ 4 17 2 uid bit (36) aligned, 4 18 2 ring_brackets (3) fixed bin (3), /* for dirs, the dir ring brackets are here */ 4 19 2 extended_ring_brackets (3) fixed bin (3), /* not-yet-implemented x-rb's */ 4 20 2 effective_access_modes bit (36) aligned, /* for dirs, dir mode is here */ 4 21 2 extended_access_modes bit (36) aligned, /* always null for dirs */ 4 22 2 access_class bit (72) aligned, /* for multiclass, max access class */ 4 23 2 parent_access_class bit (72) aligned, /* for multiclass, this is effectively the min access class */ 4 24 2 multiclass bit (1) aligned; 4 25 4 26 /* END INCLUDE FILE ... entry_access_info.incl.pl1 */ 181 182 /* BEGIN include file mseg_hdr_v2.incl.pl1 */ 5 2 5 3 dcl mptr ptr, /* pointer to message segment */ 5 4 5 5 1 mseg_hdr_v2 aligned based (mptr), /* message segment header format */ 5 6 2 lock bit (36) aligned, /* standard file system lock */ 5 7 2 mseg_pattern bit (36) aligned, /* to identify message segments */ 5 8 2 pad (6) fixed bin, 5 9 2 first_ms_offset bit (18) aligned, /* offset to first logical message */ 5 10 2 last_ms_offset bit (18) aligned, /* offset to last logical message */ 5 11 2 alloc_len fixed bin, /* length of allocation bit string */ 5 12 2 space_left fixed bin, /* number of empty blocks */ 5 13 2 number_of_messages fixed bin, /* number of messages in segment */ 5 14 2 block_size fixed bin, /* message block size */ 5 15 2 switches, 5 16 3 aip bit (1) unaligned, /* ON if allocation is in progress */ 5 17 3 os bit (1) unaligned, /* ON if message segment was salvaged */ 5 18 3 ms_in_hdr bit (1) unaligned, /* ON if there is a message in the header */ 5 19 3 pad2 bit (30) unaligned, 5 20 2 version_number fixed bin, 5 21 2 hdr_ms_len fixed bin, /* length of header message, if any */ 5 22 2 hdr_ms, /* space for header message */ 5 23 3 filler (126) fixed bin, 5 24 3 hdr_ms_end fixed bin, 5 25 2 alloc_bits bit (alloc_len) aligned; /* allocation bit string */ 5 26 5 27 /* END include file mseg_hdr_v2.incl.pl1 */ 182 183 /* format: on */ 184 185 end mseg_upgrade_from_v2_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/06/85 1619.0 mseg_upgrade_from_v2_.pl1 >spec>on>mseg>mseg_upgrade_from_v2_.pl1 178 1 05/06/85 1121.9 mseg_operation.incl.pl1 >spec>on>mseg>mseg_operation.incl.pl1 179 2 01/10/85 2002.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 180 3 05/06/85 1122.0 mseg_wakeup_state.incl.pl1 >spec>on>mseg>mseg_wakeup_state.incl.pl1 181 4 05/06/85 1121.6 entry_access_info.incl.pl1 >spec>on>mseg>entry_access_info.incl.pl1 182 5 05/06/85 1121.8 mseg_hdr_v2.incl.pl1 >spec>on>mseg>mseg_hdr_v2.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. MSEG_READ_AFTER_SPECIFIED constant fixed bin(17,0) initial dcl 2-30 ref 153 MSEG_READ_BEFORE_SPECIFIED constant fixed bin(17,0) initial dcl 2-30 ref 148 MSEG_READ_FIRST constant fixed bin(17,0) initial dcl 2-30 ref 131 MSEG_READ_LAST constant fixed bin(17,0) initial dcl 2-30 ref 135 MSEG_READ_SPECIFIED constant fixed bin(17,0) initial dcl 2-30 ref 143 MSEG_WAKEUP_STATE_VERSION_1 000000 constant char(8) initial unaligned dcl 3-41 ref 105 P_callers_area_ptr parameter pointer dcl 26 ref 120 124 P_code parameter fixed bin(35,0) dcl 27 set ref 120 173* P_mseg_operation_ptr parameter pointer dcl 21 ref 79 82 95 98 120 123 P_salvage_completed parameter bit(1) dcl 24 set ref 79 88* access_class 213 based bit(72) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" ref 108 164 168 169 access_class 260 based bit(72) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" set ref 108* access_info 115 based structure level 2 dcl 1-24 addr builtin function dcl 74 ref 129 bit builtin function dcl 74 ref 163 163 callers_area_ptr 000100 automatic pointer dcl 32 set ref 124* 131* 135* 143* 148* 153* code 000102 automatic fixed bin(35,0) dcl 34 set ref 86* 88 125* 131* 135* 143* 148* 153* 159 173 entry_access_info based structure level 1 dcl 4-12 error_table_$bad_subr_arg 000010 external static fixed bin(35,0) dcl 62 ref 125 event_channel 2 000104 automatic fixed bin(71,0) level 3 in structure "v2_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v2_" set ref 107 event_channel 256 based fixed bin(71,0) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" set ref 107* fixed builtin function dcl 74 ref 140 141 flags 254 based structure level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" set ref 106* flags 24 based structure level 2 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" hdr_ms 21 based structure level 2 dcl 5-3 ref 104 lock_id 263 based bit(36) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" set ref 110* lock_id 1 000104 automatic bit(36) level 3 in structure "v2_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v2_" set ref 110 message_code 2 based fixed bin(17,0) level 2 dcl 2-9 ref 131 135 143 148 153 message_info 220 based structure level 2 dcl 1-24 set ref 129 ms_access_class 11 based bit(72) level 2 dcl 2-9 set ref 164* ms_id 7 based bit(72) level 2 dcl 2-9 set ref 140 141 163* ms_in_hdr 16(02) based bit(1) level 3 packed unaligned dcl 5-3 ref 102 ms_len 6 based fixed bin(24,0) level 2 dcl 2-9 set ref 162* ms_ptr 4 based pointer level 2 dcl 2-9 set ref 161* ms_salvager_v2_ 000012 constant entry external dcl 65 ref 86 mseg_hdr_v2 based structure level 1 dcl 5-3 mseg_message_info based structure level 1 dcl 2-9 mseg_message_info_ptr 000230 automatic pointer dcl 2-7 set ref 129* 131 135 140 141 143 148 153 161 162 163 164 165 166 167 168 169 170 mseg_operation based structure level 1 dcl 1-24 mseg_operation_ptr 000226 automatic pointer dcl 1-19 set ref 82* 84 84 86 98* 100 100 102 104 105 106 107 108 108 109 110 111 114 123* 127 127 129 131 135 143 148 153 164 168 169 mseg_ptr 110 based pointer level 2 dcl 1-24 set ref 84* 84 86* 100* 100 102 104 127* 127 131* 135* 143* 148* 153* mseg_util_v2_$incremental_read 000014 constant entry external dcl 66 ref 143 148 153 mseg_util_v2_$read 000016 constant entry external dcl 70 ref 131 135 mseg_wakeup_state based structure level 1 dcl 3-24 msg_len 000223 automatic fixed bin(18,0) dcl 58 set ref 131* 135* 143* 148* 153* 162 msg_location 000222 automatic fixed bin(18,0) dcl 58 set ref 131* 135* 143* 148* 153* 163 msg_ptr 000204 automatic pointer dcl 54 set ref 131* 135* 143* 148* 153* 161 msg_sender_id 000206 automatic char(32) dcl 55 set ref 131* 135* 143* 148* 153* 165 msg_sender_level 000225 automatic fixed bin(17,0) dcl 60 set ref 131* 135* 143* 148* 153* 167 msg_time 000216 automatic fixed bin(54,0) dcl 56 set ref 131* 135* 143* 148* 153* 163 old_msg_location 000224 automatic fixed bin(18,0) dcl 58 set ref 140* 143* 148* 153* old_msg_time 000220 automatic fixed bin(54,0) dcl 56 set ref 141* 143* 148* 153* process_id 4 000104 automatic bit(36) level 3 in structure "v2_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v2_" set ref 109 process_id 262 based bit(36) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v2_" set ref 109* sender_audit 31 based bit(36) level 2 dcl 2-9 set ref 170* sender_authorization 25 based bit(72) level 2 dcl 2-9 set ref 168* sender_id 13 based char(32) level 2 packed unaligned dcl 2-9 set ref 165* sender_level 24 based fixed bin(17,0) level 2 dcl 2-9 set ref 167* sender_max_authorization 27 based bit(72) level 2 dcl 2-9 set ref 169* sender_process_id 23 based bit(36) level 2 dcl 2-9 set ref 166* state 000104 automatic structure level 2 dcl 41 string builtin function dcl 74 set ref 106* 106 substr builtin function dcl 74 ref 140 141 switches 000104 automatic structure level 3 in structure "v2_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v2_" set ref 106 switches 16 based structure level 2 in structure "mseg_hdr_v2" dcl 5-3 in procedure "mseg_upgrade_from_v2_" unspec builtin function dcl 74 set ref 104* 104 v2_wakeup_state 000104 automatic structure level 1 dcl 41 set ref 104* version 252 based char(8) level 3 packed unaligned dcl 1-24 set ref 105* wakeup_state 252 based structure level 2 dcl 1-24 wakeup_state_valid 24(06) based bit(1) level 3 packed unaligned dcl 1-24 set ref 111* 114* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ENTRY_ACCESS_INFO_VERSION_1 internal static char(8) initial unaligned dcl 4-9 MSEG_MESSAGE_INFO_V1 internal static char(8) initial dcl 2-28 MSEG_OPERATION_VERSION_1 internal static fixed bin(17,0) initial dcl 1-20 MSEG_READ_DELETE internal static bit(36) initial dcl 2-38 MSEG_READ_OWN internal static bit(36) initial dcl 2-38 MSEG_TYPE_MBX internal static fixed bin(17,0) initial dcl 1-21 MSEG_TYPE_MS internal static fixed bin(17,0) initial dcl 1-22 entry_access_info_ptr automatic pointer dcl 4-8 mptr automatic pointer dcl 5-3 mseg_wakeup_state_ptr automatic pointer dcl 3-38 NAMES DECLARED BY EXPLICIT CONTEXT. mseg_upgrade_from_v2_ 000006 constant entry external dcl 13 mseg_upgrade_from_v2_$get_wakeup_state 000057 constant entry external dcl 95 mseg_upgrade_from_v2_$read_message 000131 constant entry external dcl 120 mseg_upgrade_from_v2_$salvage 000020 constant entry external dcl 79 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 676 716 514 706 Length 1210 514 20 255 162 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mseg_upgrade_from_v2_ 216 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mseg_upgrade_from_v2_ 000100 callers_area_ptr mseg_upgrade_from_v2_ 000102 code mseg_upgrade_from_v2_ 000104 v2_wakeup_state mseg_upgrade_from_v2_ 000204 msg_ptr mseg_upgrade_from_v2_ 000206 msg_sender_id mseg_upgrade_from_v2_ 000216 msg_time mseg_upgrade_from_v2_ 000220 old_msg_time mseg_upgrade_from_v2_ 000222 msg_location mseg_upgrade_from_v2_ 000223 msg_len mseg_upgrade_from_v2_ 000224 old_msg_location mseg_upgrade_from_v2_ 000225 msg_sender_level mseg_upgrade_from_v2_ 000226 mseg_operation_ptr mseg_upgrade_from_v2_ 000230 mseg_message_info_ptr mseg_upgrade_from_v2_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ms_salvager_v2_ mseg_util_v2_$incremental_read mseg_util_v2_$read THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_subr_arg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000005 16 000013 79 000014 82 000025 84 000031 86 000033 88 000047 90 000053 95 000054 98 000064 100 000070 102 000072 104 000075 105 000100 106 000103 107 000105 108 000107 109 000113 110 000115 111 000117 112 000121 114 000122 116 000124 120 000125 123 000136 124 000142 125 000145 127 000150 129 000152 131 000154 135 000215 140 000255 141 000260 143 000264 148 000331 153 000375 159 000440 161 000442 162 000445 163 000447 164 000463 165 000470 166 000473 167 000474 168 000476 169 000502 170 000506 173 000507 175 000512 ----------------------------------------------------------- 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