COMPILATION LISTING OF SEGMENT bjm_get_journal_status Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/08/85 1137.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* A subroutine interface to before (image) journal manager to return 10*information about a selected journal. This subroutine will return either 11*information about a single journal (if p_dir and p_entry are non-null 12*strings), from the journals in the PPT (if p_dir is null and 13*p_entry = "process"), or will return information from the PST (if p_dir 14*is null and p_entry = "system"). When specifying that information from 15*a single journal be obtained, the journal can be currently unused, in 16*which case its info will come from its header. when a journal is in use, 17*its information will come from the per system table entry, which is really 18*the "most recent" copy of the header. Instead of placing the info in a 19*caller provided location, we expect to find an area in which we can 20*allocate the information structure ourselves. 21**/ 22 23 /* HISTORY: 24*Written by M. Pandolf, 04/13/83. 25*Modified: 26*04/13/83 by M. Pandolf: to bypass compiler bug when copying pste. 27*04/15/83 by M. Pandolf: to add metering parameter. 28*07/01/83 by M. Pandolf: to specify process or system openings. 29*10/01/83 by M. Pandolf: to validate p_area_ptr before use. 30*11/01/83 by M. Pandolf: to only allow entrynames ending in ".bj". 31*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 32* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 33*01/06/84 by M. Pandolf: modified jan 1984 by M. Pandolf to not check 34* p_entry if p_dir is null. 35*06/11/84 by Lee Baldwin: Renamed dm_error_$bj_header_bad to $bj_bad_header. 36*11/30/84 by Maggie Sharpe: to use ERROR_RETURN technology; to set/reset 37* validation level around calls to file_manager_. 38*02/13/85 by Lee A. Newcomb: Fixed to return error_table_$null_info_ptr 39* instead of $argerr if area_ptr is null; fixed RETURN_WHOLE_PST to 40* check for "e" access to dm_admin_gate_; fixed up declarations and 41* format, and use FINISH, etc. procs. 42*03/19/85 by Steve Herbst: Fixed to initialize bjm_data_$bj_code. 43**/ 44 45 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 46 47 bjm_get_journal_status: 48 procedure (p_dir, p_entry, p_area_ptr, p_bj_status_ptr, 49 p_bj_global_meters_ptr, p_code); 50 51 52 /* DECLARATIONS */ 53 54 /* Parameter */ 55 dcl ( 56 p_dir char (*), 57 p_entry char (*), 58 p_area_ptr pointer, 59 p_bj_status_ptr pointer, 60 p_bj_global_meters_ptr pointer, 61 p_code fixed bin (35) 62 ) parameter; 63 64 /* Automatic */ 65 dcl ( 66 area_ptr pointer, 67 bj_dir char (168), 68 bj_entry char (32), 69 bj_ix fixed bin, 70 bj_pst_dir char (168) init (""), 71 bj_pst_entry char (32) init (""), 72 bj_uid bit (36) aligned init (NULL_ID), 73 bjm_clean_up_needed bit (1) aligned init (""b), 74 clean_up_started_freeing bit (1) aligned init (""b), 75 /* for CLEAN_UP */ 76 code fixed bin (35) init (0), 77 current_ring fixed bin (3) init (-1), 78 dm_admin_gate_access_bin fixed bin (5) init (N_ACCESS_BIN), 79 dm_admin_gate_dir char (168) init (""), 80 dm_admin_gate_dir_length fixed bin init (0), 81 dm_admin_gate_ptr ptr init (null), 82 fm_oid bit (36) aligned init (NULL_ID), 83 fm_uid bit (36) aligned init (NULL_ID), 84 journal_info_ix fixed bin, 85 ppt_ix fixed bin, 86 pst_ix fixed bin, 87 saved_level fixed bin init (-1), 88 1 my_bj_pste aligned like bj_pste 89 ) automatic; 90 91 /* Based */ 92 dcl caller_supplied_area area based (area_ptr); 93 94 /* Builtin */ 95 dcl (addr, bit, codeptr, length, null, ptr, reverse, rtrim, size, substr, 96 unspec) builtin; 97 98 /* Condition */ 99 dcl cleanup condition; 100 101 /* Constant */ 102 dcl ( 103 MY_NAME char (32) 104 init ("bjm_get_journal_status"), 105 CHECK_FOR_BJM_RECURSION bit (1) aligned init ("1"b), 106 DM_ADMIN_GATE_NAME char (32) init ("dm_admin_gate_"), 107 DONT_CHECK_FOR_BJM_RECURSION bit (1) aligned init ("0"b), 108 NULL_ID bit (36) aligned init ((36)"0"b) 109 ) internal static options (constant); 110 111 /* Entry */ 112 dcl ( 113 bj_ci_zero$get_bj_uid entry (bit (36) aligned) 114 returns (bit (36)), 115 bj_ci_zero$get_header entry (bit (36) aligned, ptr, 116 fixed bin), 117 bj_ci_zero$get_pf_uid entry (bit (36) aligned) 118 returns (bit (36)), 119 bj_cleanup_tables$handler entry (fixed bin (35)), 120 bj_pst_lock entry (), 121 bj_pst_lock$unlock entry (), 122 bj_pst_search entry (bit (36) aligned) returns (ptr), 123 cu_$level_set entry (fixed bin), 124 cu_$level_get entry (fixed bin), 125 file_manager_$close entry (bit (36) aligned, 126 fixed bin (35)), 127 file_manager_$open entry (char (*), char (*), 128 bit (36) aligned, fixed bin (35)), 129 get_ring_ entry () returns (fixed bin (3)), 130 get_group_id_ entry () returns (char (32)), 131 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, 132 char (*), fixed bin (35)), 133 hcs_$get_user_effmode entry (char (*), char (*), char (*), 134 fixed bin, fixed bin (5), 135 fixed bin (35)), 136 hcs_$make_ptr entry (ptr, char (*), char (*), ptr, 137 fixed bin (35)) 138 ) external; 139 140 /* External */ 141 dcl ( 142 ( 143 bjm_data_$bj_ppt_ptr, 144 bjm_data_$bj_pst_ptr 145 ) pointer, 146 ( 147 dm_error_$bj_recursive_invoc, 148 dm_error_$bj_bad_header, 149 dm_error_$bj_invalid_name, 150 error_table_$badpath, 151 error_table_$not_privileged, 152 error_table_$null_info_ptr 153 ) fixed bin (35) 154 ) external static; 155 156 /* Static */ 157 158 /* END OF DECLARATIONS */ 159 160 COPY_AND_INIT_PARAMETERS: 161 do; 162 bj_dir = p_dir; 163 bj_entry = p_entry; 164 area_ptr = p_area_ptr; 165 p_bj_status_ptr = null (); 166 p_bj_global_meters_ptr = null (); 167 p_code = 0; 168 end COPY_AND_INIT_PARAMETERS; 169 170 171 PARTIALLY_VALIDATE_INPUT_PARAMETERS: 172 do; 173 if p_area_ptr = null () then /* must have a place to put info */ 174 call ERROR_RETURN (error_table_$null_info_ptr); 175 176 if p_dir ^= "" then 177 if ^IS_VALID_BJ_NAME (bj_entry) then 178 call ERROR_RETURN (dm_error_$bj_invalid_name); 179 end PARTIALLY_VALIDATE_INPUT_PARAMETERS; 180 181 182 SETUP_FOR_NON_STANDARD_EXIT: 183 do; 184 call cu_$level_get (saved_level); 185 current_ring = get_ring_ (); 186 187 call SET_BJM_DATA_ERROR_HANDLING_VALUES (NONLOCAL_ERROR_EXIT, MY_NAME, 188 CHECK_FOR_BJM_RECURSION); 189 190 bj_status_ptr = null (); 191 bj_global_meters_ptr = null (); 192 on cleanup call CLEAN_UP (); 193 194 end SETUP_FOR_NON_STANDARD_EXIT; 195 196 197 GET_STATUS: 198 do; 199 if bj_dir = "" then 200 if (bj_entry = "system") | (bj_entry = "") then 201 call RETURN_WHOLE_PST (); 202 else if bj_entry = "process" then 203 call RETURN_MINE_FROM_PST (); 204 else call ERROR_RETURN (error_table_$badpath); 205 206 else if bj_entry = "" then 207 call ERROR_RETURN (error_table_$badpath); 208 209 else call RETURN_ONE_PSTE (); 210 211 p_bj_status_ptr = bj_status_ptr; 212 end GET_STATUS; 213 214 215 GET_METERS: 216 do; 217 allocate bj_global_meters set (bj_global_meters_ptr) 218 in (caller_supplied_area); 219 220 bj_global_meters.meters = bjm_data_$bj_pst_ptr -> bj_pst.meters; 221 bj_global_meters.time_of_bootload = 222 bjm_data_$bj_pst_ptr -> bj_pst.time_of_bootload; 223 p_bj_global_meters_ptr = bj_global_meters_ptr; 224 end GET_METERS; 225 226 227 call FINISH (); 228 229 MAIN_RETURN: 230 return; 231 232 /* end bjm_get_journal_status; */ 233 234 NONLOCAL_ERROR_EXIT: 235 call ERROR_RETURN (bjm_data_$bj_code); 236 237 FINISH: 238 proc (); 239 240 call SET_BJM_DATA_ERROR_HANDLING_VALUES (bjm_data_$bj_default_error_label, 241 "", DONT_CHECK_FOR_BJM_RECURSION); 242 call cu_$level_set (saved_level); 243 244 return; 245 246 end FINISH; 247 248 ERROR_RETURN: 249 proc (er_p_code); 250 251 dcl er_p_code fixed bin (35) parameter; 252 253 call CLEAN_UP (); 254 p_code = er_p_code; 255 goto MAIN_RETURN; 256 257 end ERROR_RETURN; 258 259 CLEAN_UP: 260 proc (); 261 262 /* Try to free any allocated for the status or metering */ 263 /* structures. We guarantee we can never free more than */ 264 /* once as errors should be few. Also make sure any files */ 265 /* openings we did are closed and cleanup the BJ tables. */ 266 267 if fm_oid ^= ""b then /* we opened */ 268 call file_manager_$close (fm_oid, 0); 269 270 if ^clean_up_started_freeing then /* in case called >1 times */ 271 CLEAN_UP_FREE_STRUCTURES: 272 do; 273 clean_up_started_freeing = "1"b; 274 if bj_status_ptr ^= null () then 275 free bj_status_ptr -> bj_status in (caller_supplied_area); 276 if bj_global_meters_ptr ^= null () then 277 free bj_global_meters_ptr 278 -> bj_global_meters in (caller_supplied_area); 279 end CLEAN_UP_FREE_STRUCTURES; 280 281 if bjm_clean_up_needed then 282 call bj_cleanup_tables$handler (0); 283 284 call FINISH (); 285 286 return; 287 288 end CLEAN_UP; 289 290 SET_BJM_DATA_ERROR_HANDLING_VALUES: 291 proc (sbdehv_p_error_exit, sbdehv_p_operation, 292 sbdehv_p_check_for_recursive_invocation); 293 294 /* This internal procedure centralizes the setting of the BJM global */ 295 /* error values in bjm_data_. It is called near the beginning of */ 296 /* this module, and in the FINISH internal procedure. ONLY THE FIRST */ 297 /* OF THESE CALLS SHOULD ASK FOR DETECTION OF A RECURSIVE INVOCATION */ 298 /* OF THE BEFORE JOURNAL MANAGER, if the other calls did, we could */ 299 /* end up getting a recursive call ERROR_RETURN, CLEAN_UP, FINISH, */ 300 /* this proc, etc. */ 301 302 dcl ( 303 sbdehv_p_error_exit label variable, 304 sbdehv_p_operation char (*), 305 sbdehv_p_check_for_recursive_invocation 306 bit (1) aligned 307 ) parameter; 308 309 if sbdehv_p_check_for_recursive_invocation then 310 if bjm_data_$bj_operation ^= "" then 311 call ERROR_RETURN (dm_error_$bj_recursive_invoc); 312 313 bjm_clean_up_needed = "1"b; 314 bjm_data_$bj_exit_err = sbdehv_p_error_exit; 315 bjm_data_$bj_operation = sbdehv_p_operation; 316 bjm_data_$bj_code = 0; 317 318 return; 319 320 end SET_BJM_DATA_ERROR_HANDLING_VALUES; 321 322 IS_VALID_BJ_NAME: 323 proc (ivbn_p_bj_name) reducible returns (bit (1) aligned); 324 325 dcl ivbn_p_bj_name char (*) parameter; 326 327 return ((length (rtrim (ivbn_p_bj_name)) < 33) 328 & (substr (reverse (rtrim (ivbn_p_bj_name)), 1, 3) = "jb.")); 329 330 end IS_VALID_BJ_NAME; 331 332 RETURN_ONE_PSTE: 333 procedure (); 334 335 call cu_$level_set ((current_ring)); 336 call file_manager_$open (bj_dir, bj_entry, fm_oid, code); 337 call cu_$level_set (saved_level); 338 339 if fm_oid = NULL_ID then 340 call ERROR_RETURN (code); 341 342 CHECK_FILE_AND_BJ_UIDS: 343 do; 344 fm_uid = bj_ci_zero$get_pf_uid (fm_oid); 345 bj_uid = bj_ci_zero$get_bj_uid (fm_oid); 346 347 if fm_uid ^= bj_uid then do; 348 call cu_$level_set ((current_ring)); 349 call file_manager_$close (fm_oid, code); 350 call cu_$level_set (saved_level); 351 call ERROR_RETURN (dm_error_$bj_bad_header); 352 end; 353 end CHECK_FILE_AND_BJ_UIDS; 354 355 /* the selected file seems to be a journal. obtain info on it */ 356 357 bj_pn_table_ptr = 358 ptr (bjm_data_$bj_pst_ptr, 359 bjm_data_$bj_pst_ptr -> bj_pst.pn_table_offset); 360 361 call bj_pst_lock (); 362 363 bj_pste_ptr = bj_pst_search (bj_uid); 364 if bj_pste_ptr ^= null () then 365 JOURNAL_IS_ACTIVE: 366 do; 367 my_bj_pste = bj_pste; 368 bj_pst_dir = bj_pn_table (bj_pste.bj_ix).dir; 369 bj_pst_entry = bj_pn_table (bj_pste.bj_ix).entry; 370 end JOURNAL_IS_ACTIVE; 371 372 call bj_pst_lock$unlock (); /* don't wait for getting inactive info */ 373 374 if bj_pste_ptr = null () then 375 INACTIVE_BJ_GET_INFO_FROM_HEADER: 376 do; 377 call bj_ci_zero$get_header (fm_oid, addr (my_bj_pste), size (my_bj_pste)) 378 ; 379 bj_pst_dir = bj_dir; 380 bj_pst_entry = bj_entry; 381 my_bj_pste.active = "0"b; 382 end INACTIVE_BJ_GET_INFO_FROM_HEADER; 383 384 CLOSE_BJ_FILE: 385 do; 386 call cu_$level_set ((current_ring)); 387 call file_manager_$close (fm_oid, code); 388 call cu_$level_set (saved_level); 389 end CLOSE_BJ_FILE; 390 391 COPY_INFO_TO_USER_AREA: 392 do; 393 bj_status_n_journals = 1; 394 allocate bj_status set (bj_status_ptr) in (caller_supplied_area); 395 396 bj_status.journal (1).dir = bj_pst_dir; 397 bj_status.journal (1).entry = bj_pst_entry; 398 unspec (bj_status.journal (1).system_info) = unspec (my_bj_pste); 399 end COPY_INFO_TO_USER_AREA; 400 401 return; 402 403 end RETURN_ONE_PSTE; 404 405 RETURN_WHOLE_PST: 406 procedure (); 407 408 /* We do not guarantee totally exact info, particularly in */ 409 /* case a journal was removed from use. We will not return */ 410 /* info on more journals than when we first examined the */ 411 /* bj_pst as we read the PST without it locked. We may */ 412 /* get a journal with some info invalid if we pick it up */ 413 /* while it was being removed from use by another process. */ 414 415 VALIDATE_ADMINISTRATIVE_ACCESS: 416 do; 417 call hcs_$make_ptr (codeptr (bjm_get_journal_status), DM_ADMIN_GATE_NAME, 418 "", dm_admin_gate_ptr, code); 419 if dm_admin_gate_ptr = null () then 420 call ERROR_RETURN (code); 421 call hcs_$fs_get_path_name (dm_admin_gate_ptr, dm_admin_gate_dir, 422 dm_admin_gate_dir_length, (32)" " /* don't care what ename is */, 423 code); 424 if code ^= 0 then 425 call ERROR_RETURN (code); 426 call hcs_$get_user_effmode ( 427 substr (dm_admin_gate_dir, 1, dm_admin_gate_dir_length), 428 DM_ADMIN_GATE_NAME, get_group_id_ (), saved_level, 429 dm_admin_gate_access_bin, code); 430 if code ^= 0 then 431 call ERROR_RETURN (code); 432 if substr (bit (dm_admin_gate_access_bin), 2, 3) & E_ACCESS ^= E_ACCESS 433 then 434 call ERROR_RETURN (error_table_$not_privileged); 435 end VALIDATE_ADMINISTRATIVE_ACCESS; 436 437 GET_SYSTEM_TABLES_PTRS: 438 do; 439 bj_pst_ptr = bjm_data_$bj_pst_ptr; 440 bj_pn_table_ptr = ptr (bj_pst_ptr, bj_pst.pn_table_offset); 441 end GET_SYSTEM_TABLES_PTRS; 442 443 ALLOCATE_STATUS_INFO_STORAGE: 444 do; 445 bj_status_n_journals = bj_pst.n_entries_used; 446 allocate bj_status set (bj_status_ptr) in (caller_supplied_area); 447 end ALLOCATE_STATUS_INFO_STORAGE; 448 449 /* NOTE: we don't lock the pst */ 450 journal_info_ix = 0; 451 COPY_PST: 452 do pst_ix = 1 to bj_pst.highest_ix_used 453 while (journal_info_ix <= bj_status.n_journals); 454 455 bj_pste_ptr = addr (bj_pst.e (pst_ix)); 456 if (bj_pste.version = BJ_PSTE_VERSION_2) & bj_pste.active then do; 457 bj_ix = bj_pste.bj_ix; 458 journal_info_ix = journal_info_ix + 1; 459 bj_status.journal (journal_info_ix).dir = bj_pn_table (bj_ix).dir; 460 bj_status.journal (journal_info_ix).entry = bj_pn_table (bj_ix).entry; 461 unspec (bj_status.journal (journal_info_ix).system_info) = 462 unspec (bj_pste); 463 end; 464 465 end COPY_PST; 466 467 /* Adjust the n_journals count in the return structure. */ 468 bj_status.n_journals = journal_info_ix; 469 470 return; 471 472 end RETURN_WHOLE_PST; 473 474 RETURN_MINE_FROM_PST: 475 procedure (); 476 477 /* Return info about only those BJ's the process is currently using. */ 478 /* As in RETURN_WHOLE_PST, we do not lock the bj_pst. */ 479 480 GET_SYSTEM_TABLE_POINTERS: 481 do; 482 bj_ppt_ptr = bjm_data_$bj_ppt_ptr; 483 bj_pst_ptr = bjm_data_$bj_pst_ptr; 484 bj_pn_table_ptr = ptr (bj_pst_ptr, bj_pst.pn_table_offset); 485 end GET_SYSTEM_TABLE_POINTERS; 486 487 ALLOCATE_STATUS_INFO_STORAGE: 488 do; 489 bj_status_n_journals = bj_ppt.n_entries_used; 490 allocate bj_status set (bj_status_ptr) in (caller_supplied_area); 491 end ALLOCATE_STATUS_INFO_STORAGE; 492 493 /* NOTE: we don't lock the pst */ 494 journal_info_ix = 0; 495 COPY_MY_ACTIVE_JOURNALS: 496 do ppt_ix = 1 to bj_ppt.max_n_entries 497 while (journal_info_ix <= bj_status.n_journals); 498 499 if bj_ppt.e (ppt_ix).version = BJ_PPTE_VERSION_1 then do; 500 bj_pste_ptr = bj_ppt.e (ppt_ix).bj_pste_ptr; 501 502 if (bj_pste.version = BJ_PSTE_VERSION_2) & bj_pste.active then do; 503 bj_ix = bj_pste.bj_ix; 504 journal_info_ix = journal_info_ix + 1; 505 bj_status.journal (journal_info_ix).dir = bj_pn_table (bj_ix).dir; 506 bj_status.journal (journal_info_ix).entry = 507 bj_pn_table (bj_ix).entry; 508 unspec (bj_status.journal (journal_info_ix).system_info) = 509 unspec (bj_pste); 510 end; 511 end; 512 end COPY_MY_ACTIVE_JOURNALS; 513 514 /* Adjust the n_journals count in the return structure */ 515 bj_status.n_journals = journal_info_ix; 516 517 return; 518 519 end RETURN_MINE_FROM_PST; 520 1 1 /* BEGIN INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 1 2 1 3 /* Originally found in before journal primitives written by */ 1 4 /* A. Bensoussan. Gathered into an include file for ease of use. */ 1 5 /* See the bjm_data_.alm source for details of use. */ 1 6 1 7 /* HISTORY: 1 8*Written by Mike Pandolf, 07/14/82. 1 9*Modified: 1 10*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 1 11* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 1 12**/ 1 13 1 14 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 1 15 dcl bjm_data_$bj_operation char (32) external static; 1 16 1 17 dcl bjm_data_$bj_exit_err label variable external; 1 18 1 19 dcl bjm_data_$bj_code fixed bin (35) external; 1 20 1 21 dcl bjm_data_$bj_default_error_label label external static; 1 22 1 23 1 24 /* END INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 521 522 2 1 /* BEGIN INCLUDE FILE dm_bj_status.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* 2 5* This include is used to pass the status of a before journal or the 2 6* BJ meters to users. Any program using this include file must also 2 7* include dm_bj_pst.incl.pl1 and dm_bj_pste.incl.pl1. 2 8**/ 2 9 2 10 /* HISTORY: 2 11*Written by Mike Pandolf, 04/12/83. 2 12*Modified: 2 13*02/22/85 by Lee A. Newcomb: Added a description section and fixed the hisotry 2 14* section's format. 2 15**/ 2 16 2 17 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 2 18 2 19 dcl bj_status_n_journals fixed bin; 2 20 dcl bj_status_ptr pointer; 2 21 2 22 dcl 1 bj_status aligned based (bj_status_ptr), 2 23 2 n_journals fixed bin, 2 24 2 journal aligned 2 25 dim (bj_status_n_journals 2 26 refer (bj_status.n_journals)), 2 27 3 dir char (168), 2 28 3 entry char (32), 2 29 3 system_info aligned like bj_pste; 2 30 2 31 dcl bj_global_meters_ptr pointer; 2 32 2 33 dcl 1 bj_global_meters aligned based (bj_global_meters_ptr), 2 34 2 time_of_bootload fixed bin (71), 2 35 2 meters aligned like bj_pst.meters; 2 36 2 37 /* END INCLUDE FILE dm_bj_status.incl.pl1 */ 523 524 3 1 /* BEGIN INCLUDE FILE: dm_bj_ppt.incl.pl1 */ 3 2 /* 3 3*Layout of the per-process before journal table and entries. 3 4* 3 5*Written by Andre Bensoussan June/July 1982 3 6*Modified: 3 7*09/29/82 by Lee A. Newcomb: To make two default oid cells, pad ppte's 3 8* to account for all used space, and use dm_system_data_ for 3 9* determining dimension of bj_ppt.e. 3 10**/ 3 11 /* format: style4,indattr,idind33,^indcomtxt */ 3 12 3 13 dcl BJ_PPT_VERSION_1 fixed bin int static options (constant) init (1); 3 14 dcl BJ_PPTE_VERSION_1 fixed bin int static options (constant) init (1); 3 15 3 16 dcl bj_ppt_ptr ptr; 3 17 3 18 dcl 1 bj_ppt based (bj_ppt_ptr) aligned, 3 19 2 version fixed bin, 3 20 2 max_n_entries fixed bin, /* should be = dm_system_data_$bj_max_n_journals */ 3 21 2 n_entries_used fixed bin, /* # of BJs open in this process */ 3 22 2 highest_ix_used fixed bin, /* max. # of BJs ever opened in this process */ 3 23 2 default_bj, /* for selecting a txn def. BJ by write_before_mark protocol */ 3 24 3 user_set_oid bit (36), /* explicit user setting via $set_default_bj */ 3 25 3 last_opened_oid bit (36), /* implicit if no user setting, set by open and close */ 3 26 /* if both zero, use system default BJ */ 3 27 2 process_id bit (36), /* so we don't have to keep calling for it. */ 3 28 2 process_ix fixed bin, /* index into bj_check_in_table */ 3 29 2 mod_list_area (100) fixed bin (35), /* for keeping track of ppt mods, not curr. used */ 3 30 3 31 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_ppt.max_n_entries)) 3 32 like bj_ppte; /* an entry for each BJ open in this process */ 3 33 /* always make sure bj_ppt.e is on a even word boundary */ 3 34 3 35 /* now specify the format of each per-process BJ table entry */ 3 36 3 37 dcl bj_ppte_ptr ptr; 3 38 3 39 dcl 1 bj_ppte based (bj_ppte_ptr) aligned, 3 40 2 version fixed bin, /* better be the same for all entries in a bj_ppt */ 3 41 2 bj_uid bit (36), /* UID of the BJ page file */ 3 42 2 pf_oid bit (36), /* OID of the BJ page file */ 3 43 2 n_opening fixed bin, /* how many openings this process has done for this BJ */ 3 44 2 bj_pste_ptr ptr, /* "link" to per-system BJ table entry */ 3 45 2 open_time fixed bin (71); /* used to fill in bj_ppt.default_bj.last_opened_oid */ 3 46 /* if the last opened BJ is closed */ 3 47 3 48 /* END INCLUDE FILE: bj_ppt.incl.pl1 */ 525 526 4 1 /* BEGIN INCLUDE FILE: dm_bj_pst.incl.pl1 */ 4 2 /* 4 3*Layout of the before journal per-system table header and BJ table entries. 4 4* 4 5*Written by Andre Bensoussan 06-15-1982 4 6*Modified: 4 7*09/29/82 by Lee A. Newcomb: To use dm_system_data_ for determining 4 8* dimension of bj_pst.e and force bj_pst.mod_list_area and 4 9* bj_pst.e to even word boundaries. 4 10*04/27/82 by M. Pandolf: To add meter space by cutting away from mod_list_area. 4 11**/ 4 12 /* format: style4,indattr,idind33,^indcomtxt */ 4 13 4 14 dcl BJ_PST_VERSION_1 fixed bin internal static options (constant) init (1); 4 15 4 16 dcl bj_pst_ptr ptr; 4 17 4 18 dcl 1 bj_pst based (bj_pst_ptr) aligned, 4 19 2 version fixed bin, 4 20 2 pad1 bit (36), 4 21 2 lock, 4 22 3 pid bit (36), /* process_id holding lock */ 4 23 3 event bit (36), 4 24 2 time_of_bootload fixed bin (71), /* for ease of access */ 4 25 2 max_n_entries fixed bin, /* as determined from dm_system_data_$bj_max_n_journals */ 4 26 2 n_entries_used fixed bin, /* current # of BJs open on the system */ 4 27 2 highest_ix_used fixed bin, /* max. # of BJs that has ever been open of the system */ 4 28 2 pn_table_offset fixed bin (18) uns, /* relative offset of bj_pn_table in bj_pst seg. */ 4 29 2 check_in_table_offset fixed bin (18) uns, /* ditto for bj_check_in_table */ 4 30 2 buffer_table_offset fixed bin (18) uns, /* ditto for where our BJ buffers are located */ 4 31 2 max_n_buffers fixed bin, /* must be <= to max_n_entries */ 4 32 2 pad2 bit (36), /* force next on even word boundary */ 4 33 2 meters, /* dim (50) fixed bin (71), */ 4 34 3 n_calls_begin_txn fixed bin (71), /* meter (1) */ 4 35 3 n_calls_before_image fixed bin (71), /* meter (2) */ 4 36 3 n_calls_abort fixed bin (71), /* meter (3) */ 4 37 3 n_calls_commit fixed bin (71), /* meter (4) */ 4 38 3 n_calls_rb_mark fixed bin (71), /* meter (5) */ 4 39 3 n_calls_fm_pc_mark fixed bin (71), /* meter (6) */ 4 40 3 n_calls_fm_rbh fixed bin (71), /* meter (7) */ 4 41 3 n_calls_rollback fixed bin (71), /* meter (8) */ 4 42 3 meter dim (9:50) fixed bin (71), /* meter (9) - meter (50) */ 4 43 2 mod_list_area (100) fixed bin (35), /* for keeping track of pst mods */ 4 44 4 45 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_pst.max_n_entries)) 4 46 like bj_pste; /* per system BJ table entries */ 4 47 4 48 4 49 /* END INCLUDE FILE: dm_bj_pst.incl.pl1 */ 527 528 5 1 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 5 2 5 3 /* DESCRIPTION 5 4* 5 5* Layout of the per-system before journal table 5 6* entries. This structure is used to contain information 5 7* about a before journal active in a running DMS. It is 5 8* currently also used as the header of a before journal 5 9* (see dm_bj_header.incl.pl1). Version changes to this 5 10* structure require either automatic conversion to be set 5 11* up, or users to be told to re-create their journals. 5 12* 5 13* Currently, a bj_pste must be 64 words long; any 5 14* future changes must at least make sure a bj_pste is an 5 15* even # of words for the alignment of some of its 5 16* elements. 5 17**/ 5 18 5 19 /* HISTORY: 5 20* 5 21*Written by Andre Bensoussan, 06/15/82. 5 22*Modified: 5 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 5 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 5 25* alignments. 5 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 5 27* "n_bi_still_unsafe", and "n_bi_being_saved". 5 28*02/08/83 by M. Pandolf: to add append_state structure. 5 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 5 30*04/27/83 by M. Pandolf: to add meter structure at end. 5 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 5 32* value of 2; fixed references to page files or PF's; fixed format 5 33* of description and history sections. 5 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 5 35* expanded on the description for future generations (no 5 36* version was made). 5 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 5 38* n_txn_storage_limit_hits (again without a version change). 5 39**/ 5 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 5 41 5 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 5 43 options (constant) init (2); 5 44 5 45 dcl bj_pste_ptr ptr; 5 46 5 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 5 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 5 49 2 version fixed bin, 5 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 5 51 2 lock aligned, 5 52 3 pid bit (36), /* process ID of lock owner */ 5 53 3 event bit (36), 5 54 2 bj_uid bit (36), /* UID of BJ file */ 5 55 2 ci_size fixed bin, /* In number of bytes */ 5 56 2 max_size fixed bin, /* In number of ci's */ 5 57 2 active bit (1) aligned, /* 0 means journal not being used */ 5 58 2 time_header_updated fixed bin (71), 5 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 5 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 5 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 5 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 5 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 5 64 2 last_ci_info aligned, 5 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 5 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 5 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 5 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 5 69 /* .. completely on disk */ 5 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 5 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 5 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 5 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 5 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 5 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 5 76 2 cl aligned, /* Circular List */ 5 77 3 origin_ci fixed bin (24) uns, 5 78 3 lowest_ci fixed bin (24) uns, 5 79 3 highest_ci fixed bin (24) uns, 5 80 3 number_ci fixed bin (24) uns, 5 81 2 append_state aligned, 5 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 5 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 5 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 5 85 3 pending_last_element_id bit (36), /* last element id after append done */ 5 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 5 87 2 pad_to_even_word1 bit (36) aligned, 5 88 2 meters aligned, /* dim (10) fixed bin (71), */ 5 89 3 n_bi_written fixed bin (71), /* meter (1) */ 5 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 5 91 3 n_journal_full fixed bin (71), /* meter (3) */ 5 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 5 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 5 94 3 n_txn_started fixed bin (71), /* meter (6) */ 5 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 5 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 5 97 3 meter (9:10) fixed bin (71), 5 98 /* meter (9) - meter (10) */ 5 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 5 100 5 101 5 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 529 530 6 1 /* BEGIN INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 6 2 /* 6 3*This vector relates a BJ UID to its pathname. 6 4* 6 5*Written by Andre Bensoussan June/July 1982 6 6*Modified: 6 7*09/29/82 by Lee A. Newcomb: To make word aligned, convert to use 6 8* dm_system_data_$bj_max_n_journals, and store max_n_entries 6 9* for use with crash recovery. 6 10**/ 6 11 /* format: style4,indattr,idind33,^indcomtxt */ 6 12 6 13 dcl bj_pn_table_ptr ptr; 6 14 6 15 dcl 1 bj_pn_table based (bj_pn_table_ptr) aligned, 6 16 2 max_n_entries fixed bin, /* know how long the table is for crash recovery */ 6 17 2 bj_path_to_uid_relation dim (dm_system_data_$bj_max_n_journals refer (bj_pn_table.max_n_entries)), 6 18 3 dir char (168), 6 19 3 entry char (32), 6 20 3 bj_uid bit (36); 6 21 6 22 /* END INCLUDE FILE: dm_bj_pn_table.incl.pl1 */ 531 532 7 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 7 2* 7 3* Values for the "access mode" argument so often used in hardcore 7 4* James R. Davis 26 Jan 81 MCR 4844 7 5* Added constants for SM access 4/28/82 Jay Pattin 7 6* Added text strings 03/19/85 Chris Jones 7 7**/ 7 8 7 9 7 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 7 11 dcl ( 7 12 N_ACCESS init ("000"b), 7 13 R_ACCESS init ("100"b), 7 14 E_ACCESS init ("010"b), 7 15 W_ACCESS init ("001"b), 7 16 RE_ACCESS init ("110"b), 7 17 REW_ACCESS init ("111"b), 7 18 RW_ACCESS init ("101"b), 7 19 S_ACCESS init ("100"b), 7 20 M_ACCESS init ("010"b), 7 21 A_ACCESS init ("001"b), 7 22 SA_ACCESS init ("101"b), 7 23 SM_ACCESS init ("110"b), 7 24 SMA_ACCESS init ("111"b) 7 25 ) bit (3) internal static options (constant); 7 26 7 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 7 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 7 29 7 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 7 31 static options (constant); 7 32 7 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 7 34 static options (constant); 7 35 7 36 dcl ( 7 37 N_ACCESS_BIN init (00000b), 7 38 R_ACCESS_BIN init (01000b), 7 39 E_ACCESS_BIN init (00100b), 7 40 W_ACCESS_BIN init (00010b), 7 41 RW_ACCESS_BIN init (01010b), 7 42 RE_ACCESS_BIN init (01100b), 7 43 REW_ACCESS_BIN init (01110b), 7 44 S_ACCESS_BIN init (01000b), 7 45 M_ACCESS_BIN init (00010b), 7 46 A_ACCESS_BIN init (00001b), 7 47 SA_ACCESS_BIN init (01001b), 7 48 SM_ACCESS_BIN init (01010b), 7 49 SMA_ACCESS_BIN init (01011b) 7 50 ) fixed bin (5) internal static options (constant); 7 51 7 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 533 534 535 536 end bjm_get_journal_status; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1128.0 bjm_get_journal_status.pl1 >spec>on>41-15>bjm_get_journal_status.pl1 521 1 01/07/85 0857.3 dm_bj_global_error_info.incl.pl1 >ldd>include>dm_bj_global_error_info.incl.pl1 523 2 04/05/85 0924.2 dm_bj_status.incl.pl1 >ldd>include>dm_bj_status.incl.pl1 525 3 01/07/85 0857.6 dm_bj_ppt.incl.pl1 >ldd>include>dm_bj_ppt.incl.pl1 527 4 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 529 5 04/05/85 0924.4 dm_bj_pste.incl.pl1 >ldd>include>dm_bj_pste.incl.pl1 531 6 01/07/85 0857.4 dm_bj_pn_table.incl.pl1 >ldd>include>dm_bj_pn_table.incl.pl1 533 7 04/08/85 1113.3 access_mode_values.incl.pl1 >spec>on>41-15>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. BJ_PPTE_VERSION_1 constant fixed bin(17,0) initial dcl 3-14 ref 499 BJ_PSTE_VERSION_2 constant fixed bin(17,0) initial dcl 5-42 ref 456 502 CHECK_FOR_BJM_RECURSION 000026 constant bit(1) initial dcl 102 set ref 187* DM_ADMIN_GATE_NAME 000000 constant char(32) initial unaligned dcl 102 set ref 417* 426* DONT_CHECK_FOR_BJM_RECURSION 000031 constant bit(1) initial dcl 102 set ref 240* E_ACCESS constant bit(3) initial unaligned dcl 7-11 ref 432 432 MY_NAME 000010 constant char(32) initial unaligned dcl 102 set ref 187* NULL_ID constant bit(36) initial dcl 102 ref 65 65 65 339 N_ACCESS_BIN constant fixed bin(5,0) initial dcl 7-36 ref 65 active 7 based bit(1) level 2 in structure "bj_pste" dcl 5-48 in procedure "bjm_get_journal_status" ref 456 502 active 7 000340 automatic bit(1) level 2 in structure "my_bj_pste" dcl 65 in procedure "bjm_get_journal_status" set ref 381* addr builtin function dcl 95 ref 377 377 455 area_ptr 000100 automatic pointer dcl 65 set ref 164* 217 274 276 394 446 490 bit builtin function dcl 95 ref 432 bj_ci_zero$get_bj_uid 000010 constant entry external dcl 112 ref 345 bj_ci_zero$get_header 000012 constant entry external dcl 112 ref 377 bj_ci_zero$get_pf_uid 000014 constant entry external dcl 112 ref 344 bj_cleanup_tables$handler 000016 constant entry external dcl 112 ref 281 bj_dir 000102 automatic char(168) unaligned dcl 65 set ref 162* 199 336* 379 bj_entry 000154 automatic char(32) unaligned dcl 65 set ref 163* 176* 199 199 202 206 336* 380 bj_global_meters based structure level 1 dcl 2-33 set ref 217 276 bj_global_meters_ptr 000452 automatic pointer dcl 2-31 set ref 191* 217* 220 221 223 276 276 bj_ix 000164 automatic fixed bin(17,0) dcl 65 in procedure "bjm_get_journal_status" set ref 457* 459 460 503* 505 506 bj_ix 1 based fixed bin(17,0) level 2 in structure "bj_pste" dcl 5-48 in procedure "bjm_get_journal_status" ref 368 369 457 503 bj_path_to_uid_relation 1 based structure array level 2 dcl 6-15 bj_pn_table based structure level 1 dcl 6-15 bj_pn_table_ptr 000462 automatic pointer dcl 6-13 set ref 357* 368 369 440* 459 460 484* 505 506 bj_ppt based structure level 1 dcl 3-18 bj_ppt_ptr 000454 automatic pointer dcl 3-16 set ref 482* 489 495 499 500 bj_ppte based structure level 1 dcl 3-39 bj_pst based structure level 1 dcl 4-18 bj_pst_dir 000165 automatic char(168) initial unaligned dcl 65 set ref 65* 368* 379* 396 bj_pst_entry 000237 automatic char(32) initial unaligned dcl 65 set ref 65* 369* 380* 397 bj_pst_lock 000020 constant entry external dcl 112 ref 361 bj_pst_lock$unlock 000022 constant entry external dcl 112 ref 372 bj_pst_ptr 000456 automatic pointer dcl 4-16 set ref 439* 440 440 445 451 455 483* 484 484 bj_pst_search 000024 constant entry external dcl 112 ref 363 bj_pste based structure level 1 dcl 5-48 ref 367 461 508 bj_pste_ptr 160 based pointer array level 3 in structure "bj_ppt" dcl 3-18 in procedure "bjm_get_journal_status" ref 500 bj_pste_ptr 000460 automatic pointer dcl 5-45 in procedure "bjm_get_journal_status" set ref 363* 364 367 368 369 374 455* 456 456 457 461 500* 502 502 503 508 bj_status based structure level 1 dcl 2-22 set ref 274 394 446 490 bj_status_n_journals 000446 automatic fixed bin(17,0) dcl 2-19 set ref 393* 394 394 445* 446 446 489* 490 490 bj_status_ptr 000450 automatic pointer dcl 2-20 set ref 190* 211 274 274 394* 396 397 398 446* 451 459 460 461 468 490* 495 505 506 508 515 bj_uid 000247 automatic bit(36) initial dcl 65 set ref 65* 345* 347 363* bjm_clean_up_needed 000250 automatic bit(1) initial dcl 65 set ref 65* 281 313* bjm_data_$bj_code 000074 external static fixed bin(35,0) dcl 1-19 set ref 234* 316* bjm_data_$bj_default_error_label 000076 external static label variable dcl 1-21 set ref 240* bjm_data_$bj_exit_err 000072 external static label variable dcl 1-17 set ref 314* bjm_data_$bj_operation 000070 external static char(32) unaligned dcl 1-15 set ref 309 315* bjm_data_$bj_ppt_ptr 000050 external static pointer dcl 141 ref 482 bjm_data_$bj_pst_ptr 000052 external static pointer dcl 141 ref 220 221 357 357 439 483 caller_supplied_area based area(1024) dcl 92 ref 217 274 276 394 446 490 clean_up_started_freeing 000251 automatic bit(1) initial dcl 65 set ref 65* 270 273* cleanup 000440 stack reference condition dcl 99 ref 192 code 000252 automatic fixed bin(35,0) initial dcl 65 set ref 65* 336* 339* 349* 387* 417* 419* 421* 424 424* 426* 430 430* codeptr builtin function dcl 95 ref 417 417 cu_$level_get 000030 constant entry external dcl 112 ref 184 cu_$level_set 000026 constant entry external dcl 112 ref 242 335 337 348 350 386 388 current_ring 000253 automatic fixed bin(3,0) initial dcl 65 set ref 65* 185* 335 348 386 dir 1 based char(168) array level 3 in structure "bj_pn_table" dcl 6-15 in procedure "bjm_get_journal_status" ref 368 459 505 dir 2 based char(168) array level 3 in structure "bj_status" dcl 2-22 in procedure "bjm_get_journal_status" set ref 396* 459* 505* dm_admin_gate_access_bin 000254 automatic fixed bin(5,0) initial dcl 65 set ref 65* 426* 432 dm_admin_gate_dir 000255 automatic char(168) initial unaligned dcl 65 set ref 65* 421* 426 426 dm_admin_gate_dir_length 000327 automatic fixed bin(17,0) initial dcl 65 set ref 65* 421* 426 426 dm_admin_gate_ptr 000330 automatic pointer initial dcl 65 set ref 65* 417* 419 421* dm_error_$bj_bad_header 000056 external static fixed bin(35,0) dcl 141 set ref 351* dm_error_$bj_invalid_name 000060 external static fixed bin(35,0) dcl 141 set ref 176* dm_error_$bj_recursive_invoc 000054 external static fixed bin(35,0) dcl 141 set ref 309* e 154 based structure array level 2 in structure "bj_ppt" dcl 3-18 in procedure "bjm_get_journal_status" e 326 based structure array level 2 in structure "bj_pst" dcl 4-18 in procedure "bjm_get_journal_status" set ref 455 entry 53 based char(32) array level 3 in structure "bj_pn_table" dcl 6-15 in procedure "bjm_get_journal_status" ref 369 460 506 entry 54 based char(32) array level 3 in structure "bj_status" dcl 2-22 in procedure "bjm_get_journal_status" set ref 397* 460* 506* er_p_code parameter fixed bin(35,0) dcl 251 ref 248 254 error_table_$badpath 000062 external static fixed bin(35,0) dcl 141 set ref 204* 206* error_table_$not_privileged 000064 external static fixed bin(35,0) dcl 141 set ref 432* error_table_$null_info_ptr 000066 external static fixed bin(35,0) dcl 141 set ref 173* file_manager_$close 000032 constant entry external dcl 112 ref 267 349 387 file_manager_$open 000034 constant entry external dcl 112 ref 336 fm_oid 000332 automatic bit(36) initial dcl 65 set ref 65* 267 267* 336* 339 344* 345* 349* 377* 387* fm_uid 000333 automatic bit(36) initial dcl 65 set ref 65* 344* 347 get_group_id_ 000040 constant entry external dcl 112 ref 426 426 get_ring_ 000036 constant entry external dcl 112 ref 185 hcs_$fs_get_path_name 000042 constant entry external dcl 112 ref 421 hcs_$get_user_effmode 000044 constant entry external dcl 112 ref 426 hcs_$make_ptr 000046 constant entry external dcl 112 ref 417 highest_ix_used 10 based fixed bin(17,0) level 2 dcl 4-18 ref 451 ivbn_p_bj_name parameter char unaligned dcl 325 ref 322 327 327 journal 2 based structure array level 2 dcl 2-22 journal_info_ix 000334 automatic fixed bin(17,0) dcl 65 set ref 450* 451 458* 458 459 460 461 468 494* 495 504* 504 505 506 508 515 length builtin function dcl 95 ref 327 max_n_entries 1 based fixed bin(17,0) level 2 dcl 3-18 ref 495 meters 16 based structure level 2 in structure "bj_pst" dcl 4-18 in procedure "bjm_get_journal_status" ref 220 meters 2 based structure level 2 in structure "bj_global_meters" dcl 2-33 in procedure "bjm_get_journal_status" set ref 220* my_bj_pste 000340 automatic structure level 1 dcl 65 set ref 367* 377 377 377 377 398 n_entries_used 2 based fixed bin(17,0) level 2 in structure "bj_ppt" dcl 3-18 in procedure "bjm_get_journal_status" ref 489 n_entries_used 7 based fixed bin(17,0) level 2 in structure "bj_pst" dcl 4-18 in procedure "bjm_get_journal_status" ref 445 n_journals based fixed bin(17,0) level 2 dcl 2-22 set ref 274 394* 446* 451 468* 490* 495 515* null builtin function dcl 95 ref 65 165 166 173 190 191 274 276 364 374 419 p_area_ptr parameter pointer dcl 55 ref 47 164 173 p_bj_global_meters_ptr parameter pointer dcl 55 set ref 47 166* 223* p_bj_status_ptr parameter pointer dcl 55 set ref 47 165* 211* p_code parameter fixed bin(35,0) dcl 55 set ref 47 167* 254* p_dir parameter char unaligned dcl 55 ref 47 162 176 p_entry parameter char unaligned dcl 55 ref 47 163 pn_table_offset 11 based fixed bin(18,0) level 2 unsigned dcl 4-18 ref 357 440 484 ppt_ix 000335 automatic fixed bin(17,0) dcl 65 set ref 495* 499 500* pst_ix 000336 automatic fixed bin(17,0) dcl 65 set ref 451* 455* ptr builtin function dcl 95 ref 357 440 484 reverse builtin function dcl 95 ref 327 rtrim builtin function dcl 95 ref 327 327 saved_level 000337 automatic fixed bin(17,0) initial dcl 65 set ref 65* 184* 242* 337* 350* 388* 426* sbdehv_p_check_for_recursive_invocation parameter bit(1) dcl 302 ref 290 309 sbdehv_p_error_exit parameter label variable dcl 302 ref 290 314 sbdehv_p_operation parameter char unaligned dcl 302 ref 290 315 size builtin function dcl 95 ref 377 377 substr builtin function dcl 95 ref 327 426 426 432 system_info 64 based structure array level 3 dcl 2-22 set ref 398* 461* 508* time_of_bootload 4 based fixed bin(71,0) level 2 in structure "bj_pst" dcl 4-18 in procedure "bjm_get_journal_status" ref 221 time_of_bootload based fixed bin(71,0) level 2 in structure "bj_global_meters" dcl 2-33 in procedure "bjm_get_journal_status" set ref 221* unspec builtin function dcl 95 set ref 398* 398 461* 461 508* 508 version 154 based fixed bin(17,0) array level 3 in structure "bj_ppt" dcl 3-18 in procedure "bjm_get_journal_status" ref 499 version based fixed bin(17,0) level 2 in structure "bj_pste" dcl 5-48 in procedure "bjm_get_journal_status" ref 456 502 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 7-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 BJ_PPT_VERSION_1 internal static fixed bin(17,0) initial dcl 3-13 BJ_PST_VERSION_1 internal static fixed bin(17,0) initial dcl 4-14 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 7-33 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 M_ACCESS internal static bit(3) initial unaligned dcl 7-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 N_ACCESS internal static bit(3) initial unaligned dcl 7-11 REW_ACCESS internal static bit(3) initial unaligned dcl 7-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 RE_ACCESS internal static bit(3) initial unaligned dcl 7-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 RW_ACCESS internal static bit(3) initial unaligned dcl 7-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 R_ACCESS internal static bit(3) initial unaligned dcl 7-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 SA_ACCESS internal static bit(3) initial unaligned dcl 7-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 7-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 7-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 SM_ACCESS internal static bit(3) initial unaligned dcl 7-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 S_ACCESS internal static bit(3) initial unaligned dcl 7-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 W_ACCESS internal static bit(3) initial unaligned dcl 7-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 7-36 bj_ppte_ptr automatic pointer dcl 3-37 NAMES DECLARED BY EXPLICIT CONTEXT. ALLOCATE_STATUS_INFO_STORAGE 001475 constant label dcl 443 in procedure "RETURN_WHOLE_PST" ALLOCATE_STATUS_INFO_STORAGE 001613 constant label dcl 487 in procedure "RETURN_MINE_FROM_PST" CHECK_FILE_AND_BJ_UIDS 000763 constant label dcl 342 CLEAN_UP 000471 constant entry internal dcl 259 ref 192 253 CLEAN_UP_FREE_STRUCTURES 000515 constant label dcl 270 CLOSE_BJ_FILE 001162 constant label dcl 384 COPY_AND_INIT_PARAMETERS 000130 constant label dcl 160 COPY_INFO_TO_USER_AREA 001213 constant label dcl 391 COPY_MY_ACTIVE_JOURNALS 001630 constant label dcl 495 COPY_PST 001511 constant label dcl 451 ERROR_RETURN 000446 constant entry internal dcl 248 ref 173 176 204 206 234 309 339 351 419 424 430 432 FINISH 000406 constant entry internal dcl 237 ref 227 284 GET_METERS 000351 constant label dcl 215 GET_STATUS 000275 constant label dcl 197 GET_SYSTEM_TABLES_PTRS 001464 constant label dcl 437 GET_SYSTEM_TABLE_POINTERS 001577 constant label dcl 480 INACTIVE_BJ_GET_INFO_FROM_HEADER 001134 constant label dcl 374 IS_VALID_BJ_NAME 000637 constant entry internal dcl 322 ref 176 JOURNAL_IS_ACTIVE 001103 constant label dcl 364 MAIN_RETURN 000374 constant label dcl 229 ref 255 NONLOCAL_ERROR_EXIT 000375 constant label dcl 234 ref 187 187 PARTIALLY_VALIDATE_INPUT_PARAMETERS 000152 constant label dcl 171 RETURN_MINE_FROM_PST 001576 constant entry internal dcl 474 ref 202 RETURN_ONE_PSTE 000705 constant entry internal dcl 332 ref 209 RETURN_WHOLE_PST 001240 constant entry internal dcl 405 ref 199 SETUP_FOR_NON_STANDARD_EXIT 000207 constant label dcl 182 SET_BJM_DATA_ERROR_HANDLING_VALUES 000561 constant entry internal dcl 290 ref 187 240 VALIDATE_ADMINISTRATIVE_ACCESS 001241 constant label dcl 415 bjm_get_journal_status 000060 constant entry external dcl 47 ref 417 417 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2342 2442 1734 2352 Length 3040 1734 100 361 406 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_get_journal_status 465 external procedure is an external procedure. on unit on line 192 64 on unit FINISH 82 internal procedure is called by several nonquick procedures. ERROR_RETURN 64 internal procedure is called by several nonquick procedures. CLEAN_UP 72 internal procedure is called by several nonquick procedures. SET_BJM_DATA_ERROR_HANDLING_VALUES 72 internal procedure is called by several nonquick procedures. IS_VALID_BJ_NAME internal procedure shares stack frame of external procedure bjm_get_journal_status. RETURN_ONE_PSTE internal procedure shares stack frame of external procedure bjm_get_journal_status. RETURN_WHOLE_PST internal procedure shares stack frame of external procedure bjm_get_journal_status. RETURN_MINE_FROM_PST internal procedure shares stack frame of external procedure bjm_get_journal_status. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bjm_get_journal_status 000100 area_ptr bjm_get_journal_status 000102 bj_dir bjm_get_journal_status 000154 bj_entry bjm_get_journal_status 000164 bj_ix bjm_get_journal_status 000165 bj_pst_dir bjm_get_journal_status 000237 bj_pst_entry bjm_get_journal_status 000247 bj_uid bjm_get_journal_status 000250 bjm_clean_up_needed bjm_get_journal_status 000251 clean_up_started_freeing bjm_get_journal_status 000252 code bjm_get_journal_status 000253 current_ring bjm_get_journal_status 000254 dm_admin_gate_access_bin bjm_get_journal_status 000255 dm_admin_gate_dir bjm_get_journal_status 000327 dm_admin_gate_dir_length bjm_get_journal_status 000330 dm_admin_gate_ptr bjm_get_journal_status 000332 fm_oid bjm_get_journal_status 000333 fm_uid bjm_get_journal_status 000334 journal_info_ix bjm_get_journal_status 000335 ppt_ix bjm_get_journal_status 000336 pst_ix bjm_get_journal_status 000337 saved_level bjm_get_journal_status 000340 my_bj_pste bjm_get_journal_status 000446 bj_status_n_journals bjm_get_journal_status 000450 bj_status_ptr bjm_get_journal_status 000452 bj_global_meters_ptr bjm_get_journal_status 000454 bj_ppt_ptr bjm_get_journal_status 000456 bj_pst_ptr bjm_get_journal_status 000460 bj_pste_ptr bjm_get_journal_status 000462 bj_pn_table_ptr bjm_get_journal_status THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as r_ne_as alloc_cs call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return tra_ext enable shorten_stack ext_entry_desc int_entry int_entry_desc reverse_cs set_cs_eis alloc_based free_based THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_ci_zero$get_bj_uid bj_ci_zero$get_header bj_ci_zero$get_pf_uid bj_cleanup_tables$handler bj_pst_lock bj_pst_lock$unlock bj_pst_search cu_$level_get cu_$level_set file_manager_$close file_manager_$open get_group_id_ get_ring_ hcs_$fs_get_path_name hcs_$get_user_effmode hcs_$make_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bjm_data_$bj_code bjm_data_$bj_default_error_label bjm_data_$bj_exit_err bjm_data_$bj_operation bjm_data_$bj_ppt_ptr bjm_data_$bj_pst_ptr dm_error_$bj_bad_header dm_error_$bj_invalid_name dm_error_$bj_recursive_invoc error_table_$badpath error_table_$not_privileged error_table_$null_info_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 47 000052 65 000100 162 000130 163 000136 164 000143 165 000146 166 000150 167 000151 173 000152 176 000163 184 000207 185 000216 187 000225 190 000250 191 000252 192 000253 199 000275 202 000313 204 000321 206 000331 209 000345 211 000346 217 000351 220 000356 221 000364 223 000366 227 000370 229 000374 234 000375 536 000404 237 000405 240 000413 242 000434 244 000444 248 000445 253 000453 254 000460 255 000465 259 000470 267 000476 270 000512 273 000515 274 000517 276 000530 281 000537 284 000552 286 000557 290 000560 309 000574 313 000614 314 000617 315 000627 316 000635 318 000636 322 000637 327 000650 332 000705 335 000706 336 000717 337 000744 339 000753 344 000763 345 000776 347 001011 348 001013 349 001024 350 001035 351 001044 357 001053 361 001062 363 001066 364 001077 367 001103 368 001107 369 001116 372 001123 374 001130 377 001134 379 001153 380 001156 381 001161 386 001162 387 001173 388 001204 393 001213 394 001215 396 001226 397 001231 398 001234 401 001237 405 001240 417 001241 419 001273 421 001305 424 001341 426 001351 430 001426 432 001437 439 001464 440 001470 445 001475 446 001477 450 001510 451 001511 455 001524 456 001531 457 001536 458 001540 459 001541 460 001555 461 001564 465 001571 468 001573 470 001575 474 001576 482 001577 483 001603 484 001606 489 001613 490 001616 494 001627 495 001630 499 001644 500 001653 502 001656 503 001663 504 001665 505 001666 506 001702 508 001711 512 001715 515 001717 517 001721 ----------------------------------------------------------- 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