COMPILATION LISTING OF SEGMENT bjm_find_old_uid_pn_table 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.1 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 bjm_find_old_uid_pn_table: 7 proc (Old_boot_dir, Bj_pn_table_p, Code); 8 9 /* DESCRIPTION: 10* This program locates the before journal unique id-pathname table from 11* an old bootload instance of DMS. Currently, this table is in the 12* bj_pst_segment. The table is required for DMS recovery to operate. 13**/ 14 15 /* HISTORY: 16*Written by Lee A. Newcomb, 6 Jan 1983 17*Modified: 18**/ 19 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 20 21 /* initialize output parameter */ 22 Code = 0; /* let's be optimistic */ 23 24 25 /* now initiate the PST segment in the old directory */ 26 call initiate_file_ (Old_boot_dir, BJ_PST, R_ACCESS, bj_pst_ptr, (0), Code); /* ignore bit count */ 27 if Code ^= 0 then /* sorry */ 28 return; 29 30 31 /* OK, now get the location we want */ 32 Bj_pn_table_p = addrel (bj_pst_ptr, bj_pst.pn_table_offset); 33 34 return; /* I never said 35*it was lengthy */ 36 37 /* end bjm_find_old_uid_pn_table; */ 38 39 /* DECLARATIONS */ 40 41 dcl ( /* parameters */ 42 Old_boot_dir char (*), /* INPUT: old bootload dir. of DMS */ 43 Bj_pn_table_p ptr, /* OUTPUT: the location of the BJ UID-pathname table */ 44 Code fixed bin (35) /* OUTPUT: normal error code, recovery fails if ^= 0 */ 45 ) parameter; 46 47 dcl /* PL/I things */ 48 addrel builtin; 49 50 dcl /* external entries called */ 51 initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin 52 (24), fixed bin (35)); 53 54 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: dm_bj_pst.incl.pl1 */ 1 2 /* 1 3*Layout of the before journal per-system table header and BJ table entries. 1 4* 1 5*Written by Andre Bensoussan 06-15-1982 1 6*Modified: 1 7*09/29/82 by Lee A. Newcomb: To use dm_system_data_ for determining 1 8* dimension of bj_pst.e and force bj_pst.mod_list_area and 1 9* bj_pst.e to even word boundaries. 1 10*04/27/82 by M. Pandolf: To add meter space by cutting away from mod_list_area. 1 11**/ 1 12 /* format: style4,indattr,idind33,^indcomtxt */ 1 13 1 14 dcl BJ_PST_VERSION_1 fixed bin internal static options (constant) init (1); 1 15 1 16 dcl bj_pst_ptr ptr; 1 17 1 18 dcl 1 bj_pst based (bj_pst_ptr) aligned, 1 19 2 version fixed bin, 1 20 2 pad1 bit (36), 1 21 2 lock, 1 22 3 pid bit (36), /* process_id holding lock */ 1 23 3 event bit (36), 1 24 2 time_of_bootload fixed bin (71), /* for ease of access */ 1 25 2 max_n_entries fixed bin, /* as determined from dm_system_data_$bj_max_n_journals */ 1 26 2 n_entries_used fixed bin, /* current # of BJs open on the system */ 1 27 2 highest_ix_used fixed bin, /* max. # of BJs that has ever been open of the system */ 1 28 2 pn_table_offset fixed bin (18) uns, /* relative offset of bj_pn_table in bj_pst seg. */ 1 29 2 check_in_table_offset fixed bin (18) uns, /* ditto for bj_check_in_table */ 1 30 2 buffer_table_offset fixed bin (18) uns, /* ditto for where our BJ buffers are located */ 1 31 2 max_n_buffers fixed bin, /* must be <= to max_n_entries */ 1 32 2 pad2 bit (36), /* force next on even word boundary */ 1 33 2 meters, /* dim (50) fixed bin (71), */ 1 34 3 n_calls_begin_txn fixed bin (71), /* meter (1) */ 1 35 3 n_calls_before_image fixed bin (71), /* meter (2) */ 1 36 3 n_calls_abort fixed bin (71), /* meter (3) */ 1 37 3 n_calls_commit fixed bin (71), /* meter (4) */ 1 38 3 n_calls_rb_mark fixed bin (71), /* meter (5) */ 1 39 3 n_calls_fm_pc_mark fixed bin (71), /* meter (6) */ 1 40 3 n_calls_fm_rbh fixed bin (71), /* meter (7) */ 1 41 3 n_calls_rollback fixed bin (71), /* meter (8) */ 1 42 3 meter dim (9:50) fixed bin (71), /* meter (9) - meter (50) */ 1 43 2 mod_list_area (100) fixed bin (35), /* for keeping track of pst mods */ 1 44 1 45 2 e dim (dm_system_data_$bj_max_n_journals refer (bj_pst.max_n_entries)) 1 46 like bj_pste; /* per system BJ table entries */ 1 47 1 48 1 49 /* END INCLUDE FILE: dm_bj_pst.incl.pl1 */ 55 56 2 1 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 2 2 2 3 /* DESCRIPTION 2 4* 2 5* Layout of the per-system before journal table 2 6* entries. This structure is used to contain information 2 7* about a before journal active in a running DMS. It is 2 8* currently also used as the header of a before journal 2 9* (see dm_bj_header.incl.pl1). Version changes to this 2 10* structure require either automatic conversion to be set 2 11* up, or users to be told to re-create their journals. 2 12* 2 13* Currently, a bj_pste must be 64 words long; any 2 14* future changes must at least make sure a bj_pste is an 2 15* even # of words for the alignment of some of its 2 16* elements. 2 17**/ 2 18 2 19 /* HISTORY: 2 20* 2 21*Written by Andre Bensoussan, 06/15/82. 2 22*Modified: 2 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 2 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 2 25* alignments. 2 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 2 27* "n_bi_still_unsafe", and "n_bi_being_saved". 2 28*02/08/83 by M. Pandolf: to add append_state structure. 2 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 2 30*04/27/83 by M. Pandolf: to add meter structure at end. 2 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 2 32* value of 2; fixed references to page files or PF's; fixed format 2 33* of description and history sections. 2 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 2 35* expanded on the description for future generations (no 2 36* version was made). 2 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 2 38* n_txn_storage_limit_hits (again without a version change). 2 39**/ 2 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 2 41 2 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 2 43 options (constant) init (2); 2 44 2 45 dcl bj_pste_ptr ptr; 2 46 2 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 2 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 2 49 2 version fixed bin, 2 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 2 51 2 lock aligned, 2 52 3 pid bit (36), /* process ID of lock owner */ 2 53 3 event bit (36), 2 54 2 bj_uid bit (36), /* UID of BJ file */ 2 55 2 ci_size fixed bin, /* In number of bytes */ 2 56 2 max_size fixed bin, /* In number of ci's */ 2 57 2 active bit (1) aligned, /* 0 means journal not being used */ 2 58 2 time_header_updated fixed bin (71), 2 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 2 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 2 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 2 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 2 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 2 64 2 last_ci_info aligned, 2 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 2 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 2 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 2 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 2 69 /* .. completely on disk */ 2 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 2 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 2 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 2 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 2 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 2 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 2 76 2 cl aligned, /* Circular List */ 2 77 3 origin_ci fixed bin (24) uns, 2 78 3 lowest_ci fixed bin (24) uns, 2 79 3 highest_ci fixed bin (24) uns, 2 80 3 number_ci fixed bin (24) uns, 2 81 2 append_state aligned, 2 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 2 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 2 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 2 85 3 pending_last_element_id bit (36), /* last element id after append done */ 2 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 2 87 2 pad_to_even_word1 bit (36) aligned, 2 88 2 meters aligned, /* dim (10) fixed bin (71), */ 2 89 3 n_bi_written fixed bin (71), /* meter (1) */ 2 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 2 91 3 n_journal_full fixed bin (71), /* meter (3) */ 2 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 2 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 2 94 3 n_txn_started fixed bin (71), /* meter (6) */ 2 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 2 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 2 97 3 meter (9:10) fixed bin (71), 2 98 /* meter (9) - meter (10) */ 2 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 2 100 2 101 2 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 57 58 3 1 /* BEGIN INCLUDE FILE dm_bj_names.incl.pl1 */ 3 2 3 3 dcl SYSTEM_BJ char (32) internal static options (constant) 3 4 init ("dm_default_bj"); 3 5 3 6 /* SYSTEM_BJ is the name of the before journal to be used by processes 3 7* which have not set up their own journals for data management. */ 3 8 3 9 3 10 dcl BJ_PST char (16) internal static options (constant) init ("bj_pst_segment"); 3 11 3 12 /* BJ_PST is the name of the system wide before journal registration table */ 3 13 3 14 /* END INCLUDE FILE dm_bj_names.incl.pl1 */ 59 60 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 */ 61 62 63 64 end bjm_find_old_uid_pn_table; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1128.0 bjm_find_old_uid_pn_table.pl1 >spec>on>41-15>bjm_find_old_uid_pn_table.pl1 55 1 01/07/85 0857.7 dm_bj_pst.incl.pl1 >ldd>include>dm_bj_pst.incl.pl1 57 2 04/05/85 0924.4 dm_bj_pste.incl.pl1 >ldd>include>dm_bj_pste.incl.pl1 59 3 01/07/85 0857.4 dm_bj_names.incl.pl1 >ldd>include>dm_bj_names.incl.pl1 61 4 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_PST 000001 constant char(16) initial unaligned dcl 3-10 set ref 26* Bj_pn_table_p parameter pointer dcl 41 set ref 6 32* Code parameter fixed bin(35,0) dcl 41 set ref 6 22* 26* 27 Old_boot_dir parameter char unaligned dcl 41 set ref 6 26* R_ACCESS 000000 constant bit(3) initial unaligned dcl 4-11 set ref 26* addrel builtin function dcl 47 ref 32 bj_pst based structure level 1 dcl 1-18 bj_pst_ptr 000100 automatic pointer dcl 1-16 set ref 26* 32 32 bj_pste based structure level 1 dcl 2-48 initiate_file_ 000010 constant entry external dcl 50 ref 26 pn_table_offset 11 based fixed bin(18,0) level 2 unsigned dcl 1-18 ref 32 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 4-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 BJ_PSTE_VERSION_2 internal static fixed bin(17,0) initial dcl 2-42 BJ_PST_VERSION_1 internal static fixed bin(17,0) initial dcl 1-14 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 4-33 E_ACCESS internal static bit(3) initial unaligned dcl 4-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 M_ACCESS internal static bit(3) initial unaligned dcl 4-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 N_ACCESS internal static bit(3) initial unaligned dcl 4-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 REW_ACCESS internal static bit(3) initial unaligned dcl 4-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RE_ACCESS internal static bit(3) initial unaligned dcl 4-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 RW_ACCESS internal static bit(3) initial unaligned dcl 4-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SA_ACCESS internal static bit(3) initial unaligned dcl 4-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 4-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 4-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SM_ACCESS internal static bit(3) initial unaligned dcl 4-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 SYSTEM_BJ internal static char(32) initial unaligned dcl 3-3 S_ACCESS internal static bit(3) initial unaligned dcl 4-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 W_ACCESS internal static bit(3) initial unaligned dcl 4-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 4-36 bj_pste_ptr automatic pointer dcl 2-45 NAME DECLARED BY EXPLICIT CONTEXT. bjm_find_old_uid_pn_table 000017 constant entry external dcl 6 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 142 154 102 152 Length 410 102 12 217 37 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_find_old_uid_pn_table 94 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bjm_find_old_uid_pn_table 000100 bj_pst_ptr bjm_find_old_uid_pn_table THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. initiate_file_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000013 22 000032 26 000034 27 000071 32 000074 34 000101 ----------------------------------------------------------- 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