COMPILATION LISTING OF SEGMENT bj_storage_put_buffered_ci Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 1001.6 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This procedure puts the last ci encached in the buffer into 10* the journal by calling the file manager. 11* 12* Its callers are: - bj_storage_append (main caller) 13* - bj_storage_get (to resolve instablity) 14* - bj_flush (if the buffer has to go to disk). 15* 16* Its code is repeatable. It can be executed any number of times 17* without any effect as long as the "point of non-return" has not been 18* reached, that is, as long as the instruction that changes the value 19* of bj_pste.last_ci_buffered has not been executed. 20* 21* If the process is interrupted after the point of non-return, 22* bj_pste.last_ci_put = bj_pste.last_ci_buffered, which indicates 23* that the buffer has been put in the file and should 24* not be put again; instead, the buffer has to be advanced to the 25* next free ci if anything has to be appended to the journal. It 26* is only in the bj_storage_append procedure that this need exists. 27* Whenever append needs to advance the buffer it calls its internal 28* procedure BUFFER_NEXT_CI, whose code is also repeatable up to 29* a point of non-return. 30**/ 31 32 33 34 /* HISTORY: 35*Written by Andre Bensoussan, 08/20/1982. 36*Modified: 37*10/15/82 by M. Pandolf: to use file_manager_ for manipulation of data 38* management system files. 39*11/02/84 by Maggie Sharpe: to use call ERROR_RETURN (code) convention; set 40* validation level to inner-ring before calling file_manager and 41* reset to user level after returning; setup a cleanup handler to 42* ensure resetting of the validation level; correct minor format 43* problem; rename p_pf_oid to p_file_oid as requested by auditor. 44**/ 45 46 /* format: style4,^inddcls,indattr,idind35,^indcomtxt */ 47 48 bj_storage_put_buffered_ci: 49 proc (p_file_oid, p_bj_pste_ptr); 50 51 52 /* Parameters */ 53 54 dcl p_file_oid bit (36) aligned; 55 dcl p_bj_pste_ptr ptr; 56 57 58 /* Automatic */ 59 60 dcl ci_no fixed bin (24) uns; 61 dcl code fixed bin (35); 62 dcl my_ci_parts (5) fixed bin (71); 63 dcl saved_level fixed bin; 64 65 66 /* Builtin */ 67 68 dcl (addr, ptr, size) builtin; 69 70 71 /* Condition */ 72 73 dcl cleanup condition; 74 75 /* Constant */ 76 77 dcl ME char (26) internal static options (constant) 78 init ("bj_storage_put_buffered_ci"); 79 80 /* Entries */ 81 82 dcl file_manager_$put_journal entry (bit (36) aligned, fixed bin (27), ptr, fixed bin (35)); 83 dcl get_ring_ entry() returns (fixed bin(3)); 84 dcl cu_$level_set entry (fixed bin); 85 dcl cu_$level_get entry (fixed bin); 86 dcl bj_report_err entry (fixed bin (35), char (*)); 87 88 /* External */ 89 90 dcl dm_error_$bj_bad_ci_no fixed bin (35) ext; 91 92 93 /* Code */ 94 95 96 call cu_$level_get (saved_level); 97 98 /* Don't leave without resetting validation level */ 99 100 on cleanup begin; 101 call cu_$level_set (saved_level); 102 end; 103 104 105 bj_pste_ptr = p_bj_pste_ptr; 106 107 bj_ci_ptr = ptr (bj_pste_ptr, bj_pste.buffer_offset); 108 109 ci_no = bj_pste.last_ci_buffered; 110 111 if ci_no = 0 112 | ci_no < bj_pste.cl.lowest_ci 113 | ci_no > bj_pste.cl.highest_ci 114 | ci_no ^= bj_ci.header1.id.num then 115 call ERROR_RETURN (dm_error_$bj_bad_ci_no); 116 117 118 ci_parts_ptr = addr (my_ci_parts); 119 120 ci_parts.number_of_parts = 1; 121 122 ci_parts.part (1).offset_in_bytes = 0; /* Relative to header2 */ 123 124 ci_parts.part (1).length_in_bytes = bj_pste.ci_size - (size (ci_header) + size (ci_trailer)) * 4; 125 126 ci_parts.part (1).local_ptr = addr (bj_ci.header2); 127 128 129 call cu_$level_set (get_ring_ ()); 130 call file_manager_$put_journal (p_file_oid, (bj_pste.last_ci_buffered), ci_parts_ptr, code); 131 call cu_$level_set (saved_level); 132 if code ^= 0 then call ERROR_RETURN (code); 133 134 bj_pste.stamp_for_last_ci_put = bj_ci.header1.stamp.time_modified; /* Used by flush */ 135 /* WATCH! It may have to be done AFTER 136* the point of non return to be safe */ 137 138 139 bj_pste.last_ci_put = bj_pste.last_ci_buffered; /* Point of non-return */ 140 141 MAIN_RETURN: 142 return; 143 144 145 ERROR_RETURN: 146 proc (error_code); 147 148 dcl error_code fixed bin (35); 149 150 call bj_report_err (error_code, ME); /* does not return */ 151 goto MAIN_RETURN; /* but better safe than sorry */ 152 end ERROR_RETURN; 153 154 155 /* BEGIN INCLUDE FILE: dm_bj_pste.incl.pl1 */ 1 2 1 3 /* DESCRIPTION 1 4* 1 5* Layout of the per-system before journal table 1 6* entries. This structure is used to contain information 1 7* about a before journal active in a running DMS. It is 1 8* currently also used as the header of a before journal 1 9* (see dm_bj_header.incl.pl1). Version changes to this 1 10* structure require either automatic conversion to be set 1 11* up, or users to be told to re-create their journals. 1 12* 1 13* Currently, a bj_pste must be 64 words long; any 1 14* future changes must at least make sure a bj_pste is an 1 15* even # of words for the alignment of some of its 1 16* elements. 1 17**/ 1 18 1 19 /* HISTORY: 1 20* 1 21*Written by Andre Bensoussan, 06/15/82. 1 22*Modified: 1 23*08/16/82 by Andre Bensoussan: to add stamp_for_last_ci_put. 1 24*09/29/82 by Lee A. Newcomb: to fix BJ_PSTE_VERSION_1 and fix some 1 25* alignments. 1 26*11/01/82 by Andre Bensoussan: to add "stamp_for_last_ci_on_disk", 1 27* "n_bi_still_unsafe", and "n_bi_being_saved". 1 28*02/08/83 by M. Pandolf: to add append_state structure. 1 29*03/19/83 by L. A. Newcomb: to fix up some alignments and spelling problems. 1 30*04/27/83 by M. Pandolf: to add meter structure at end. 1 31*02/11/85 by Lee A. Newcomb: Fixed version constant name to agree with its 1 32* value of 2; fixed references to page files or PF's; fixed format 1 33* of description and history sections. 1 34*03/07/85 by Lee A. Newcomb: Changed a pad word to be txn_storage_limit and 1 35* expanded on the description for future generations (no 1 36* version was made). 1 37*03/27/85 by Lee A. Newcomb: Changed one of the unused meters to 1 38* n_txn_storage_limit_hits (again without a version change). 1 39**/ 1 40 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo,^inddcls,dclind5,idind35,linecom */ 1 41 1 42 dcl BJ_PSTE_VERSION_2 fixed bin internal static 1 43 options (constant) init (2); 1 44 1 45 dcl bj_pste_ptr ptr; 1 46 1 47 /* MUST HAVE EVEN NUMBER OR WORDS */ 1 48 dcl 1 bj_pste based (bj_pste_ptr) aligned, 1 49 2 version fixed bin, 1 50 2 bj_ix fixed bin, /* Index of this entry in bj_pst table */ 1 51 2 lock aligned, 1 52 3 pid bit (36), /* process ID of lock owner */ 1 53 3 event bit (36), 1 54 2 bj_uid bit (36), /* UID of BJ file */ 1 55 2 ci_size fixed bin, /* In number of bytes */ 1 56 2 max_size fixed bin, /* In number of ci's */ 1 57 2 active bit (1) aligned, /* 0 means journal not being used */ 1 58 2 time_header_updated fixed bin (71), 1 59 2 earliest_meaningful_time fixed bin (71), /* time stamp on first valid control interval */ 1 60 2 update_frequency fixed bin, /* Not used yet, probably will be how many CIs */ 1 61 2 last_rec_id bit (36), /* rec id of the last logical record in journal */ 1 62 2 n_processes fixed bin, /* Number of processes using this BJ */ 1 63 2 n_txn fixed bin, /* Number of txn in progress using this BJ */ 1 64 2 last_ci_info aligned, 1 65 3 last_ci_buffered fixed bin (24) uns, /* Last ci encached in the buffer */ 1 66 3 last_ci_put fixed bin (24) uns, /* Last ci put in the BJ */ 1 67 3 last_ci_flushed fixed bin (24) uns, /* Last ci for which flush initiated */ 1 68 3 last_ci_on_disk fixed bin (24) uns, /* Last ci of that portion of the BJ known to be ... */ 1 69 /* .. completely on disk */ 1 70 3 stamp_for_last_ci_put fixed bin (71), /* Time stamp associated with the last ci put in the BJ */ 1 71 3 stamp_for_last_ci_on_disk fixed bin (71), /* Time stamp associated with the last ci on disk in the BJ */ 1 72 2 n_bi_still_unsafe fixed bin, /* number of bi's still not on disk */ 1 73 2 n_bi_being_saved fixed bin, /* number of bi's for which flush initiated */ 1 74 2 buffer_offset fixed bin (18) uns, /* Now allocated in the bj_pst segment */ 1 75 2 txn_storage_limit fixed bin (35), /* # of bytes a single txn may write */ 1 76 2 cl aligned, /* Circular List */ 1 77 3 origin_ci fixed bin (24) uns, 1 78 3 lowest_ci fixed bin (24) uns, 1 79 3 highest_ci fixed bin (24) uns, 1 80 3 number_ci fixed bin (24) uns, 1 81 2 append_state aligned, 1 82 3 current_operation char (4), /* equal to "appe" when append in progress */ 1 83 3 pending_n_txn fixed bin, /* n_txn value when append done */ 1 84 3 pending_last_rec_id bit (36), /* last_rec_id value after append done */ 1 85 3 pending_last_element_id bit (36), /* last element id after append done */ 1 86 3 txte_rec_id_relp bit (18), /* rel ptr into seg containing TXT for txte.pending_bj_rec_id */ 1 87 2 pad_to_even_word1 bit (36) aligned, 1 88 2 meters aligned, /* dim (10) fixed bin (71), */ 1 89 3 n_bi_written fixed bin (71), /* meter (1) */ 1 90 3 n_bi_bytes_written fixed bin (71), /* meter (2) */ 1 91 3 n_journal_full fixed bin (71), /* meter (3) */ 1 92 3 n_successful_recycles fixed bin (71), /* meter (4) */ 1 93 3 n_ci_recycled fixed bin (71), /* meter (5) */ 1 94 3 n_txn_started fixed bin (71), /* meter (6) */ 1 95 3 n_non_null_txn fixed bin (71), /* meter (7) */ 1 96 3 n_txn_storage_limit_hits fixed bin (71), /* meter (8) */ 1 97 3 meter (9:10) fixed bin (71), 1 98 /* meter (9) - meter (10) */ 1 99 2 pad_to_64_words (6) bit (36); /* 64 is even (see below) */ 1 100 1 101 1 102 /* END INCLUDE FILE: dm_bj_pste.incl.pl1 */ 155 156 /* BEGIN INCLUDE FILE: dm_bj_ci.incl.pl1 */ 2 2 /* 2 3*Layout of a BJ control interval excluding the actual data records. 2 4* 2 5*Written by Andre Bensoussan 07/02/1982 2 6*Modified: 2 7*08/15/82 by Andre Bensoussan: For implementing the flush function; 2 8* header2.reserved_1 has been renamed first_rec_id. 2 9*01nov82 by M. Pandolf to eliminate reserved_2 (after first_rec_id) 2 10* and to add n_bi, and more reserved space. 2 11**/ 2 12 2 13 /* format: style4,indattr,idind33,^indcomtxt */ 2 14 2 15 dcl bj_ci_ptr ptr; 2 16 2 17 dcl 1 bj_ci based (bj_ci_ptr) aligned, /* Structure of any CI in BJ except CI zero */ 2 18 2 header1 like ci_header, /* Standard PF CI header */ 2 19 2 header2, /* Header specific to BJ CI */ 2 20 3 layout_type bit (36), 2 21 3 first_rec_id bit (36), /* Relevant only if first_is_contn = 1 */ 2 22 2 23 3 n_slots fixed bin (17) unal, /* n_slots, first, last in same word ... */ 2 24 3 first_is_contn bit (1) unal, /* ..so that they can be changed all ... */ 2 25 3 last_is_contd bit (1) unal, /* ..at the same time in one instruction */ 2 26 3 pad bit (16) unal, 2 27 2 28 3 n_bi fixed bin (35), /* number of BI's in buffer*/ 2 29 3 reserved bit (36) dim (4), 2 30 2 31 2 slot dim (1:1000), 2 32 3 offset fixed bin (18) uns unal, /* In number of bytes */ 2 33 3 length fixed bin (18) uns unal; /* In number of bytes */ 2 34 2 35 dcl 1 header2 like bj_ci.header2 aligned; /* Used for size calculation */ 2 36 2 37 /* END INCLUDE FILE: dm_bj_ci.incl.pl1 */ 2 38 2 39 2 40 2 41 2 42 2 43 2 44 2 45 2 46 2 47 156 157 /* BEGIN INCLUDE FILE: dm_ci_header.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* 3 5* This include file contains various structures which make up the 3 6* header and trailer of a control interval. 3 7* 3 8* **** NOTE: The include file dm_ci.incl.pl1 is heavily dependent **** 3 9* **** on this include file. When changing this include file, **** 3 10* **** check dm_ci.incl.pl1 to see if it is affected. **** 3 11**/ 3 12 3 13 /* HISTORY: 3 14*Written by Jeffrey D. Ives, 03/02/82. 3 15* (Design by Andre Bensoussan and Jeffrey D. Ives) 3 16*Modified: 3 17*11/02/84 by Matthew Pierret: Re-organized so that dm_ci.incl.pl1 and 3 18* dm_ci_header.incl.pl1 do not duplicate structures or constants. 3 19**/ 3 20 3 21 /* format: style2,ind3 */ 3 22 3 23 /* ci_header is the first four words of a control interval. Its contents 3 24* are used to verify that a control interval is in an expected format, 3 25* to identify the control interval and the file to which the control 3 26* interval belongs, and to maintain information for the synchronization 3 27* of disk I/O between DM file control intervals and associated before 3 28* journal control intervals. The first two words are the time stamp for 3 29* synchronization; the latter two identify the control interval. */ 3 30 3 31 dcl ci_header_ptr ptr; 3 32 dcl 1 ci_header aligned based (ci_header_ptr), 3 33 2 stamp like ci_stamp, 3 34 2 id like ci_id; 3 35 3 36 /* ci_trailer is the last two words of a control interval and must match 3 37* the first two words (ci_header.stamp). */ 3 38 3 39 dcl ci_trailer_ptr ptr; 3 40 dcl 1 ci_trailer like ci_header.stamp aligned based (ci_trailer_ptr); 3 41 3 42 3 43 /* ci_stamp is a two-word date/time modified stamp, consisting of: 3 44* version: a 9-bit version string for the structure 3 45* bj_idx: before journal index for I/O synchronization 3 46* time_modified: Multics clock time of last modification */ 3 47 3 48 dcl 1 ci_stamp aligned based, 3 49 3 version bit (9) unal, 3 50 3 bj_idx fixed bin (9) uns unal, 3 51 3 time_modified fixed bin (53) unal; 3 52 3 53 dcl CI_HEADER_STAMP_VERSION_1 3 54 bit (9) aligned static options (constant) init ("641"b3); 3 55 3 56 /* ci_id is a two-word identification of the control interval, which 3 57* rarely changes and consists of: 3 58* uid: DM file unique identifier 3 59* size_code: the control interval size in bytes, in an encoded 3 60* form (see ci_size_code below). 3 61* num: the control interval number. 0 is the number of the first 3 62* control interval of a file. */ 3 63 3 64 dcl 1 ci_id aligned based, 3 65 3 uid bit (36), 3 66 3 size_code bit (9) unal, 3 67 3 num fixed bin (27) uns unal; 3 68 3 69 /* ci_size_code is the structure which defines the content of ci_id.size_code. 3 70* The size in bytes of a control interval is equal to 3 71* (2 ** ci_size_code.exponent * (64 + 8 * ci_size_code.addon)). */ 3 72 3 73 dcl 1 ci_size_code aligned based, 3 74 2 exponent fixed bin (6) uns unal, 3 75 2 addon fixed bin (3) uns unal; 3 76 3 77 /* ci_header_chunks is a structure which can be used to update the 3 78* ci_stamp or ci_id in one memory cycle. */ 3 79 3 80 dcl 1 ci_header_chunks aligned based (ci_header_ptr), 3 81 2 stamp fixed bin (71), 3 82 2 id fixed bin (71); 3 83 3 84 /* ci_trailer_chunk is a structure which can e used to update the 3 85* ci_trailer in one memory cycle. */ 3 86 3 87 dcl 1 ci_trailer_chunk aligned based, 3 88 2 stamp fixed bin (71); 3 89 3 90 3 91 /* END INCLUDE FILE: dm_ci_header.incl.pl1 */ 157 158 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* 4 5* This include file contains the ci_parts structure. This structure 4 6* is used across the file_manager_ interface to specify the parts of a 4 7* control interval to get or put. If the number_of parts is equal to 0, 4 8* modules which take ci_parts interpret this case to mean to do everything 4 9* except the actual requested operation, i.e., lock the control interval 4 10* but don't get anything. offset_in_bytes is the 0-originned offset in 4 11* bytes from the beginning of the addressable portion of the control interval. 4 12* An offset_in_bytes which is in the addressable portion is in error. 4 13* Likewise, if offset_in_bytes + length_in_bytes is outside of the addressable 4 14* portion, it is in error. 4 15**/ 4 16 4 17 /* HISTORY: 4 18*Written by Matthew Pierret, 01/28/82. 4 19* (01/28/82 Andre Bensoussan, Design.) 4 20*Modified: 4 21*11/07/84 by Matthew Pierret: To add must_be_zero, initial attributes on 4 22* automatic storge. 4 23**/ 4 24 4 25 /* format: style2,ind3 */ 4 26 4 27 dcl 1 ci_parts aligned based (ci_parts_ptr), 4 28 2 number_of_parts fixed bin (17), 4 29 2 must_be_zero fixed bin, 4 30 2 part (cip_number_of_parts refer (ci_parts.number_of_parts)), 4 31 3 offset_in_bytes fixed bin (17), 4 32 3 length_in_bytes fixed bin (17), 4 33 3 local_ptr ptr; 4 34 4 35 dcl ci_parts_ptr ptr init (null ()); 4 36 dcl cip_number_of_parts fixed bin (17) init (0); 4 37 4 38 4 39 /* BEGIN INCLUDE FILE: dm_ci_parts.incl.pl1 */ 158 159 160 end bj_storage_put_buffered_ci; 161 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0914.7 bj_storage_put_buffered_ci.pl1 >spec>on>7192.pbf-04/04/85>bj_storage_put_buffered_ci.pl1 155 1 04/04/85 0819.1 dm_bj_pste.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_bj_pste.incl.pl1 156 2 01/07/85 0857.3 dm_bj_ci.incl.pl1 >ldd>include>dm_bj_ci.incl.pl1 157 3 01/07/85 0900.5 dm_ci_header.incl.pl1 >ldd>include>dm_ci_header.incl.pl1 158 4 01/07/85 0900.8 dm_ci_parts.incl.pl1 >ldd>include>dm_ci_parts.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. ME 000000 constant char(26) initial unaligned dcl 77 set ref 150* addr builtin function dcl 68 ref 118 126 bj_ci based structure level 1 dcl 2-17 bj_ci_ptr 000126 automatic pointer dcl 2-15 set ref 107* 111 126 134 bj_pste based structure level 1 dcl 1-48 bj_pste_ptr 000124 automatic pointer dcl 1-45 set ref 105* 107 107 109 111 111 124 130 134 139 139 bj_report_err 000020 constant entry external dcl 86 ref 150 buffer_offset 32 based fixed bin(18,0) level 2 unsigned dcl 1-48 ref 107 ci_header based structure level 1 dcl 3-32 ref 124 ci_header_ptr automatic pointer dcl 3-31 ref 124 ci_id based structure level 1 dcl 3-64 ci_no 000100 automatic fixed bin(24,0) unsigned dcl 60 set ref 109* 111 111 111 111 ci_parts based structure level 1 dcl 4-27 ci_parts_ptr 000130 automatic pointer initial dcl 4-35 set ref 118* 120 122 124 126 130* 4-35* ci_size 5 based fixed bin(17,0) level 2 dcl 1-48 ref 124 ci_stamp based structure level 1 dcl 3-48 ci_trailer based structure level 1 dcl 3-40 ref 124 ci_trailer_ptr automatic pointer dcl 3-39 ref 124 cip_number_of_parts 000132 automatic fixed bin(17,0) initial dcl 4-36 set ref 4-36* cl 34 based structure level 2 dcl 1-48 cleanup 000116 stack reference condition dcl 73 ref 100 code 000101 automatic fixed bin(35,0) dcl 61 set ref 130* 132 132* cu_$level_get 000016 constant entry external dcl 85 ref 96 cu_$level_set 000014 constant entry external dcl 84 ref 101 129 131 dm_error_$bj_bad_ci_no 000022 external static fixed bin(35,0) dcl 90 set ref 111* error_code parameter fixed bin(35,0) dcl 148 set ref 145 150* file_manager_$put_journal 000010 constant entry external dcl 82 ref 130 get_ring_ 000012 constant entry external dcl 83 ref 129 129 header1 based structure level 2 dcl 2-17 header2 4 based structure level 2 dcl 2-17 set ref 126 highest_ci 36 based fixed bin(24,0) level 3 unsigned dcl 1-48 ref 111 id 2 based structure level 3 dcl 2-17 last_ci_buffered 20 based fixed bin(24,0) level 3 unsigned dcl 1-48 ref 109 130 139 last_ci_info 20 based structure level 2 dcl 1-48 last_ci_put 21 based fixed bin(24,0) level 3 unsigned dcl 1-48 set ref 139* length_in_bytes 3 based fixed bin(17,0) array level 3 dcl 4-27 set ref 124* local_ptr 4 based pointer array level 3 dcl 4-27 set ref 126* lowest_ci 35 based fixed bin(24,0) level 3 unsigned dcl 1-48 ref 111 my_ci_parts 000102 automatic fixed bin(71,0) array dcl 62 set ref 118 num 3(09) based fixed bin(27,0) level 4 packed unsigned unaligned dcl 2-17 ref 111 number_of_parts based fixed bin(17,0) level 2 dcl 4-27 set ref 120* offset_in_bytes 2 based fixed bin(17,0) array level 3 dcl 4-27 set ref 122* p_bj_pste_ptr parameter pointer dcl 55 ref 48 105 p_file_oid parameter bit(36) dcl 54 set ref 48 130* part 2 based structure array level 2 dcl 4-27 ptr builtin function dcl 68 ref 107 saved_level 000114 automatic fixed bin(17,0) dcl 63 set ref 96* 101* 131* size builtin function dcl 68 ref 124 124 stamp based structure level 3 in structure "bj_ci" dcl 2-17 in procedure "bj_storage_put_buffered_ci" stamp based structure level 2 in structure "ci_header" dcl 3-32 in procedure "bj_storage_put_buffered_ci" stamp_for_last_ci_put 24 based fixed bin(71,0) level 3 dcl 1-48 set ref 134* time_modified 0(18) based fixed bin(53,0) level 4 packed unaligned dcl 2-17 ref 134 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BJ_PSTE_VERSION_2 internal static fixed bin(17,0) initial dcl 1-42 CI_HEADER_STAMP_VERSION_1 internal static bit(9) initial dcl 3-53 ci_header_chunks based structure level 1 dcl 3-80 ci_size_code based structure level 1 dcl 3-73 ci_trailer_chunk based structure level 1 dcl 3-87 header2 automatic structure level 1 dcl 2-35 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000224 constant entry internal dcl 145 ref 111 132 MAIN_RETURN 000223 constant label dcl 141 ref 151 bj_storage_put_buffered_ci 000024 constant entry external dcl 48 NAME DECLARED BY CONTEXT OR IMPLICATION. null builtin function ref 4-35 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 364 410 250 374 Length 664 250 24 240 114 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bj_storage_put_buffered_ci 130 external procedure is an external procedure. on unit on line 100 68 on unit ERROR_RETURN internal procedure shares stack frame of external procedure bj_storage_put_buffered_ci. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bj_storage_put_buffered_ci 000100 ci_no bj_storage_put_buffered_ci 000101 code bj_storage_put_buffered_ci 000102 my_ci_parts bj_storage_put_buffered_ci 000114 saved_level bj_storage_put_buffered_ci 000124 bj_pste_ptr bj_storage_put_buffered_ci 000126 bj_ci_ptr bj_storage_put_buffered_ci 000130 ci_parts_ptr bj_storage_put_buffered_ci 000132 cip_number_of_parts bj_storage_put_buffered_ci THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_report_err cu_$level_get cu_$level_set file_manager_$put_journal get_ring_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$bj_bad_ci_no LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 48 000020 4 35 000031 4 36 000033 96 000034 100 000042 101 000056 102 000065 105 000066 107 000072 109 000076 111 000100 118 000120 120 000122 122 000124 124 000125 126 000133 129 000136 130 000156 131 000177 132 000206 134 000212 139 000221 141 000223 145 000224 150 000226 151 000243 ----------------------------------------------------------- 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