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