COMPILATION LISTING OF SEGMENT !BBBJWhLNGKCBnx Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1649.2 mst Tue Options: table map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* format: style3,idind30,linecom */ 8 9 mseg_access_operations_: 10 procedure (); 11 12 /**** 13* this data segment defines a named constant for each message segment 14* operation that can be called from the outer rings. constants are 15* used to identify the operation and define the type of access required 16* for each operation. 17* 18* written January 1985 by M. Pandolf 19* modified March 1985 by M. Pandolf to eliminate check_name and add audit_this_operation 20* to leave caller validation intact when getting UID 21* modified April 1985 by M. Pandolf to eliminate restore_caller_validation 22* Modified 1985-04-16, BIM: group ms/mbx parallel operations. 23* audit get_count. 24**/ 25 26 /**** NOTE: If you modify any of the access_operations_ referenced by this 27* program, you must recompile this program with the new version of 28* access_operations_ to actually make the changes take effect. */ 29 30 /**** This segment would work better if it wrote its own program 31* which called cds, and compiled and executed it. However, 32* there is no time. So the structure below must match the 33* suboutine calls below it. */ 34 35 /**** Note that we assume that some gate entries will have to make 36* two calls to mseg_check_access_ to audit both sides of an 37* hybrid operation. That's life in MR11 */ 38 39 declare 1 mops aligned, 40 2 data aligned, 41 3 (d_create_seg, d_delete_seg, d_acl_modify_seg, d_acl_list_seg, d_open_seg, d_close_seg, d_compact_seg, 42 d_get_count_seg, d_read_message, d_read_own_message, d_read_delete_message, d_delete_message, 43 d_update_message, d_add_message, d_accept_wakeups_seg, d_send_normal_wakeup, d_send_urgent_wakeup, 44 d_read_attr_seg, d_modify_attr_seg, d_read_fs_attr_seg, d_modify_fs_attr_seg, d_copy_seg, 45 d_admin_add_message, d_read_delete_own_message, d_reset_salvage_bit_seg) 46 aligned like mseg_access_operation, 47 2 ( 48 create_seg init (1), 49 delete_seg init (2), 50 acl_modify_seg init (3), 51 acl_list_seg init (4), 52 open_seg init (5), 53 close_seg init (6), 54 compact_seg init (7), 55 get_count_seg init (8), 56 read_message init (9), 57 read_own_message init (10), 58 read_delete_message init (11), 59 delete_message init (12), 60 update_message init (13), 61 add_message init (14), 62 accept_wakeups_seg init (15), 63 send_normal_wakeup init (16), 64 send_urgent_wakeup init (17), 65 read_attr_seg init (18), 66 modify_attr_seg init (19), 67 read_fs_attr_seg init (20), 68 modify_fs_attr_seg init (21), 69 copy_seg init (22), 70 admin_add_message init (23), 71 read_delete_own_message init (24), 72 reset_salvage_bit_seg init (25) 73 ) fixed bin; 74 1 1 /* Begin include file mseg_access_operation.incl.pl1 BIM 1098-04-18 */ 1 2 /* format: style3,idind30 */ 1 3 1 4 declare mseg_access_operation_ptr pointer; 1 5 declare 1 mseg_access_operation aligned based (mseg_access_operation_ptr), 1 6 2 access_operation bit (36) aligned, 1 7 2 required_modes bit (36) aligned, /* ""b if no modes required */ 1 8 2 flags unaligned, 1 9 3 dont_audit bit (1) unaligned, 1 10 3 dont_audit_success bit (1) unaligned, 1 11 3 non_null_modes bit (1) unaligned, 1 12 3 no_modes bit (1) unaligned, 1 13 3 o_for_r bit (1) unaligned, /* if no r, o will do */ 1 14 3 o_for_d bit (1) unaligned, /* if no d, o will do */ 1 15 3 admin bit (1) unaligned, 1 16 3 dir_modes bit (1) unaligned, /* dir mode is needed */ 1 17 3 dir_modes_or_ex_modes bit (1) unaligned, /* if not ex-mode, dir mode */ 1 18 3 pad bit (9) unaligned, 1 19 2 required_dir_modes bit (3) unaligned, 1 20 2 pad1 bit (6) unaligned, 1 21 2 mseg_access_op_index fixed bin (9) uns unaligned, 1 22 2 pad2 bit (36) aligned; 1 23 1 24 declare ( 1 25 MSEG_READ_SEG_ATTR init (1), /* any attribute */ 1 26 MSEG_MODIFY_SEG_ATTR init (2), /* any attribute, access or no */ 1 27 MSEG_COPY_SEG init (3), /* reference a segment for copying */ 1 28 MSEG_CREATE_SEG init (4), /* check on candidate parent dir */ 1 29 MSEG_ADD_MESSAGE init (5), /* append */ 1 30 MSEG_MODIFY_MESSAGE init (6), /* update/delete */ 1 31 MSEG_ACCEPT_WAKEUPS init (7), /* what the sign says */ 1 32 MSEG_READ_MESSAGE init (8) /* ditto */ 1 33 ) fixed bin (9) int static options (constant); 1 34 1 35 dcl 1 mseg_access_operations_$data 1 36 (25) external static aligned like mseg_access_operation; 1 37 1 38 /* End include file mseg_access_operation.incl.pl1 */ 75 76 77 declare ( 78 DONT_AUDIT init ("1"b), 79 DONT_AUDIT_SUCCESS init ("01"b), 80 NON_NULL_MODES init ("001"b), 81 NO_MODES init ("0001"b), 82 O_FOR_R init ("00001"b), 83 O_FOR_D init ("000001"b), 84 ADMIN init ("0000001"b), 85 DIR_MODES init ("00000001"b), 86 DIR_MODES_OR_EX_MODES init ("000000001"b) 87 ) bit (36) aligned int static options (constant); 88 89 90 op: 91 procedure (op_ptr, a_op, flags, modes, index, dir_modes); 92 93 declare op_ptr pointer; 94 declare a_op bit (36) aligned; 95 declare modes bit (36) aligned; 96 declare flags bit (36) aligned; 97 declare index fixed bin (9); 98 declare dir_modes bit (3); 99 100 declare 1 maop aligned like mseg_access_operation based (op_ptr); 101 102 unspec (maop) = ""b; 103 maop.access_operation = a_op; 104 maop.required_modes = modes; 105 string (maop.flags) = flags; 106 maop.mseg_access_op_index = index; 107 maop.required_dir_modes = dir_modes; 108 return; 109 end op; 110 111 call op (addr (mops.d_create_seg), access_operations_$mseg_create, NO_MODES | DIR_MODES, ""b, MSEG_CREATE_SEG, 112 M_ACCESS | A_ACCESS); 113 call op (addr (mops.d_delete_seg), access_operations_$mseg_delete, NO_MODES | DIR_MODES, ""b, 114 MSEG_MODIFY_SEG_ATTR, M_ACCESS); 115 call op (addr (mops.d_acl_modify_seg), access_operations_$mseg_access_mod, NO_MODES | DIR_MODES, ""b, 116 MSEG_MODIFY_SEG_ATTR, M_ACCESS); 117 call op (addr (mops.d_acl_list_seg), access_operations_$mseg_access_read, NO_MODES | DIR_MODES, ""b, 118 MSEG_READ_SEG_ATTR, S_ACCESS); 119 call op (addr (mops.d_open_seg), access_operations_$mseg_open, NON_NULL_MODES, ""b, MSEG_READ_SEG_ATTR, ""b); 120 call op (addr (mops.d_close_seg), access_operations_$mseg_close, NO_MODES, ""b, 0, ""b); 121 call op (addr (mops.d_compact_seg), access_operations_$mseg_compact, ""b, MSEG_D_ACCESS, MSEG_MODIFY_SEG_ATTR, 122 ""b); 123 call op (addr (mops.d_get_count_seg), access_operations_$mseg_get_count, ""b, MSEG_S_ACCESS, MSEG_READ_SEG_ATTR, 124 ""b); 125 call op (addr (mops.d_read_message), access_operations_$mseg_read_message, DONT_AUDIT_SUCCESS, MSEG_R_ACCESS, 126 MSEG_READ_MESSAGE, ""b); 127 call op (addr (mops.d_read_own_message), access_operations_$mseg_read_message, O_FOR_R | DONT_AUDIT_SUCCESS, 128 MSEG_R_ACCESS, MSEG_READ_MESSAGE, ""b); 129 call op (addr (mops.d_read_delete_message), access_operations_$mseg_read_delete_message, DONT_AUDIT_SUCCESS, 130 MSEG_R_ACCESS | MSEG_D_ACCESS, MSEG_MODIFY_MESSAGE, ""b); 131 call op (addr (mops.d_delete_message), access_operations_$mseg_delete_message, DONT_AUDIT_SUCCESS | O_FOR_D, 132 MSEG_D_ACCESS, MSEG_MODIFY_MESSAGE, ""b); 133 call op (addr (mops.d_update_message), access_operations_$mseg_update_message, DONT_AUDIT_SUCCESS, 134 MSEG_D_ACCESS, MSEG_MODIFY_MESSAGE, ""b); 135 call op (addr (mops.d_add_message), access_operations_$mseg_add_message, ""b, MSEG_A_ACCESS, MSEG_ADD_MESSAGE, 136 ""b); 137 call op (addr (mops.d_admin_add_message), access_operations_$mseg_add_message, ADMIN, MSEG_A_ACCESS, 138 MSEG_ADD_MESSAGE, ""b); 139 call op (addr (mops.d_accept_wakeups_seg), access_operations_$mseg_accept_wakeups, ""b, MSEG_D_ACCESS, 140 MSEG_ACCEPT_WAKEUPS, ""b); 141 call op (addr (mops.d_send_normal_wakeup), access_operations_$mseg_wakeup_send, ""b, MSEG_W_ACCESS, 0, ""b); 142 call op (addr (mops.d_send_urgent_wakeup), access_operations_$mseg_wakeup_send, ""b, MSEG_U_ACCESS, 0, ""b); 143 call op (addr (mops.d_read_attr_seg), access_operations_$mseg_attr_read, ""b, MSEG_S_ACCESS, MSEG_READ_SEG_ATTR, 144 ""b); 145 call op (addr (mops.d_modify_attr_seg), access_operations_$mseg_attr_mod, ""b, MSEG_D_ACCESS, 146 MSEG_MODIFY_SEG_ATTR, ""b); 147 call op (addr (mops.d_read_fs_attr_seg), access_operations_$mseg_attr_read, 148 NON_NULL_MODES | DIR_MODES_OR_EX_MODES, ""b, MSEG_READ_SEG_ATTR, S_ACCESS); 149 call op (addr (mops.d_modify_fs_attr_seg), access_operations_$mseg_attr_mod, NO_MODES | DIR_MODES, ""b, 150 MSEG_MODIFY_SEG_ATTR, M_ACCESS); 151 call op (addr (mops.d_copy_seg), access_operations_$mseg_read_message, ""b, MSEG_R_ACCESS, MSEG_COPY_SEG, ""b); 152 call op (addr (mops.d_read_delete_own_message), access_operations_$mseg_read_delete_message, 153 O_FOR_R | O_FOR_D | DONT_AUDIT_SUCCESS, MSEG_R_ACCESS | MSEG_D_ACCESS, MSEG_MODIFY_MESSAGE, ""b); 154 155 /**** The next one, reset_salv_bit_seg, is strange. Since the salvage bit 156* is set automatically, resetting it is not strictly a write-down. 157* We permit it to be reset by any process with D access that is 158* greater_or_equal to the segment parent access class. Thus 159* "READ_SEG_ATTR", since the AIM check is the same for reading the salvage 160* bit. The covert channel here is covered by explicit code in 161* mseg_$reset_salvaged_flag_seg. */ 162 163 call op (addr (mops.d_reset_salvage_bit_seg), access_operations_$mseg_attr_mod, ""b, MSEG_D_ACCESS, 164 MSEG_READ_SEG_ATTR, ""b); 165 166 dcl code fixed bin (35); 167 dcl 1 local_cds_args aligned like cds_args; 168 dcl exclude_array (1) char (32) init ("pad*"); 169 170 dcl create_data_segment_ entry (ptr, fixed bin (35)); 171 dcl com_err_ entry () options (variable); 172 173 /** begin generation of data segment */ 174 175 unspec (local_cds_args) = ""b; 176 177 local_cds_args.sections (1).p = addr (mops); 178 local_cds_args.sections (1).len = size (mops); 179 local_cds_args.sections (1).struct_name = "mops"; 180 local_cds_args.seg_name = "mseg_access_operations_"; 181 local_cds_args.exclude_array_ptr = addr (exclude_array); 182 local_cds_args.num_exclude_names = hbound (exclude_array, 1); 183 local_cds_args.switches.have_text = "1"b; 184 185 call create_data_segment_ (addr (local_cds_args), code); 186 if code ^= 0 187 then call com_err_ (code, "mseg_access_operations_"); 188 189 return; 190 191 192 declare ( 193 access_operations_$mseg_add_message, 194 access_operations_$mseg_create, 195 access_operations_$mseg_delete, 196 access_operations_$mseg_open, 197 access_operations_$mseg_close, 198 access_operations_$mseg_attr_read, 199 access_operations_$mseg_attr_mod, 200 access_operations_$mseg_access_read, 201 access_operations_$mseg_access_mod, 202 access_operations_$mseg_compact, 203 access_operations_$mseg_copy, 204 access_operations_$mseg_get_count, 205 access_operations_$mseg_read_message, 206 access_operations_$mseg_delete_message, 207 access_operations_$mseg_read_delete_message, 208 access_operations_$mseg_update_message, 209 access_operations_$mseg_accept_wakeups, 210 access_operations_$mseg_wakeup_send 211 ) bit (36) aligned ext static; 212 213 2 1 /* BEGIN INCLUDE FILE cds_args.incl.pl1 */ 2 2 2 3 dcl 1 cds_args based aligned, 2 4 2 sections (2), 2 5 3 p ptr, /* pointer to data for text/static section */ 2 6 3 len fixed bin (18), /* size of text/static section */ 2 7 3 struct_name char (32), /* name of declared structure for this section */ 2 8 2 seg_name char (32), /* name to create segment by */ 2 9 2 num_exclude_names fixed bin, /* number of names in exclude array */ 2 10 2 exclude_array_ptr ptr, /* pointer to array of exclude names */ 2 11 2 switches, /* control switches */ 2 12 3 defs_in_link bit (1) unal, /* says put defs in linkage */ 2 13 3 separate_static bit (1) unal, /* says separate static section is wanted */ 2 14 3 have_text bit (1) unal, /* ON if text section given */ 2 15 3 have_static bit (1) unal, /* ON if static section given */ 2 16 3 pad bit (32) unal; 2 17 2 18 dcl exclude_names (1) char (32) based; /* pointed to be cds_args.exclude_array_ptr */ 2 19 2 20 /* END INCLUDE FILE cds_args.incl.pl1 */ 214 3 1 /* BEGIN INCLUDE FILE ... mseg_access_mode_values.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-04-01,Palter), approve(), audit(), install(): 3 6* Initial coding. 3 7* 2) change(87-04-08,GDixon), approve(87-07-14,MCR7706), 3 8* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 3 9* Add mseg queue access values for queue users and administrators. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* format: style3,linecom */ 3 14 3 15 /* Definition of the extended access modes implemented by the message segment primitives (mseg_) */ 3 16 3 17 declare ( 3 18 /*** The individual modes */ 3 19 MSEG_A_ACCESS initial ("400000000000"b3), /* add a message */ 3 20 MSEG_D_ACCESS initial ("200000000000"b3), /* delete/update any message, accept wakeups, etc. */ 3 21 MSEG_R_ACCESS initial ("100000000000"b3), /* read any message */ 3 22 MSEG_O_ACCESS initial ("040000000000"b3), /* read/delete your own messages */ 3 23 MSEG_S_ACCESS initial ("020000000000"b3), /* get the message count, salvaged flag, etc. */ 3 24 MSEG_W_ACCESS initial ("010000000000"b3), /* send a normal wakeup when adding a message */ 3 25 MSEG_U_ACCESS initial ("004000000000"b3) /* send an urgent wakeup when adding a message */ 3 26 ) bit (36) aligned static options (constant); 3 27 3 28 declare ( 3 29 /*** Common combinations of the modes */ 3 30 MSEG_NULL_ACCESS initial ("000000000000"b3), /* no access at all */ 3 31 MSEG_FULL_ACCESS initial ("774000000000"b3) /* all possible access */ 3 32 ) bit (36) aligned static options (constant); 3 33 3 34 /* format: idind40 */ 3 35 3 36 declare ( 3 37 /*** Initial extended access modes of a newly created mailbox -- The following constants yield the following ACL: 3 38* adrosw Person_id.*.* (or anonymous.Project_id.*) 3 39* aow *.SysDaemon.* 3 40* aow *.*.* */ 3 41 MSEG_MBX_INITIAL_ACL dimension (3) static options (constant) 3 42 initial ("770000000000"b3, "450000000000"b3, "450000000000"b3), 3 43 MSEG_MBX_CREATOR_INITIAL_ACCESS defined (MSEG_MBX_INITIAL_ACL (1)), 3 44 MSEG_MBX_SYSDAEMON_INITIAL_ACCESS defined (MSEG_MBX_INITIAL_ACL (2)), 3 45 MSEG_MBX_OTHERS_INITIAL_ACCESS defined (MSEG_MBX_INITIAL_ACL (3)) 3 46 ) bit (36) aligned; 3 47 3 48 declare ( 3 49 /*** Initial extended access modes of a newly created queue message segment -- The following constants yield the 3 50* following ACL: 3 51* adros Person_id.*.* (or anonymous.Project_id.*) 3 52* ao *.SysDaemon.* 3 53* null *.*.* */ 3 54 MSEG_QUEUE_INITIAL_ACL dimension (3) static options (constant) 3 55 initial ("760000000000"b3, "440000000000"b3, "000000000000"b3), 3 56 MSEG_QUEUE_CREATOR_INITIAL_ACCESS defined (MSEG_QUEUE_INITIAL_ACL (1)), 3 57 MSEG_QUEUE_SYSDAEMON_INITIAL_ACCESS defined (MSEG_QUEUE_INITIAL_ACL (2)), 3 58 MSEG_QUEUE_OTHERS_INITIAL_ACCESS defined (MSEG_QUEUE_INITIAL_ACL (3)) 3 59 ) bit (36) aligned; 3 60 3 61 declare ( 3 62 /*** Extended access modes of queue segment users and administrators: 3 63* ao Queue_User.*.* 3 64* aros Queue_Admin.*.* */ 3 65 MSEG_QUEUE_USER_ACCESS initial ("440000000000"b3), 3 66 MSEG_QUEUE_ADMIN_ACCESS initial ("560000000000"b3)) 3 67 bit (36) aligned int static options(constant); 3 68 3 69 /* END INCLUDE FILE ... mseg_access_mode_values.incl.pl1 */ 215 4 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 4 2* 4 3* Values for the "access mode" argument so often used in hardcore 4 4* James R. Davis 26 Jan 81 MCR 4844 4 5* Added constants for SM access 4/28/82 Jay Pattin 4 6* Added text strings 03/19/85 Chris Jones 4 7**/ 4 8 4 9 4 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 4 11 dcl ( 4 12 N_ACCESS init ("000"b), 4 13 R_ACCESS init ("100"b), 4 14 E_ACCESS init ("010"b), 4 15 W_ACCESS init ("001"b), 4 16 RE_ACCESS init ("110"b), 4 17 REW_ACCESS init ("111"b), 4 18 RW_ACCESS init ("101"b), 4 19 S_ACCESS init ("100"b), 4 20 M_ACCESS init ("010"b), 4 21 A_ACCESS init ("001"b), 4 22 SA_ACCESS init ("101"b), 4 23 SM_ACCESS init ("110"b), 4 24 SMA_ACCESS init ("111"b) 4 25 ) bit (3) internal static options (constant); 4 26 4 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 4 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 4 29 4 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 4 31 static options (constant); 4 32 4 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 4 34 static options (constant); 4 35 4 36 dcl ( 4 37 N_ACCESS_BIN init (00000b), 4 38 R_ACCESS_BIN init (01000b), 4 39 E_ACCESS_BIN init (00100b), 4 40 W_ACCESS_BIN init (00010b), 4 41 RW_ACCESS_BIN init (01010b), 4 42 RE_ACCESS_BIN init (01100b), 4 43 REW_ACCESS_BIN init (01110b), 4 44 S_ACCESS_BIN init (01000b), 4 45 M_ACCESS_BIN init (00010b), 4 46 A_ACCESS_BIN init (00001b), 4 47 SA_ACCESS_BIN init (01001b), 4 48 SM_ACCESS_BIN init (01010b), 4 49 SMA_ACCESS_BIN init (01011b) 4 50 ) fixed bin (5) internal static options (constant); 4 51 4 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 216 217 end mseg_access_operations_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1539.1 !BBBJWhLNGKCBnx.pl1 >special_ldd>install>MR12.1-1054>mseg_access_operations_.cds 75 1 05/17/85 0619.0 mseg_access_operation.incl.pl1 >ldd>include>mseg_access_operation.incl.pl1 214 2 04/01/76 2209.5 cds_args.incl.pl1 >ldd>include>cds_args.incl.pl1 215 3 08/04/87 1139.3 mseg_access_mode_values.incl.pl1 >spec>install>1056>mseg_access_mode_values.incl.pl1 216 4 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.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. ADMIN 000005 constant bit(36) initial dcl 77 set ref 137* A_ACCESS 000011 constant bit(3) initial unaligned dcl 4-11 ref 111 DIR_MODES 000004 constant bit(36) initial dcl 77 ref 111 113 115 117 149 DIR_MODES_OR_EX_MODES 000003 constant bit(36) initial dcl 77 ref 147 DONT_AUDIT_SUCCESS 000012 constant bit(36) initial dcl 77 set ref 125* 127 129* 131 133* 152 MSEG_ACCEPT_WAKEUPS 000020 constant fixed bin(9,0) initial dcl 1-24 set ref 139* MSEG_ADD_MESSAGE 000022 constant fixed bin(9,0) initial dcl 1-24 set ref 135* 137* MSEG_A_ACCESS 000027 constant bit(36) initial dcl 3-17 set ref 135* 137* MSEG_COPY_SEG 000023 constant fixed bin(9,0) initial dcl 1-24 set ref 151* MSEG_CREATE_SEG 000032 constant fixed bin(9,0) initial dcl 1-24 set ref 111* MSEG_D_ACCESS 000012 constant bit(36) initial dcl 3-17 set ref 121* 129 131* 133* 139* 145* 152 163* MSEG_MODIFY_MESSAGE 000021 constant fixed bin(9,0) initial dcl 1-24 set ref 129* 131* 133* 152* MSEG_MODIFY_SEG_ATTR 000024 constant fixed bin(9,0) initial dcl 1-24 set ref 113* 115* 121* 145* 149* MSEG_READ_MESSAGE 000031 constant fixed bin(9,0) initial dcl 1-24 set ref 125* 127* MSEG_READ_SEG_ATTR 000033 constant fixed bin(9,0) initial dcl 1-24 set ref 117* 119* 123* 143* 147* 163* MSEG_R_ACCESS 000011 constant bit(36) initial dcl 3-17 set ref 125* 127* 129 151* 152 MSEG_S_ACCESS 000007 constant bit(36) initial dcl 3-17 set ref 123* 143* MSEG_U_ACCESS 000005 constant bit(36) initial dcl 3-17 set ref 142* MSEG_W_ACCESS 000006 constant bit(36) initial dcl 3-17 set ref 141* M_ACCESS 000012 constant bit(3) initial unaligned dcl 4-11 set ref 111 113* 115* 149* NON_NULL_MODES 000011 constant bit(36) initial dcl 77 set ref 119* 147 NO_MODES 000010 constant bit(36) initial dcl 77 set ref 111 113 115 117 120* 149 O_FOR_D 000006 constant bit(36) initial dcl 77 ref 131 152 O_FOR_R 000007 constant bit(36) initial dcl 77 ref 127 152 REW_ACCESS 000001 constant bit(3) initial unaligned dcl 4-11 RE_ACCESS 000002 constant bit(3) initial unaligned dcl 4-11 RW_ACCESS 000000 constant bit(3) initial unaligned dcl 4-11 S_ACCESS 000027 constant bit(3) initial unaligned dcl 4-11 set ref 117* 147* a_op parameter bit(36) dcl 94 ref 90 103 accept_wakeups_seg 162 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* access_operation based bit(36) level 2 dcl 100 set ref 103* access_operations_$mseg_accept_wakeups 000060 external static bit(36) dcl 192 set ref 139* access_operations_$mseg_access_mod 000040 external static bit(36) dcl 192 set ref 115* access_operations_$mseg_access_read 000036 external static bit(36) dcl 192 set ref 117* access_operations_$mseg_add_message 000020 external static bit(36) dcl 192 set ref 135* 137* access_operations_$mseg_attr_mod 000034 external static bit(36) dcl 192 set ref 145* 149* 163* access_operations_$mseg_attr_read 000032 external static bit(36) dcl 192 set ref 143* 147* access_operations_$mseg_close 000030 external static bit(36) dcl 192 set ref 120* access_operations_$mseg_compact 000042 external static bit(36) dcl 192 set ref 121* access_operations_$mseg_create 000022 external static bit(36) dcl 192 set ref 111* access_operations_$mseg_delete 000024 external static bit(36) dcl 192 set ref 113* access_operations_$mseg_delete_message 000052 external static bit(36) dcl 192 set ref 131* access_operations_$mseg_get_count 000046 external static bit(36) dcl 192 set ref 123* access_operations_$mseg_open 000026 external static bit(36) dcl 192 set ref 119* access_operations_$mseg_read_delete_message 000054 external static bit(36) dcl 192 set ref 129* 152* access_operations_$mseg_read_message 000050 external static bit(36) dcl 192 set ref 125* 127* 151* access_operations_$mseg_update_message 000056 external static bit(36) dcl 192 set ref 133* access_operations_$mseg_wakeup_send 000062 external static bit(36) dcl 192 set ref 141* 142* acl_list_seg 147 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* acl_modify_seg 146 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* add_message 161 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* admin_add_message 172 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* cds_args based structure level 1 dcl 2-3 close_seg 151 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* code 000300 automatic fixed bin(35,0) dcl 166 set ref 185* 186 186* com_err_ 000016 constant entry external dcl 171 ref 186 compact_seg 152 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* copy_seg 171 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* create_data_segment_ 000014 constant entry external dcl 170 ref 185 create_seg 144 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* d_accept_wakeups_seg 70 000100 automatic structure level 3 dcl 39 set ref 139 139 d_acl_list_seg 14 000100 automatic structure level 3 dcl 39 set ref 117 117 d_acl_modify_seg 10 000100 automatic structure level 3 dcl 39 set ref 115 115 d_add_message 64 000100 automatic structure level 3 dcl 39 set ref 135 135 d_admin_add_message 130 000100 automatic structure level 3 dcl 39 set ref 137 137 d_close_seg 24 000100 automatic structure level 3 dcl 39 set ref 120 120 d_compact_seg 30 000100 automatic structure level 3 dcl 39 set ref 121 121 d_copy_seg 124 000100 automatic structure level 3 dcl 39 set ref 151 151 d_create_seg 000100 automatic structure level 3 dcl 39 set ref 111 111 d_delete_message 54 000100 automatic structure level 3 dcl 39 set ref 131 131 d_delete_seg 4 000100 automatic structure level 3 dcl 39 set ref 113 113 d_get_count_seg 34 000100 automatic structure level 3 dcl 39 set ref 123 123 d_modify_attr_seg 110 000100 automatic structure level 3 dcl 39 set ref 145 145 d_modify_fs_attr_seg 120 000100 automatic structure level 3 dcl 39 set ref 149 149 d_open_seg 20 000100 automatic structure level 3 dcl 39 set ref 119 119 d_read_attr_seg 104 000100 automatic structure level 3 dcl 39 set ref 143 143 d_read_delete_message 50 000100 automatic structure level 3 dcl 39 set ref 129 129 d_read_delete_own_message 134 000100 automatic structure level 3 dcl 39 set ref 152 152 d_read_fs_attr_seg 114 000100 automatic structure level 3 dcl 39 set ref 147 147 d_read_message 40 000100 automatic structure level 3 dcl 39 set ref 125 125 d_read_own_message 44 000100 automatic structure level 3 dcl 39 set ref 127 127 d_reset_salvage_bit_seg 140 000100 automatic structure level 3 dcl 39 set ref 163 163 d_send_normal_wakeup 74 000100 automatic structure level 3 dcl 39 set ref 141 141 d_send_urgent_wakeup 100 000100 automatic structure level 3 dcl 39 set ref 142 142 d_update_message 60 000100 automatic structure level 3 dcl 39 set ref 133 133 data 000100 automatic structure level 2 dcl 39 delete_message 157 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* delete_seg 145 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* dir_modes parameter bit(3) unaligned dcl 98 ref 90 107 exclude_array 000347 automatic char(32) initial array unaligned dcl 168 set ref 168* 181 182 exclude_array_ptr 42 000302 automatic pointer level 2 dcl 167 set ref 181* flags 2 based structure level 2 in structure "maop" packed unaligned dcl 100 in procedure "op" set ref 105* flags parameter bit(36) dcl 96 in procedure "op" ref 90 105 get_count_seg 153 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* have_text 44(02) 000302 automatic bit(1) level 3 packed unaligned dcl 167 set ref 183* index parameter fixed bin(9,0) dcl 97 ref 90 106 len 2 000302 automatic fixed bin(18,0) array level 3 dcl 167 set ref 178* local_cds_args 000302 automatic structure level 1 dcl 167 set ref 175* 185 185 maop based structure level 1 dcl 100 set ref 102* modes parameter bit(36) dcl 95 ref 90 104 modify_attr_seg 166 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* modify_fs_attr_seg 170 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* mops 000100 automatic structure level 1 dcl 39 set ref 177 178 mseg_access_op_index 2(27) based fixed bin(9,0) level 2 packed unsigned unaligned dcl 100 set ref 106* mseg_access_operation based structure level 1 dcl 1-5 mseg_access_operation_ptr 000276 automatic pointer dcl 1-4 ref 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 1-5 num_exclude_names 40 000302 automatic fixed bin(17,0) level 2 dcl 167 set ref 182* op_ptr parameter pointer dcl 93 ref 90 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 102 103 104 105 106 107 open_seg 150 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* p 000302 automatic pointer array level 3 dcl 167 set ref 177* read_attr_seg 165 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* read_delete_message 156 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* read_delete_own_message 173 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* read_fs_attr_seg 167 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* read_message 154 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* read_own_message 155 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* required_dir_modes 2(18) based bit(3) level 2 packed unaligned dcl 100 set ref 107* required_modes 1 based bit(36) level 2 dcl 100 set ref 104* reset_salvage_bit_seg 174 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* sections 000302 automatic structure array level 2 dcl 167 seg_name 30 000302 automatic char(32) level 2 dcl 167 set ref 180* send_normal_wakeup 163 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* send_urgent_wakeup 164 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* struct_name 3 000302 automatic char(32) array level 3 dcl 167 set ref 179* switches 44 000302 automatic structure level 2 dcl 167 update_message 160 000100 automatic fixed bin(17,0) initial level 2 dcl 39 set ref 39* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 DIR_ACCESS_MODE_NAMES constant char(4) initial array unaligned dcl 4-33 DONT_AUDIT constant bit(36) initial dcl 77 E_ACCESS constant bit(3) initial unaligned dcl 4-11 E_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 MSEG_FULL_ACCESS constant bit(36) initial dcl 3-28 MSEG_MBX_CREATOR_INITIAL_ACCESS defined bit(36) dcl 3-36 MSEG_MBX_INITIAL_ACL constant bit(36) initial array dcl 3-36 MSEG_MBX_OTHERS_INITIAL_ACCESS defined bit(36) dcl 3-36 MSEG_MBX_SYSDAEMON_INITIAL_ACCESS defined bit(36) dcl 3-36 MSEG_NULL_ACCESS constant bit(36) initial dcl 3-28 MSEG_O_ACCESS constant bit(36) initial dcl 3-17 MSEG_QUEUE_ADMIN_ACCESS constant bit(36) initial dcl 3-61 MSEG_QUEUE_CREATOR_INITIAL_ACCESS defined bit(36) dcl 3-48 MSEG_QUEUE_INITIAL_ACL constant bit(36) initial array dcl 3-48 MSEG_QUEUE_OTHERS_INITIAL_ACCESS defined bit(36) dcl 3-48 MSEG_QUEUE_SYSDAEMON_INITIAL_ACCESS defined bit(36) dcl 3-48 MSEG_QUEUE_USER_ACCESS constant bit(36) initial dcl 3-61 M_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 N_ACCESS constant bit(3) initial unaligned dcl 4-11 N_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 REW_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 RE_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 RW_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 R_ACCESS constant bit(3) initial unaligned dcl 4-11 R_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 SA_ACCESS constant bit(3) initial unaligned dcl 4-11 SA_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 SEG_ACCESS_MODE_NAMES constant char(4) initial array unaligned dcl 4-30 SMA_ACCESS constant bit(3) initial unaligned dcl 4-11 SMA_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 SM_ACCESS constant bit(3) initial unaligned dcl 4-11 SM_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 S_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 W_ACCESS constant bit(3) initial unaligned dcl 4-11 W_ACCESS_BIN constant fixed bin(5,0) initial dcl 4-36 access_operations_$mseg_copy 000044 external static bit(36) dcl 192 exclude_names based char(32) array unaligned dcl 2-18 mseg_access_operations_$data 000012 external static structure array level 1 dcl 1-35 NAMES DECLARED BY EXPLICIT CONTEXT. mseg_access_operations_ 000043 constant entry external dcl 9 op 001342 constant entry internal dcl 90 ref 111 113 115 117 119 120 121 123 125 127 129 131 133 135 137 139 141 142 143 145 147 149 151 152 163 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 111 111 113 113 115 115 117 117 119 119 120 120 121 121 123 123 125 125 127 127 129 129 131 131 133 133 135 135 137 137 139 139 141 141 142 142 143 143 145 145 147 147 149 149 151 151 152 152 163 163 177 181 185 185 hbound builtin function ref 182 size builtin function ref 178 string builtin function ref 105 unspec builtin function set ref 102* 175 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1672 1756 1377 1702 Length 13066 1377 64 11074 272 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mseg_access_operations_ 278 external procedure is an external procedure. op internal procedure shares stack frame of external procedure mseg_access_operations_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mseg_access_operations_ 000100 mops mseg_access_operations_ 000276 mseg_access_operation_ptr mseg_access_operations_ 000300 code mseg_access_operations_ 000302 local_cds_args mseg_access_operations_ 000347 exclude_array mseg_access_operations_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ create_data_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$mseg_accept_wakeups access_operations_$mseg_access_mod access_operations_$mseg_access_read access_operations_$mseg_add_message access_operations_$mseg_attr_mod access_operations_$mseg_attr_read access_operations_$mseg_close access_operations_$mseg_compact access_operations_$mseg_copy access_operations_$mseg_create access_operations_$mseg_delete access_operations_$mseg_delete_message access_operations_$mseg_get_count access_operations_$mseg_open access_operations_$mseg_read_delete_message access_operations_$mseg_read_message access_operations_$mseg_update_message access_operations_$mseg_wakeup_send mseg_access_operations_$data LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000042 39 000050 168 000132 111 000142 113 000174 115 000224 117 000254 119 000304 120 000333 121 000363 123 000412 125 000441 127 000466 129 000516 131 000546 133 000576 135 000623 137 000652 139 000677 141 000726 142 000756 143 001006 145 001035 147 001064 149 001114 151 001144 152 001173 163 001227 175 001256 177 001261 178 001263 179 001265 180 001270 181 001273 182 001275 183 001277 185 001301 186 001314 189 001341 90 001342 102 001344 103 001351 104 001354 105 001360 106 001364 107 001370 108 001376 Object Segment >special_ldd>install>MR12.1-1054>mseg_access_operations_ Created on 08/04/87 1649.5 mst Tue by GJohnson.SysMaint.a using create_data_segment_, Version II of Thursday, November 20, 1986 Object Text Defs Link Symb Static Start 0 0 176 512 522 522 Length 1011 176 314 10 253 0 28 Definitions: segname: mseg_access_operations_ text|162 accept_wakeups_seg text|147 acl_list_seg text|146 acl_modify_seg text|161 add_message text|172 admin_add_message text|151 close_seg text|152 compact_seg text|171 copy_seg text|144 create_seg text|0 data text|157 delete_message text|145 delete_seg text|153 get_count_seg text|166 modify_attr_seg text|170 modify_fs_attr_seg text|150 open_seg text|165 read_attr_seg text|156 read_delete_message text|173 read_delete_own_message text|167 read_fs_attr_seg text|154 read_message text|155 read_own_message text|174 reset_salvage_bit_seg text|163 send_normal_wakeup text|164 send_urgent_wakeup symb|0 symbol_table text|160 update_message No Links. ----------------------------------------------------------- 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