COMPILATION LISTING OF SEGMENT mseg_upgrade_from_v3_ 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.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* Support for upgrading version 3 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_v3_: 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 v3_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 1 local_mra aligned like mseg_return_args; 55 56 dcl error_table_$bad_subr_arg 57 fixed binary (35) external; 58 59 dcl ms_salvager_v3_ entry (pointer, fixed binary (35)); 60 dcl mseg_util_v3_$incremental_read 61 entry (pointer, pointer, bit (2) aligned, bit (72) aligned, pointer, bit (1) aligned, 62 fixed binary (35)); 63 dcl mseg_util_v3_$read entry (pointer, pointer, bit (1) aligned, pointer, bit (1) aligned, fixed binary (35)); 64 65 dcl (addr, string, unspec) 66 builtin; 67 68 /* Salvage the version 3 message segment */ 69 70 mseg_upgrade_from_v3_$salvage: 71 entry (P_mseg_operation_ptr, P_salvage_completed); 72 73 mseg_operation_ptr = P_mseg_operation_ptr; 74 75 mseg_ptr = mseg_operation.mseg_ptr; 76 77 call ms_salvager_v3_ (mseg_ptr, code); /* it will report problems via admin_gate_ */ 78 79 P_salvage_completed = (code = 0); 80 81 return; 82 83 /* Get the wakeup acceptance state of a version 3 message segment -- In version 3 segments, the wakeup state is stored in 84* the header "message". We will convert said "message" into the appropriate wakeup_state structure. */ 85 86 mseg_upgrade_from_v3_$get_wakeup_state: 87 entry (P_mseg_operation_ptr); 88 89 mseg_operation_ptr = P_mseg_operation_ptr; 90 91 mseg_ptr = mseg_operation.mseg_ptr; 92 93 if mseg_ptr -> mseg_hdr.ms_in_hdr 94 then do; 95 unspec (v3_wakeup_state) = unspec (mseg_ptr -> mseg_hdr.hdr_ms); 96 mseg_operation.wakeup_state.version = MSEG_WAKEUP_STATE_VERSION_1; 97 string (mseg_operation.wakeup_state.flags) = string (v3_wakeup_state.switches); 98 mseg_operation.wakeup_state.event_channel = v3_wakeup_state.event_channel; 99 mseg_operation.wakeup_state.access_class = mseg_ptr -> mseg_hdr.hdr_ms_access_class; 100 mseg_operation.wakeup_state.process_id = v3_wakeup_state.process_id; 101 mseg_operation.wakeup_state.lock_id = v3_wakeup_state.lock_id; 102 mseg_operation.wakeup_state_valid = "1"b; 103 end; 104 105 else mseg_operation.wakeup_state_valid = "0"b; 106 107 return; 108 109 /* Read the requested message from a version 3 message segment */ 110 111 mseg_upgrade_from_v3_$read_message: 112 entry (P_mseg_operation_ptr, P_callers_area_ptr, P_code); 113 114 mseg_operation_ptr = P_mseg_operation_ptr; 115 callers_area_ptr = P_callers_area_ptr; 116 code = error_table_$bad_subr_arg; /* in case our caller's mseg_message_info is invalid */ 117 118 mseg_ptr = mseg_operation.mseg_ptr; 119 120 mseg_message_info_ptr = addr (mseg_operation.message_info); 121 122 if mseg_message_info.message_code = MSEG_READ_FIRST 123 then call mseg_util_v3_$read (mseg_ptr, callers_area_ptr, "0"b, addr (local_mra), "0"b, code); 124 125 else if mseg_message_info.message_code = MSEG_READ_LAST 126 then call mseg_util_v3_$read (mseg_ptr, callers_area_ptr, "1"b, addr (local_mra), "0"b, code); 127 128 else if mseg_message_info.message_code = MSEG_READ_SPECIFIED 129 then call mseg_util_v3_$incremental_read (mseg_ptr, callers_area_ptr, "00"b, mseg_message_info.ms_id, 130 addr (local_mra), "0"b, code); 131 132 else if mseg_message_info.message_code = MSEG_READ_BEFORE_SPECIFIED 133 then call mseg_util_v3_$incremental_read (mseg_ptr, callers_area_ptr, "10"b, mseg_message_info.ms_id, 134 addr (local_mra), "0"b, code); 135 136 else if mseg_message_info.message_code = MSEG_READ_AFTER_SPECIFIED 137 then call mseg_util_v3_$incremental_read (mseg_ptr, callers_area_ptr, "01"b, mseg_message_info.ms_id, 138 addr (local_mra), "0"b, code); 139 140 if code = 0 141 then do; /*** Read succeeded -- Fill in the mseg_message_info appropriately */ 142 mseg_message_info.ms_ptr = local_mra.ms_ptr; 143 mseg_message_info.ms_len = local_mra.ms_len; 144 mseg_message_info.ms_id = local_mra.ms_id; 145 mseg_message_info.ms_access_class = local_mra.access_class; 146 mseg_message_info.sender_id = local_mra.sender_id; 147 mseg_message_info.sender_process_id = ""b; 148 mseg_message_info.sender_level = local_mra.level; 149 mseg_message_info.sender_authorization = local_mra.sender_authorization; 150 mseg_message_info.sender_max_authorization = local_mra.sender_authorization; 151 mseg_message_info.sender_audit = ""b; 152 end; 153 154 P_code = code; 155 156 return; 157 158 /* format: off */ 159 /* 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 */ 159 160 /* 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 */ 160 161 /* 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 */ 161 162 /* 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 */ 162 163 /* BEGIN include file mseg_hdr_v3.incl.pl1 */ 5 2 5 3 dcl mptr ptr, /* pointer to message segment */ 5 4 5 5 1 mseg_hdr 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 hdr_ms_access_class bit (72) aligned, /* access class of header message */ 5 9 2 pad (4) fixed bin, 5 10 2 first_ms_offset bit (18) aligned, /* offset to first logical message */ 5 11 2 last_ms_offset bit (18) aligned, /* offset to last logical message */ 5 12 2 alloc_len fixed bin, /* length of allocation bit string */ 5 13 2 space_left fixed bin, /* number of empty blocks */ 5 14 2 number_of_messages fixed bin, /* number of messages in segment */ 5 15 2 block_size fixed bin, /* message block size */ 5 16 2 switches, 5 17 3 mip bit (1) unaligned, /* ON if modification is in progress */ 5 18 3 os bit (1) unaligned, /* ON if message segment was salvaged */ 5 19 3 ms_in_hdr bit (1) unaligned, /* ON if there is a message in the header */ 5 20 3 sip bit (1) unaligned, /* ON if salvage is in progress */ 5 21 3 pad2 bit (32) unaligned, 5 22 2 version_number fixed bin, 5 23 2 hdr_ms bit (64 * 36) aligned, /* space for header message */ 5 24 2 hash_table aligned, /* message ID hash table */ 5 25 3 last_in_bucket (0:511) bit (18) unaligned, /* offset of last message in this hash table bucket */ 5 26 2 alloc_bits bit (alloc_len) aligned; /* allocation bit string */ 5 27 5 28 dcl (version_number fixed bin init (3), /* message segment version number */ 5 29 header_pattern bit (36) aligned init ((18) "01"b)) /* header identification pattern */ 5 30 internal static; 5 31 5 32 /* END include file mseg_hdr_v3.incl.pl1 */ 163 164 /* BEGIN INCLUDE FILE . . . mseg_return_args_v3.incl.pl1 */ 6 2 6 3 6 4 /* structure returned when message is read from a message segment */ 6 5 6 6 6 7 dcl ms_arg_ptr ptr; 6 8 6 9 dcl 1 mseg_return_args based (ms_arg_ptr) aligned, 6 10 2 ms_ptr ptr, /* pointer to message */ 6 11 2 ms_len fixed bin (18), /* length of message in bits */ 6 12 2 sender_id char (32), /* process-group ID of sender */ 6 13 2 level fixed bin, /* validation level of sender */ 6 14 2 ms_id bit (72), /* unique ID of message */ 6 15 2 sender_authorization bit (72), /* access authorization of message sender */ 6 16 2 access_class bit (72); /* message access class */ 6 17 6 18 6 19 /* END INCLUDE FILE . . . mseg_return_args_v3.incl.pl1 */ 164 165 /* format: on */ 166 167 end mseg_upgrade_from_v3_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/06/85 1619.0 mseg_upgrade_from_v3_.pl1 >spec>on>mseg>mseg_upgrade_from_v3_.pl1 159 1 05/06/85 1121.9 mseg_operation.incl.pl1 >spec>on>mseg>mseg_operation.incl.pl1 160 2 01/10/85 2002.8 mseg_message_info.incl.pl1 >ldd>include>mseg_message_info.incl.pl1 161 3 05/06/85 1122.0 mseg_wakeup_state.incl.pl1 >spec>on>mseg>mseg_wakeup_state.incl.pl1 162 4 05/06/85 1121.6 entry_access_info.incl.pl1 >spec>on>mseg>entry_access_info.incl.pl1 163 5 05/06/85 1121.9 mseg_hdr_v3.incl.pl1 >spec>on>mseg>mseg_hdr_v3.incl.pl1 164 6 05/06/85 1122.0 mseg_return_args_v3.incl.pl1 >spec>on>mseg>mseg_return_args_v3.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 136 MSEG_READ_BEFORE_SPECIFIED constant fixed bin(17,0) initial dcl 2-30 ref 132 MSEG_READ_FIRST constant fixed bin(17,0) initial dcl 2-30 ref 122 MSEG_READ_LAST constant fixed bin(17,0) initial dcl 2-30 ref 125 MSEG_READ_SPECIFIED constant fixed bin(17,0) initial dcl 2-30 ref 128 MSEG_WAKEUP_STATE_VERSION_1 000000 constant char(8) initial unaligned dcl 3-41 ref 96 P_callers_area_ptr parameter pointer dcl 26 ref 111 115 P_code parameter fixed bin(35,0) dcl 27 set ref 111 154* P_mseg_operation_ptr parameter pointer dcl 21 ref 70 73 86 89 111 114 P_salvage_completed parameter bit(1) dcl 24 set ref 70 79* access_class 260 based bit(72) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" set ref 99* access_class 20 000204 automatic bit(72) level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 145 addr builtin function dcl 65 ref 120 122 122 125 125 128 128 132 132 136 136 callers_area_ptr 000100 automatic pointer dcl 32 set ref 115* 122* 125* 128* 132* 136* code 000102 automatic fixed bin(35,0) dcl 34 set ref 77* 79 116* 122* 125* 128* 132* 136* 140 154 entry_access_info based structure level 1 dcl 4-12 error_table_$bad_subr_arg 000010 external static fixed bin(35,0) dcl 56 ref 116 event_channel 2 000104 automatic fixed bin(71,0) level 3 in structure "v3_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v3_" set ref 98 event_channel 256 based fixed bin(71,0) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" set ref 98* flags 24 based structure level 2 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" flags 254 based structure level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" set ref 97* hdr_ms 20 based bit(2304) level 2 dcl 5-3 ref 95 hdr_ms_access_class 2 based bit(72) level 2 dcl 5-3 ref 99 level 13 000204 automatic fixed bin(17,0) level 2 dcl 54 set ref 148 local_mra 000204 automatic structure level 1 dcl 54 set ref 122 122 125 125 128 128 132 132 136 136 lock_id 1 000104 automatic bit(36) level 3 in structure "v3_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v3_" set ref 101 lock_id 263 based bit(36) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" set ref 101* message_code 2 based fixed bin(17,0) level 2 dcl 2-9 ref 122 125 128 132 136 message_info 220 based structure level 2 dcl 1-24 set ref 120 ms_access_class 11 based bit(72) level 2 dcl 2-9 set ref 145* ms_id 7 based bit(72) level 2 in structure "mseg_message_info" dcl 2-9 in procedure "mseg_upgrade_from_v3_" set ref 128* 132* 136* 144* ms_id 14 000204 automatic bit(72) level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 144 ms_in_hdr 16(02) based bit(1) level 3 packed unaligned dcl 5-3 ref 93 ms_len 2 000204 automatic fixed bin(18,0) level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 143 ms_len 6 based fixed bin(24,0) level 2 in structure "mseg_message_info" dcl 2-9 in procedure "mseg_upgrade_from_v3_" set ref 143* ms_ptr 000204 automatic pointer level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 142 ms_ptr 4 based pointer level 2 in structure "mseg_message_info" dcl 2-9 in procedure "mseg_upgrade_from_v3_" set ref 142* ms_salvager_v3_ 000012 constant entry external dcl 59 ref 77 mseg_hdr 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 120* 122 125 128 128 132 132 136 136 142 143 144 145 146 147 148 149 150 151 mseg_operation based structure level 1 dcl 1-24 mseg_operation_ptr 000226 automatic pointer dcl 1-19 set ref 73* 75 75 77 89* 91 91 93 95 96 97 98 99 99 100 101 102 105 114* 118 118 120 122 125 128 132 136 mseg_ptr 110 based pointer level 2 dcl 1-24 set ref 75* 75 77* 91* 91 93 95 99 118* 118 122* 125* 128* 132* 136* mseg_return_args based structure level 1 dcl 6-9 mseg_util_v3_$incremental_read 000014 constant entry external dcl 60 ref 128 132 136 mseg_util_v3_$read 000016 constant entry external dcl 63 ref 122 125 mseg_wakeup_state based structure level 1 dcl 3-24 process_id 262 based bit(36) level 3 in structure "mseg_operation" dcl 1-24 in procedure "mseg_upgrade_from_v3_" set ref 100* process_id 4 000104 automatic bit(36) level 3 in structure "v3_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v3_" set ref 100 sender_audit 31 based bit(36) level 2 dcl 2-9 set ref 151* sender_authorization 25 based bit(72) level 2 in structure "mseg_message_info" dcl 2-9 in procedure "mseg_upgrade_from_v3_" set ref 149* sender_authorization 16 000204 automatic bit(72) level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 149 150 sender_id 13 based char(32) level 2 in structure "mseg_message_info" packed unaligned dcl 2-9 in procedure "mseg_upgrade_from_v3_" set ref 146* sender_id 3 000204 automatic char(32) level 2 in structure "local_mra" dcl 54 in procedure "mseg_upgrade_from_v3_" set ref 146 sender_level 24 based fixed bin(17,0) level 2 dcl 2-9 set ref 148* sender_max_authorization 27 based bit(72) level 2 dcl 2-9 set ref 150* sender_process_id 23 based bit(36) level 2 dcl 2-9 set ref 147* state 000104 automatic structure level 2 dcl 41 string builtin function dcl 65 set ref 97* 97 switches 000104 automatic structure level 3 in structure "v3_wakeup_state" dcl 41 in procedure "mseg_upgrade_from_v3_" set ref 97 switches 16 based structure level 2 in structure "mseg_hdr" dcl 5-3 in procedure "mseg_upgrade_from_v3_" unspec builtin function dcl 65 set ref 95* 95 v3_wakeup_state 000104 automatic structure level 1 dcl 41 set ref 95* version 252 based char(8) level 3 packed unaligned dcl 1-24 set ref 96* 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 102* 105* 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 header_pattern internal static bit(36) initial dcl 5-28 mptr automatic pointer dcl 5-3 ms_arg_ptr automatic pointer dcl 6-7 mseg_wakeup_state_ptr automatic pointer dcl 3-38 version_number internal static fixed bin(17,0) initial dcl 5-28 NAMES DECLARED BY EXPLICIT CONTEXT. mseg_upgrade_from_v3_ 000006 constant entry external dcl 13 mseg_upgrade_from_v3_$get_wakeup_state 000054 constant entry external dcl 86 mseg_upgrade_from_v3_$read_message 000126 constant entry external dcl 111 mseg_upgrade_from_v3_$salvage 000020 constant entry external dcl 70 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 574 614 412 604 Length 1124 412 20 274 162 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mseg_upgrade_from_v3_ 194 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mseg_upgrade_from_v3_ 000100 callers_area_ptr mseg_upgrade_from_v3_ 000102 code mseg_upgrade_from_v3_ 000104 v3_wakeup_state mseg_upgrade_from_v3_ 000204 local_mra mseg_upgrade_from_v3_ 000226 mseg_operation_ptr mseg_upgrade_from_v3_ 000230 mseg_message_info_ptr mseg_upgrade_from_v3_ 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_v3_ mseg_util_v3_$incremental_read mseg_util_v3_$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 70 000014 73 000025 75 000031 77 000033 79 000044 81 000050 86 000051 89 000061 91 000065 93 000067 95 000072 96 000075 97 000100 98 000102 99 000104 100 000110 101 000112 102 000114 103 000116 105 000117 107 000121 111 000122 114 000133 115 000137 116 000142 118 000145 120 000147 122 000151 125 000202 128 000233 132 000266 136 000321 140 000353 142 000355 143 000360 144 000362 145 000365 146 000370 147 000373 148 000374 149 000376 150 000401 151 000404 154 000405 156 000410 ----------------------------------------------------------- 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