COMPILATION LISTING OF SEGMENT vrm_open_man Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/21/84 1434.4 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 vrm_open_man: proc; return; 8 9 /* . BEGIN_DESCRIPTION 10* 11* This module contains the entry points necessary for managing the 12* opening and closing of relations by the vfile_relation_manager. 13* 14* . END_DESCRIPTION 15**/ 16 17 /* History 18* 19* 82-08-17 R. Harvey: Initially written 20* 82-10-15 R. Harvey: Rewritten to manage opening_ids as one per relation, 21* and also to pass back error codes 22* 82-11-02 R. Harvey: Modified to use vrm_open_info structure 23* 82-12-14 Roger Lackey : Added call to destroy_all_iocbs_for_oid when 24* removing an opening. 25* 26**/ 27 28 get_opening_id: entry (I_uid, O_opening_id, O_com_ptr, O_open_info_ptr, O_code); 29 30 /* 31* 32* Add a new opening to the opening table. If the table does not 33* exist a temporary segment is created and initialized. 34* 35**/ 36 37 /* Parameters */ 38 39 dcl I_uid bit (36) aligned parameter; 40 dcl O_opening_id bit (36) aligned parameter; 41 dcl O_com_ptr ptr parameter; 42 43 /* dcl O_open_info_ptr ptr parameter; */ 44 dcl O_code fixed bin (35) parameter; 45 46 47 if INTERNAL_VRM_COM_PTR = null () /* If first call... */ 48 then call create_com_segment; /* ... make vrm_com_ptr point to something */ 49 else vrm_com_ptr = INTERNAL_VRM_COM_PTR; 50 51 /* First, see if this relation is already open */ 52 53 call search_for_uid (I_uid, opening_id); 54 if opening_id = "0"b then do; /* Nope */ 55 if vrm_com.next_free_oid = "0"b then call create_and_link_oid_section; 56 opening_id = addr (vrm_com.next_free_oid) -> oid_template.right_half; 57 call unlink (opening_id, addr (vrm_com.next_free_oid)); 58 oid_entry_ptr = ptr (vrm_com_ptr, opening_id); 59 oid_entry.uid = I_uid; 60 oid_entry.open_info_ptr = null (); 61 call link (opening_id, addr (vrm_com.first_assigned_oid)); 62 end; 63 else oid_entry_ptr = ptr (vrm_com_ptr, opening_id); 64 65 addr (O_opening_id) -> oid_template.left_half = "0"b; 66 addr (O_opening_id) -> oid_template.right_half = opening_id; 67 O_com_ptr = vrm_com_ptr; 68 O_open_info_ptr = oid_entry.open_info_ptr; 69 70 O_code = 0; 71 72 Exit: return; 73 74 set_open_info_ptr: entry (I_opening_id, I_open_info_ptr); 75 76 /* 77* 78* Given an opening_id set the associated open_info_ptr. 79* 80**/ 81 82 /* Parameters */ 83 84 85 dcl I_opening_id bit (36) aligned; 86 dcl I_open_info_ptr ptr; 87 88 89 vrm_com_ptr = INTERNAL_VRM_COM_PTR; 90 oid_entry_ptr = ptr (vrm_com_ptr, addr (I_opening_id) -> oid_template.right_half); 91 oid_entry.open_info_ptr = I_open_info_ptr; 92 93 return; 94 95 get_open_info_ptr: entry (I_opening_id, O_open_info_ptr, O_code); 96 97 /* 98* 99* Given an opening_id return the associated open_info_ptr. 100* 101**/ 102 103 /* Parameters */ 104 105 106 /* dcl I_opening_id bit (36) aligned parameter; */ 107 dcl O_open_info_ptr ptr parameter; 108 109 /* dcl O_code fixed bin (35) parameter; */ 110 111 112 if INTERNAL_VRM_COM_PTR = null then call error (dm_error_$no_opening); 113 vrm_com_ptr = INTERNAL_VRM_COM_PTR; 114 if I_opening_id > vrm_com.highest_oid then call error (dm_error_$no_opening); 115 oid_entry_ptr = ptr (vrm_com_ptr, addr (I_opening_id) -> oid_template.right_half); 116 if fixed (oid_entry.next_oid) > fixed (vrm_com.highest_oid) | 117 fixed (oid_entry.prev_oid) > fixed (vrm_com.highest_oid) | 118 oid_entry.uid = "0"b | 119 oid_entry.open_info_ptr = null () 120 then call error (dm_error_$no_opening); 121 if oid_entry.open_info_ptr -> vrm_open_info.opening_id ^= I_opening_id then call error (dm_error_$no_opening); 122 O_open_info_ptr = oid_entry.open_info_ptr; 123 124 O_code = 0; 125 126 return; 127 128 remove_opening: entry (I_opening_id); 129 130 /* 131* 132* Given an opening_id, remove it from the opening table. 133* 134**/ 135 136 /* Parameters */ 137 138 139 /* dcl I_opening_id bit (36) aligned; */ 140 141 142 vrm_com_ptr = INTERNAL_VRM_COM_PTR; 143 opening_id = addr (I_opening_id) -> oid_template.right_half; 144 oid_entry_ptr = ptr (vrm_com_ptr, opening_id); 145 146 oid_entry.uid = "0"b; 147 oid_entry.open_info_ptr = null (); /* Invalidate entry */ 148 call unlink (opening_id, addr (vrm_com.first_assigned_oid)); 149 call link (opening_id, addr (vrm_com.next_free_oid)); 150 151 I_opening_id = "0"b; /* Let him not use it again */ 152 153 return; 154 155 get_open_relations: entry (I_user_area_ptr, O_relation_list_ptr, O_code); 156 157 dcl I_user_area_ptr ptr parameter; 158 dcl O_relation_list_ptr ptr parameter; 159 160 /* dcl O_code fixed bin (35) parameter; */ 161 162 163 if INTERNAL_VRM_COM_PTR = null then call error (dm_error_$no_opening); 164 vrm_com_ptr = INTERNAL_VRM_COM_PTR; 165 166 vrl_number_of_openings = 0; 167 oid = vrm_com.first_assigned_oid; 168 do while (oid ^= "0"b); 169 oid_entry_ptr = ptr (vrm_com_ptr, addr (oid) -> oid_template.right_half); 170 vrl_number_of_openings = vrl_number_of_openings + 1; 171 addr (oid) -> oid_template.right_half = oid_entry.next_oid; 172 end; 173 174 allocate vrm_relation_list in (user_area) set (vrm_relation_list_ptr); 175 i = 0; 176 oid = vrm_com.first_assigned_oid; 177 do while (oid ^= "0"b); 178 oid_entry_ptr = ptr (vrm_com_ptr, addr (oid) -> oid_template.right_half); 179 i = i + 1; 180 vrm_relation_list.opening (i).opening_id = oid; 181 vrm_relation_list.opening (i).open_info_ptr = oid_entry.open_info_ptr; 182 addr (oid) -> oid_template.right_half = oid_entry.next_oid; 183 end; 184 185 O_relation_list_ptr = vrm_relation_list_ptr; 186 O_code = 0; 187 return; 188 189 create_com_segment: proc; 190 191 dcl code fixed bin (35); 192 193 /* get a temporary segment from the process dir */ 194 195 call get_temp_segment_ ("vrm_open_man", INTERNAL_VRM_COM_PTR, code); 196 if code ^= 0 then call error (code); 197 vrm_com_ptr = INTERNAL_VRM_COM_PTR; 198 199 /* initialize the temp segment */ 200 201 vrm_com.highest_oid = "0"b; 202 vrm_com.next_free_oid = "0"b; 203 vrm_com.first_assigned_oid = "0"b; 204 vrm_com.get_seg_ptr, vrm_com.put_seg_ptr, vrm_com.mod_seg_ptr = null (); 205 vrm_com.work_area_ptr = addr (vrm_com.oid_area); 206 vrm_com.oid_area = empty (); 207 208 return; 209 210 end; 211 212 create_and_link_oid_section: proc; 213 214 /* 215* This procedure will allocate a new oid_table section in 216* the temp area. It will be initialized and linked into the 217* appropriate place. 218**/ 219 220 dcl entry_size fixed bin; 221 dcl i fixed bin; 222 /* dcl new_oid_section_ptr ptr; */ 223 dcl prev_oid bit (18) unal; 224 225 allocate new_oid_section in (vrm_com.oid_area) set (new_oid_section_ptr); 226 227 /* init new section */ 228 229 oid_entry_ptr = new_oid_section_ptr; 230 entry_size = size (oid_entry); 231 232 prev_oid = "0"b; 233 do i = 1 to vrm_data_$oid_slots_per_section; 234 oid_entry.uid = "0"b; 235 oid_entry.open_info_ptr = null (); 236 oid_entry.next_oid = rel (addrel (oid_entry_ptr, entry_size)); 237 oid_entry.prev_oid = prev_oid; 238 oid_entry.valid = "0"b; 239 prev_oid = rel (oid_entry_ptr); 240 oid_entry_ptr = addrel (oid_entry_ptr, entry_size); 241 end; 242 243 ptr (oid_entry_ptr, prev_oid) -> oid_entry.next_oid = "0"b; /* readjust the last entry */ 244 if vrm_com.highest_oid < "000000000000000000"b || prev_oid 245 then addr (vrm_com.highest_oid) -> oid_template.right_half = prev_oid; 246 addr (vrm_com.next_free_oid) -> oid_template.right_half = rel (new_oid_section_ptr); 247 248 return; 249 250 end; 251 252 link: proc (opening_id, place_to_link); 253 254 dcl opening_id bit (18) unal parameter; 255 dcl place_to_link ptr parameter; 256 257 dcl temp_hold bit (18) unal; 258 259 quit_signaled = "0"b; 260 on quit quit_signaled = "1"b; 261 262 temp_hold = place_to_link -> oid_template.right_half; 263 place_to_link -> oid_template.right_half = opening_id; 264 if temp_hold ^= "0"b then ptr (vrm_com_ptr, temp_hold) -> oid_entry.prev_oid = opening_id; 265 oid_entry_ptr = ptr (vrm_com_ptr, opening_id); 266 oid_entry.prev_oid = "0"b; 267 oid_entry.next_oid = temp_hold; 268 269 revert quit; 270 if quit_signaled then do; 271 quit_signaled = "0"b; 272 signal quit; 273 end; 274 275 end link; 276 277 unlink: proc (oid_to_be_unlinked, place_to_unlink); 278 279 dcl oid_to_be_unlinked bit (18) unal parameter; 280 dcl place_to_unlink ptr parameter; 281 dcl walk_oid bit (18) unal; 282 dcl found bit (1) unaligned; 283 284 quit_signaled = "0"b; 285 on quit quit_signaled = "1"b; 286 287 walk_oid = place_to_unlink -> oid_template.right_half; 288 found = "0"b; 289 do while (walk_oid ^= "0"b & ^found); 290 oid_entry_ptr = ptr (vrm_com_ptr, walk_oid); 291 if walk_oid = oid_to_be_unlinked then do; 292 found = "1"b; 293 if oid_entry.prev_oid ^= "0"b then 294 ptr (vrm_com_ptr, oid_entry.prev_oid) -> oid_entry.next_oid = oid_entry.next_oid; 295 else place_to_unlink -> oid_template.right_half = oid_entry.next_oid; 296 if oid_entry.next_oid ^= "0"b then 297 ptr (vrm_com_ptr, oid_entry.next_oid) -> oid_entry.prev_oid = oid_entry.prev_oid; 298 end; 299 walk_oid = oid_entry.next_oid; /* go to next entry */ 300 end; 301 302 revert quit; 303 if quit_signaled then do; 304 quit_signaled = "0"b; 305 signal quit; 306 end; 307 308 end unlink; 309 310 search_for_uid: proc (uid, oid); 311 312 dcl uid bit (36) aligned parameter; 313 dcl oid bit (18) unal parameter; 314 315 dcl found bit (1) aligned; 316 317 oid = addr (vrm_com.first_assigned_oid) -> oid_template.right_half; 318 found = "0"b; 319 do while (^found & oid ^= "0"b); 320 oid_entry_ptr = ptr (vrm_com_ptr, oid); 321 if oid_entry.uid = uid then found = "1"b; 322 else oid = oid_entry.next_oid; 323 end; 324 325 end search_for_uid; 326 327 error: proc (ecode); 328 329 dcl ecode fixed bin (35) parameter; 330 331 O_code = ecode; 332 333 goto Exit; 334 335 end error; 336 1 1 /* BEGIN INCLUDE vrm_com.incl.pl1 */ 1 2 1 3 /* Written 82-08-23 by R. Harvey */ 1 4 1 5 dcl vrm_com_ptr ptr; 1 6 dcl 1 vrm_com aligned based (vrm_com_ptr), 1 7 2 get_seg_ptr ptr, /* temp seg for retrieve routines */ 1 8 2 put_seg_ptr ptr, /* temp seg for store routines */ 1 9 2 mod_seg_ptr ptr, /* temp seg for modify routines */ 1 10 2 work_area_ptr ptr, /* freeing area for oid_table sections and rel_descriptors */ 1 11 2 highest_oid bit (36) aligned, /* highest valid oid */ 1 12 2 next_free_oid bit (36) aligned, /* offset of first in free chain */ 1 13 2 first_assigned_oid bit (36) aligned, /* offset of first in assigned chain */ 1 14 2 oid_area area (sys_info$max_seg_size - fixed (rel (addr (vrm_com.work_area_ptr)))); 1 15 1 16 /* END INCLUDE vrm_com.incl.pl1 */ 337 338 2 1 /* BEGIN INCLUDE vrm_open_info.incl.pl1 */ 2 2 2 3 /* R. Harvey 82-11-02 2 4* 82-09-82 Roger Lackey: added iocb_list_ptr */ 2 5 2 6 dcl 1 vrm_open_info aligned based (vrm_open_info_ptr), /* Vfile relation description */ 2 7 2 version char (8), /* Version number of this structure */ 2 8 2 opening_id bit (36) aligned, /* Opening id associated with this desc */ 2 9 2 file_uid bit (36) aligned, /* Unique id of msf dir */ 2 10 2 number_of_openings fixed bin, /* Number of separate calls to vrm$open */ 2 11 2 switches, 2 12 3 shared bit (1) unal, /* Open relation in shared mode */ 2 13 3 pad bit (35) unal init ("0"b), /* Unused must be zero */ 2 14 2 database_dir_path char (168) varying, /* Absolute path of database */ 2 15 2 relation_name char (30) varying, /* Name of relation */ 2 16 2 relation_model_ptr pointer, /* Pointer to the relation_model in the relation itself or a temp seg */ 2 17 2 com_ptr pointer, /* Temp seg for cursors and scratch space */ 2 18 2 iocb_list_ptr pointer, /* Pointer to first vrm_iocb_list_block */ 2 19 2 primary_key_info_ptr pointer, /* Special case collection info ptr */ 2 20 2 number_of_index_collections fixed bin, /* Count of index collections (include primary key) */ 2 21 2 index_collection (voi_no_of_index_collections 2 22 refer (vrm_open_info.number_of_index_collections)), 2 23 3 id bit (36), 2 24 3 info_ptr ptr unal; /* Points to more detailed info */ 2 25 2 26 2 27 dcl VRM_OPEN_INFO_VERSION_1 char (8) int static options (constant) init (" 1"); 2 28 dcl vrm_open_info_ptr ptr; 2 29 dcl voi_no_of_index_collections fixed bin; 2 30 2 31 /* END INCLUDE vrm_open_info.incl.pl1 */ 339 340 3 1 /* BEGIN INCLUDE vrm_relation_list.incl.pl1 */ 3 2 3 3 /* R. Harvey, 11/5/82 */ 3 4 3 5 dcl 1 vrm_relation_list aligned based (vrm_relation_list_ptr), 3 6 2 version char (8), 3 7 2 number_of_openings fixed bin (35), 3 8 2 opening (vrl_number_of_openings refer (vrm_relation_list.number_of_openings)), 3 9 3 opening_id bit (36) aligned, 3 10 3 open_info_ptr ptr; 3 11 3 12 3 13 dcl vrm_relation_list_ptr ptr; 3 14 dcl VRM_RELATION_LIST_VERSION_1 3 15 char (8) init (" 1"); 3 16 dcl vrl_number_of_openings fixed bin (35); 3 17 3 18 3 19 /* END INCLUDE vrm_relation_list.incl.pl1 */ 341 342 343 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 344 345 dcl vrm_data_$oid_slots_per_section fixed bin external static; 346 347 dcl i fixed bin (35); 348 dcl opening_id bit (18) unal; 349 dcl oid bit (36) aligned; 350 dcl oid_entry_ptr ptr; 351 dcl quit_signaled bit (1) unal; 352 353 dcl 1 new_oid_section (vrm_data_$oid_slots_per_section) based (new_oid_section_ptr), 354 2 new_oid_entry like oid_entry; 355 356 dcl 1 oid_template aligned based, 357 2 left_half bit (18) unal, 358 2 right_half bit (18) unal; 359 360 dcl 1 oid_entry aligned based (oid_entry_ptr), 361 2 uid bit (36) aligned, 362 2 open_info_ptr ptr unal, 363 2 next_oid bit (18) unal, 364 2 prev_oid bit (18) unal, 365 2 valid bit (36) aligned; 366 367 dcl sys_info$max_seg_size fixed bin (35) ext static; 368 dcl dm_error_$no_opening fixed bin (35) ext static; 369 370 dcl quit condition; 371 372 dcl (addr, addrel, empty, fixed, null, ptr, rel, size, substr) 373 builtin; 374 375 dcl new_oid_section_ptr ptr internal static; 376 dcl INTERNAL_VRM_COM_PTR ptr internal static init (null ()); /* This points the the vrm_com structure FOR THIS PROCESS */ 377 378 dcl user_area area based (I_user_area_ptr); 379 380 381 382 end vrm_open_man; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/21/84 0933.9 vrm_open_man.pl1 >special_ldd>online>mrds_install>vrm_open_man.pl1 337 1 10/14/83 1609.1 vrm_com.incl.pl1 >ldd>include>vrm_com.incl.pl1 339 2 10/14/83 1609.1 vrm_open_info.incl.pl1 >ldd>include>vrm_open_info.incl.pl1 341 3 10/14/83 1609.1 vrm_relation_list.incl.pl1 >ldd>include>vrm_relation_list.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. INTERNAL_VRM_COM_PTR 000012 internal static pointer initial dcl 376 set ref 47 49 89 112 113 142 163 164 195* 197 I_open_info_ptr parameter pointer dcl 86 ref 74 91 I_opening_id parameter bit(36) dcl 85 set ref 74 90 95 114 115 121 128 143 151* I_uid parameter bit(36) dcl 39 set ref 28 53* 59 I_user_area_ptr parameter pointer dcl 157 ref 155 174 O_code parameter fixed bin(35,0) dcl 44 set ref 28 70* 95 124* 155 186* 331* O_com_ptr parameter pointer dcl 41 set ref 28 67* O_open_info_ptr parameter pointer dcl 107 set ref 28 68* 95 122* O_opening_id parameter bit(36) dcl 40 set ref 28 65 66 O_relation_list_ptr parameter pointer dcl 158 set ref 155 185* VRM_RELATION_LIST_VERSION_1 000104 automatic char(8) initial unaligned dcl 3-14 set ref 3-14* addr builtin function dcl 372 ref 56 57 57 61 61 65 66 90 115 143 148 148 149 149 169 171 178 182 205 206 244 246 317 addrel builtin function dcl 372 ref 236 240 code 000130 automatic fixed bin(35,0) dcl 191 set ref 195* 196 196* dm_error_$no_opening 000022 external static fixed bin(35,0) dcl 368 set ref 112* 114* 116* 121* 163* ecode parameter fixed bin(35,0) dcl 329 ref 327 331 empty builtin function dcl 372 ref 206 entry_size 000140 automatic fixed bin(17,0) dcl 220 set ref 230* 236 240 first_assigned_oid 12 based bit(36) level 2 dcl 1-6 set ref 61 61 148 148 167 176 203* 317 fixed builtin function dcl 372 ref 116 116 116 116 206 found 000101 automatic bit(1) unaligned dcl 282 in procedure "unlink" set ref 288* 289 292* found 000152 automatic bit(1) dcl 315 in procedure "search_for_uid" set ref 318* 319 321* get_seg_ptr based pointer level 2 dcl 1-6 set ref 204* get_temp_segment_ 000014 constant entry external dcl 343 ref 195 highest_oid 10 based bit(36) level 2 dcl 1-6 set ref 114 116 116 201* 244 244 i 000141 automatic fixed bin(17,0) dcl 221 in procedure "create_and_link_oid_section" set ref 233* i 000107 automatic fixed bin(35,0) dcl 347 in procedure "vrm_open_man" set ref 175* 179* 179 180 181 left_half based bit(18) level 2 packed unaligned dcl 356 set ref 65* mod_seg_ptr 4 based pointer level 2 dcl 1-6 set ref 204* new_oid_section based structure array level 1 unaligned dcl 353 ref 225 new_oid_section_ptr 000010 internal static pointer dcl 375 set ref 225* 229 246 next_free_oid 11 based bit(36) level 2 dcl 1-6 set ref 55 56 57 57 149 149 202* 246 next_oid 2 based bit(18) level 2 packed unaligned dcl 360 set ref 116 171 182 236* 243* 267* 293* 293 295 296 296 299 322 null builtin function dcl 372 ref 47 60 112 116 147 163 204 235 number_of_openings 2 based fixed bin(35,0) level 2 dcl 3-5 set ref 174* oid parameter bit(18) unaligned dcl 313 in procedure "search_for_uid" set ref 310 317* 319 320 322* oid 000111 automatic bit(36) dcl 349 in procedure "vrm_open_man" set ref 167* 168 169 171 176* 177 178 180 182 oid_area 14 based area level 2 dcl 1-6 set ref 205 206* 225 oid_entry based structure level 1 dcl 360 set ref 230 oid_entry_ptr 000112 automatic pointer dcl 350 set ref 58* 59 60 63* 68 90* 91 115* 116 116 116 116 121 122 144* 146 147 169* 171 178* 181 182 229* 230 234 235 236 236 237 238 239 240* 240 243 265* 266 267 290* 293 293 293 295 296 296 296 299 320* 321 322 oid_template based structure level 1 dcl 356 oid_to_be_unlinked parameter bit(18) unaligned dcl 279 ref 277 291 open_info_ptr 6 based pointer array level 3 in structure "vrm_relation_list" dcl 3-5 in procedure "vrm_open_man" set ref 181* open_info_ptr 1 based pointer level 2 in structure "oid_entry" packed unaligned dcl 360 in procedure "vrm_open_man" set ref 60* 68 91* 116 121 122 147* 181 235* opening 4 based structure array level 2 dcl 3-5 opening_id 000110 automatic bit(18) unaligned dcl 348 in procedure "vrm_open_man" set ref 53* 54 56* 57* 58 61* 63 66 143* 144 148* 149* opening_id parameter bit(18) unaligned dcl 254 in procedure "link" ref 252 263 264 265 opening_id 2 based bit(36) level 2 in structure "vrm_open_info" dcl 2-6 in procedure "vrm_open_man" ref 121 opening_id 4 based bit(36) array level 3 in structure "vrm_relation_list" dcl 3-5 in procedure "vrm_open_man" set ref 180* place_to_link parameter pointer dcl 255 ref 252 262 263 place_to_unlink parameter pointer dcl 280 ref 277 287 295 prev_oid 2(18) based bit(18) level 2 in structure "oid_entry" packed unaligned dcl 360 in procedure "vrm_open_man" set ref 116 237* 264* 266* 293 293 296* 296 prev_oid 000142 automatic bit(18) unaligned dcl 223 in procedure "create_and_link_oid_section" set ref 232* 237 239* 243 244 244 ptr builtin function dcl 372 ref 58 63 90 115 144 169 178 243 264 265 290 293 296 320 put_seg_ptr 2 based pointer level 2 dcl 1-6 set ref 204* quit 000000 stack reference condition dcl 370 ref 260 269 272 285 302 305 quit_signaled 000114 automatic bit(1) unaligned dcl 351 set ref 259* 260* 270 271* 284* 285* 303 304* rel builtin function dcl 372 ref 206 236 239 246 right_half 0(18) based bit(18) level 2 packed unaligned dcl 356 set ref 56 66* 90 115 143 169 171* 178 182* 244* 246* 262 263* 287 295* 317 size builtin function dcl 372 ref 230 sys_info$max_seg_size 000020 external static fixed bin(35,0) dcl 367 ref 206 temp_hold 000100 automatic bit(18) unaligned dcl 257 set ref 262* 264 264 267 uid based bit(36) level 2 in structure "oid_entry" dcl 360 in procedure "vrm_open_man" set ref 59* 116 146* 234* 321 uid parameter bit(36) dcl 312 in procedure "search_for_uid" ref 310 321 user_area based area(1024) dcl 378 ref 174 valid 3 based bit(36) level 2 dcl 360 set ref 238* vrl_number_of_openings 000106 automatic fixed bin(35,0) dcl 3-16 set ref 166* 170* 170 174 174 vrm_com based structure level 1 dcl 1-6 vrm_com_ptr 000100 automatic pointer dcl 1-5 set ref 49* 55 56 57 57 58 61 61 63 67 89* 90 113* 114 115 116 116 142* 144 148 148 149 149 164* 167 169 176 178 197* 201 202 203 204 204 204 205 205 206 206 225 244 244 246 264 265 290 293 296 317 320 vrm_data_$oid_slots_per_section 000016 external static fixed bin(17,0) dcl 345 ref 225 233 vrm_open_info based structure level 1 dcl 2-6 vrm_relation_list based structure level 1 dcl 3-5 set ref 174 vrm_relation_list_ptr 000102 automatic pointer dcl 3-13 set ref 174* 180 181 185 walk_oid 000100 automatic bit(18) unaligned dcl 281 set ref 287* 289 290 291 299* work_area_ptr 6 based pointer level 2 dcl 1-6 set ref 205* 206 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. VRM_OPEN_INFO_VERSION_1 internal static char(8) initial unaligned dcl 2-27 substr builtin function dcl 372 voi_no_of_index_collections automatic fixed bin(17,0) dcl 2-29 vrm_open_info_ptr automatic pointer dcl 2-28 NAMES DECLARED BY EXPLICIT CONTEXT. Exit 000170 constant label dcl 72 ref 333 create_and_link_oid_section 000640 constant entry internal dcl 212 ref 55 create_com_segment 000560 constant entry internal dcl 189 ref 47 error 001215 constant entry internal dcl 327 ref 112 114 116 121 163 196 get_open_info_ptr 000224 constant entry external dcl 95 get_open_relations 000434 constant entry external dcl 155 get_opening_id 000037 constant entry external dcl 28 link 000734 constant entry internal dcl 252 ref 61 149 remove_opening 000354 constant entry external dcl 128 search_for_uid 001155 constant entry internal dcl 310 ref 53 set_open_info_ptr 000175 constant entry external dcl 74 unlink 001033 constant entry internal dcl 277 ref 57 148 vrm_open_man 000023 constant entry external dcl 7 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1416 1442 1227 1426 Length 1714 1227 24 235 166 4 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME vrm_open_man 147 external procedure is an external procedure. create_com_segment internal procedure shares stack frame of external procedure vrm_open_man. create_and_link_oid_section internal procedure shares stack frame of external procedure vrm_open_man. link 72 internal procedure enables or reverts conditions. on unit on line 260 64 on unit unlink 73 internal procedure enables or reverts conditions. on unit on line 285 64 on unit search_for_uid internal procedure shares stack frame of external procedure vrm_open_man. error internal procedure shares stack frame of external procedure vrm_open_man. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 new_oid_section_ptr vrm_open_man 000012 INTERNAL_VRM_COM_PTR vrm_open_man STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME link 000100 temp_hold link unlink 000100 walk_oid unlink 000101 found unlink vrm_open_man 000100 vrm_com_ptr vrm_open_man 000102 vrm_relation_list_ptr vrm_open_man 000104 VRM_RELATION_LIST_VERSION_1 vrm_open_man 000106 vrl_number_of_openings vrm_open_man 000107 i vrm_open_man 000110 opening_id vrm_open_man 000111 oid vrm_open_man 000112 oid_entry_ptr vrm_open_man 000114 quit_signaled vrm_open_man 000130 code create_com_segment 000140 entry_size create_and_link_oid_section 000141 i create_and_link_oid_section 000142 prev_oid create_and_link_oid_section 000152 found search_for_uid THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_int_this return signal enable ext_entry int_entry alloc_based empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_temp_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_opening sys_info$max_seg_size vrm_data_$oid_slots_per_section LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 14 000016 7 000022 7 000031 28 000032 47 000052 49 000061 53 000063 54 000074 55 000077 56 000103 57 000107 58 000121 59 000126 60 000131 61 000133 62 000146 63 000147 65 000153 66 000156 67 000162 68 000164 70 000167 72 000170 74 000171 89 000203 90 000206 91 000214 93 000217 95 000220 112 000237 113 000252 114 000255 115 000271 116 000277 121 000327 122 000344 124 000347 126 000350 128 000351 142 000362 143 000365 144 000371 146 000374 147 000375 148 000377 149 000412 151 000425 153 000427 155 000430 163 000445 164 000460 166 000463 167 000464 168 000467 169 000472 170 000477 171 000503 172 000506 174 000507 175 000522 176 000523 177 000526 178 000530 179 000535 180 000541 181 000544 182 000547 183 000552 185 000553 186 000556 187 000557 189 000560 195 000561 196 000606 197 000612 201 000615 202 000617 203 000620 204 000621 205 000625 206 000627 208 000637 212 000640 225 000641 229 000652 230 000653 232 000655 233 000656 234 000665 235 000666 236 000671 237 000676 238 000701 239 000702 240 000704 241 000706 243 000710 244 000715 246 000726 248 000732 252 000733 259 000741 260 000743 262 000764 263 000771 264 000776 265 001006 266 001016 267 001020 269 001022 270 001023 271 001025 272 001026 275 001031 277 001032 284 001040 285 001042 287 001063 288 001070 289 001071 290 001076 291 001103 292 001111 293 001113 295 001124 296 001131 299 001140 300 001143 302 001144 303 001145 304 001150 305 001151 308 001154 310 001155 317 001157 318 001164 319 001165 320 001177 321 001202 322 001210 323 001213 325 001214 327 001215 331 001217 333 001221 ----------------------------------------------------------- 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