COMPILATION LISTING OF SEGMENT cm_put_cn_datum Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0954.1 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* format: style2,ind3 */ 8 9 cm_put_cn_datum: 10 proc (p_cm_info_ptr, p_datum_contents_ptr, p_datum_contents_length, p_continuation, p_datum_id, p_code); 11 12 /* DESCRIPTION: 13* 14* This routine allocates a single datum. The datum must be a 15* continuation or continued-continuation datum of an element. The routine 16* first finds a control interval that has enough free space to hold the 17* datum, allocating a new control interval if necessary. Then a free slot 18* is found and the datum is place in the free pool. 19* 20* p_datum_id is the control interval id / slot index found for the datum. 21* p_continuation is "0"b if searching for a continuation_datum; the value 22* of this datum's continuation if searching for a continued continuation 23* datum 24**/ 25 26 /* HISTORY: 27* 28*Written by Matthew Pierret, 11/02/82. 29*Modified: 30*12/01/82 by Lindsey Spratt: Added setting of the is_continuation and 31* is_continued flags. 32*02/02/83 by Matthew Pierret: Upgraded to CM_INFO_VERSION_2. Fixed bug in 33* deciding when to set bci_header.number_of_datums. 34*08/04/83 by Matthew Pierret: Changed to use cm_determine_free_space 35* $does_new_datum_fit. This entry understands that the space needed 36* is for a new datum, and takes into consideration the need for a 37* new datum slot. Because of this, this routine does not have to set 38* bci_header.number_of_datums to what it will be after the allocation 39* to get the correct results before calling cm_dfs$dndf. 40* Changed cm_find_free_slot to return a flag indicating the value 41* bci_header.free_slot_is_present after allocation. 42* 43*11/01/84 by Lindsey L. Spratt: Changed the main procedure name, and myname, 44* to agree with the segment name (cm_put_cn_datum). The old 45* procedure name was cm_allocate_cn_datum. 46**/ 47 48 /* START OF DECLARATIONS */ 49 /* Parameter */ 50 51 dcl p_cm_info_ptr ptr parameter; 52 dcl p_datum_contents_ptr ptr parameter; 53 dcl p_datum_contents_length 54 fixed bin (35) parameter; 55 dcl p_continuation bit (36) aligned parameter; 56 dcl p_datum_id bit (36) aligned parameter; 57 dcl p_code fixed bin (35) parameter; 58 59 /* Automatic */ 60 61 dcl 1 automatic_bci_header aligned like bci_header; 62 dcl 1 automatic_datum_slot aligned like datum_slot; 63 dcl (fits_in_ci, fits_in_pool, has_free_slot_after_allocation) 64 bit (1) aligned init ("0"b); 65 dcl control_interval_id fixed bin (24) unsigned init (0); 66 dcl (datum_contents_length_in_bytes, total_free_bytes) 67 fixed bin (35) init (0); 68 dcl (number_of_slots_after_allocation, slot_idx) 69 fixed bin (17) init (0); 70 71 /* Based */ 72 73 dcl datum_id_string bit (36) aligned based (datum_id_ptr); 74 75 /* Builtin */ 76 77 dcl (addr, ceil, divide, null, unspec) 78 builtin; 79 80 /* Constant */ 81 82 dcl myname init ("cm_put_cn_datum") char (32) varying internal static options (constant); 83 dcl BITS_PER_BYTE init (9) fixed bin internal static options (constant); 84 dcl IS_A_CONTINUATION init ("1"b) bit (1) aligned internal static options (constant); 85 86 /* Entry */ 87 88 dcl sub_err_ entry () options (variable); 89 90 /* External */ 91 92 dcl dm_error_$programming_error 93 fixed bin (35) ext; 94 dcl error_table_$unimplemented_version 95 fixed bin (35) ext; 96 97 /* END OF DECLARATIONS */ 98 99 p_code = 0; 100 cm_info_ptr = p_cm_info_ptr; 101 call CHECK_VERSION ((cm_info.version), (CM_INFO_VERSION_2), "cm_info"); 102 103 datum_id_ptr = addr (p_datum_id); 104 105 datum_contents_length_in_bytes = ceil (divide (p_datum_contents_length, BITS_PER_BYTE, 35, 18)); 106 107 unspec (automatic_bci_header) = "0"b; 108 unspec (automatic_datum_slot) = "0"b; 109 110 bci_header_ptr = addr (automatic_bci_header); 111 datum_slot_ptr = addr (automatic_datum_slot); 112 113 call cm_find_ci_to_alloc_datum (cm_info_ptr, datum_contents_length_in_bytes, 0, (p_continuation ^= "0"b), "1"b, 114 bci_header_ptr, control_interval_id, p_code); 115 if p_code ^= 0 116 then return; 117 118 call cm_find_free_slot (cm_info.file_oid, control_interval_id, bci_header_ptr, slot_idx, 119 number_of_slots_after_allocation, has_free_slot_after_allocation, p_code); 120 if p_code ^= 0 121 then return; 122 123 datum_id.control_interval_id = control_interval_id; 124 datum_id.index = slot_idx; 125 126 call cm_determine_free_space$does_new_datum_fit (bci_header_ptr, datum_contents_length_in_bytes, (slot_idx), 127 (p_continuation ^= "0"b), IS_A_CONTINUATION, fits_in_ci, fits_in_pool, total_free_bytes); 128 129 if ^fits_in_ci 130 then call sub_err_ (dm_error_$programming_error, myname, ACTION_CANT_RESTART, null, 0, 131 "^/Control interval ^d was selected in which to allocate a datum, but the^/^10xthere is not enough free space in which to fit the datum.^/^10xThe datum is ^d bytes long;there are ^d free." 132 , control_interval_id, datum_contents_length_in_bytes, total_free_bytes); 133 134 135 if fits_in_pool 136 then bci_header.number_of_datums = number_of_slots_after_allocation; 137 else 138 do; 139 call cm_compact (cm_info.file_oid, number_of_slots_after_allocation, datum_id_string, bci_header_ptr, p_code); 140 if p_code ^= 0 141 then return; 142 143 end; 144 145 bci_header.flags.free_slot_is_present = has_free_slot_after_allocation; 146 datum_slot.flags.is_continuation = "1"b; 147 148 if p_continuation = "0"b 149 then call cm_put_datum_in_pool (cm_info.file_oid, datum_id_string, p_datum_contents_ptr, p_datum_contents_length, 150 datum_slot_ptr, bci_header_ptr, p_code); 151 152 else 153 do; 154 datum_slot.flags.is_continued = "1"b; 155 call cm_put_datum_in_pool$continued (cm_info.file_oid, datum_id_string, p_datum_contents_ptr, 156 p_datum_contents_length, datum_slot_ptr, bci_header_ptr, -1, p_continuation, p_code); 157 end; 158 159 return; 160 161 CHECK_VERSION: 162 proc (p_received_version, p_expected_version, p_structure_name); 163 dcl p_received_version char (8); 164 dcl p_expected_version char (8); 165 dcl p_structure_name char (*); 166 167 if p_received_version ^= p_expected_version 168 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 169 "^/Expected version ^d of the ^a structure. 170 Received version ^d instead.", p_expected_version, p_structure_name, p_received_version); 171 172 end CHECK_VERSION; 173 1 1 /* BEGIN INCLUDE FILE - dm_cm_info.incl.pl1 */ 1 2 1 3 /* DESCRIPTION: 1 4* The cm_info structure is used to hold per-process opening information 1 5* about a collection. It is generally allocated in the process' DM free 1 6* area, as returned by the function get_dm_free_area_. The opening_manager_ 1 7* is used to provide access the cm_info structure, keeping it in a hash 1 8* table keyed on file opening id and collection id combined. 1 9* Currently cm_info is never freed until the process terminates. Each 1 10* time a new transaction is started, detected when the current transaction 1 11* id of a process differs from cm_info.current_transaction_id, the information 1 12* in cm_info is refreshed. Storage record information is only refreshed on 1 13* demand, as most modules do not need the information in the storage record. 1 14* Instead, cm_info.storage_record_ptr is set to null (), but 1 15* cm_info.storage_record_buffer_ptr remains set to the previous value of 1 16* cm_info.storage_record_ptr. When a refreshed copy of the storage record is 1 17* requested, it is placed at the location pointed to by 1 18* cm_info.storage_record_buffer_ptr, saving the expense of re-allocation. 1 19**/ 1 20 1 21 /* HISTORY: 1 22*Written by Matthew Pierret, 10/27/82. 1 23*Modified: 1 24*01/25/83 by Matthew Pierret: Changed to version 2. Added 1 25* storage_record_buffer_ptr. This points to the storage_record. 1 26* When cm_info is refreshed, storage_record_ptr is set to null, 1 27* but storage_record_buffer_ptr continues to point at where the 1 28* storage_record was. When the storge_record is again requested, 1 29* it is put back in the same place rather than allocating a new 1 30* storage_record. 1 31*09/24/84 by Matthew Pierret: Re-wrote DESCRIPTION section. Removed the 1 32* init clause from the version component. 1 33**/ 1 34 1 35 /* format: style2,ind3,ll79 */ 1 36 1 37 dcl 1 cm_info aligned based (cm_info_ptr), 1 38 2 version char (8), 1 39 2 current_txn_id bit (36) aligned init ("0"b), 1 40 2 file_oid bit (36) aligned init ("0"b), 1 41 2 collection_id bit (36) aligned init ("0"b), 1 42 2 header_ptr ptr init (null), 1 43 2 storage_record_ptr ptr init (null), 1 44 2 storage_record_buffer_ptr 1 45 ptr init (null); 1 46 1 47 dcl cm_info_ptr ptr init (null); 1 48 dcl CM_INFO_VERSION_2 init ("cm_info2") char (8) aligned 1 49 internal static options (constant); 1 50 1 51 /* END INCLUDE FILE - dm_cm_info.incl.pl1 */ 174 175 2 1 /* BEGIN INCLUDE FILE dm_cm_datum_constants.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* Contains constants describing the extents of datums and datum 2 5* headers. The datum headers are described in dm_cm_datum.incl.pl1. 2 6* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES is the byte length of the largest 2 7* datum that can be stored in a control interval, allowing for the largest 2 8* possibledatum header. MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS is the same 2 9* in bits instead of bytes. MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 2 10* is the smallest length in bits which requires 2 11* MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES bytes to store. 2 12**/ 2 13 2 14 /* 2 15*HISTORY: 2 16*Written by Matthew Pierret, 02/07/82. 2 17*Modified: 2 18*10/29/82 by Matthew Pierret: Removed DATUM_HEADER*. 2 19*11/02/82 by Matthew Pierret: Added maximum datum contents lengths. 2 20*12/01/82 by Lindsey Spratt: Corrected values for datum header lengths. 2 21*09/18/84 by Matthew Pierret: Corrected values for maximum lengths. Added 2 22* MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS. Added 2 23* DESCRIPTION section. 2 24**/ 2 25 2 26 /* format: style2,ind3,ll79 */ 2 27 dcl CD_DATUM_HEADER_LENGTH_IN_BYTES 2 28 fixed bin init (8) internal static 2 29 options (constant); 2 30 2 31 dcl CD_DATUM_HEADER_LENGTH_IN_BITS 2 32 fixed bin init (72) internal static 2 33 options (constant); 2 34 2 35 dcl CDCN_DATUM_HEADER_LENGTH_IN_BYTES 2 36 init (4) fixed bin int static 2 37 options (constant); 2 38 2 39 dcl CDCN_DATUM_HEADER_LENGTH_IN_BITS 2 40 init (36) fixed bin int static 2 41 options (constant); 2 42 2 43 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 2 44 init (36360) fixed bin (35) internal 2 45 static options (constant); 2 46 2 47 dcl MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES 2 48 init (4040) fixed bin (35) internal 2 49 static options (constant); 2 50 2 51 dcl MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS 2 52 init (36352) fixed bin (35) internal 2 53 static options (constant); 2 54 2 55 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 176 177 3 1 /* BEGIN INCLUDE FILE dm_cm_datum.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* This include file contains the declarations of datum structures. 3 5* There are four tyes of datums: your ordinary, run-of-the-mill datum 3 6* (Datum); a continuation datum (CN Datum), which is a continuation of 3 7* another datum; a continued datum (CD Datum), which is continued (has a 3 8* continuation datum) but is not a continuation itself; and a continued 3 9* continuation datum (CDCN Datum), which is both continued and is a 3 10* continuation. To illustrate, datums can be pieced combined in the 3 11* following ways: 3 12* 3 13* 1) Datum alone. 3 14* 3 15* 2) CD Datum -> CN Datum. 3 16* 3 17* 3) CD Datum -> CDCN Datum {-> CDCN Datum -> ...-> CDCN Datum} -> CN Datum. 3 18* 3 19* continued_datum and continued_continuation_datum each contains a header 3 20* which includes the identifier of the datum which is its continuation. 3 21* continued_datum.header.full_length is the length in bits of the entire 3 22* element, i.e., the addition of the length of contents structure component 3 23* of all of the datums from CD Datum to CN Datum. 3 24**/ 3 25 3 26 /* HISTORY: 3 27*Written by Matthew Pierret, 02/07/82. 3 28*Modified: 3 29*03/25/82 by Matthew Pierret: Changed all datum structures to be unaligned. 3 30*06/14/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BYTES. 3 31*08/04/82 by Matthew Pierret: Added DATUM_HEADER_LENGTH_IN_BITS. 3 32*10/20/82 by Matthew Pierret: Split into two include files, this one and 3 33* dm_cm_datum_constants. The latter holds only and all constants 3 34* formerly in this include file. 3 35*10/29/82 by Matthew Pierret: Removed datum headers. 3 36*09/18/84 by Matthew Pierret: Added DESCRIPTION section. Added datum and 3 37* continuation_datum (mainly for illustration). 3 38*12/03/84 by Matthew Pierret: Removed the non-based structures 3 39* (cd cdcn)_datum_headers. 3 40**/ 3 41 3 42 /* format: style2,ll79,ind3 */ 3 43 3 44 dcl 1 datum unaligned based (datum_ptr), 3 45 2 contents bit (datum_contents_length_in_bits); 3 46 3 47 dcl 1 continuation_datum unaligned based (datum_ptr), 3 48 2 contents bit (datum_contents_length_in_bits); 3 49 3 50 dcl 1 continued_datum unaligned based (datum_ptr), 3 51 2 header, 3 52 3 full_length fixed bin (35), 3 53 3 continuation like datum_id, 3 54 2 contents bit (datum_contents_length_in_bits); 3 55 3 56 dcl 1 continued_continuation_datum 3 57 unaligned based (datum_ptr), 3 58 2 header, 3 59 3 continuation like datum_id, 3 60 2 contents bit (datum_contents_length_in_bits); 3 61 3 62 dcl 1 datum_id aligned based (datum_id_ptr), 3 63 2 control_interval_id 3 64 fixed bin (24) unal uns, 3 65 2 index fixed bin (12) unal uns; 3 66 3 67 dcl datum_ptr ptr init (null ()); 3 68 dcl datum_id_ptr ptr init (null ()); 3 69 dcl datum_contents_length_in_bits 3 70 fixed bin (35) init (-1); 3 71 3 72 3 73 3 74 /* END INCLUDE FILE dm_cm_datum.incl.pl1 */ 178 179 4 1 /* BEGIN INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 4 2 4 3 /* DESCRIPTION: 4 4* 4 5* The collection_manager_ manages the structure of the addressable 4 6* portion of a control interval. The addressable portion is that portion of 4 7* a control interval which the file_manager_ will allow the 4 8* collection_manager_ to address. In this description control interval will 4 9* be used to mean the addressable portion of a control interval. 4 10* 4 11* A control interval is divided into four parts: the header, the datum 4 12* position table (also known as the slot table or slots), un-used space and 4 13* used space. The beginning of the header is at offset 0, and the end of the 4 14* used space is at the end of the control interval (curently offset 4072). 4 15* Pictoriarly, a control interval is structured as follows: 4 16* 4 17* ---------------------------------------------------------------------- 4 18* | || | | | | | || || | / / | |/| | | 4 19* | Header || | slot | || un-used space || |/ / /| |/| | | 4 20* | || | table | || || | / / | |/| | | 4 21* | || | | | | | || || |/ / /| |/| | | 4 22* ---------------------------------------------------------------------- 4 23* ^ ^ ^ ^ ^ ^ ^ 4 24* | | | | | | | 4 25* | |...........|.......|...| 4 26* start of used space| | | | 4 27* | | each| 4 28* scattered free space| is a used 4 29* datum 4 30* 4 31* The basic_control_interval structure describes the header 4 32* (basic_control_interval.header, bci_header) and the slots 4 33* (basic_control_interval.datum_position_table, datum_slot for one only). 4 34* Each datum_slot contains the offset (in bytes) and the length (in bits) of 4 35* a datum in the used space. If the offset is equal to FREE_SLOT (declared 4 36* in dm_cm_basic_ci_const.incl.pl1), the slot is un-used. The slot also 4 37* contains flags describing the type of datum (see dm_cm_datum.incl.pl1). 4 38**/ 4 39 4 40 /* HISTORY: 4 41*Written by Matthew Pierret, 02/07/82. 4 42*Modified: 4 43*03/25/82 by Matthew Pierret: Fixed alignment differences basic_control_interval 4 44* and its sub-structures. 4 45*06/14/82 by Matthew Pierret: Removed common header and buffers. Changed 4 46* basic_ci_header to bci_header. Added previous_control_interval. 4 47*07/12/82 by Matthew Pierret: Changed collection_id to be bit (36) aligned. 4 48*10/29/82 by Matthew Pierret: Added flags to datum slots. 4 49*11/10/82 by Matthew Pierret: Removed continued_datum_is_present flag, as it 4 50* is not used. 4 51*03/28/84 by Matthew Pierret: Added the constants BCI_HEADER_LENGTH_IN_BYTES 4 52* and DATUM_POSITION_TABLE_OFFSET_IN_BYTES. 4 53**/ 4 54 4 55 /* format: style2 */ 4 56 dcl 1 basic_control_interval 4 57 aligned based (basic_control_interval_ptr), 4 58 2 header like bci_header, 4 59 2 datum_position_table 4 60 (0 refer (basic_control_interval.number_of_datums)) like datum_slot; 4 61 4 62 4 63 dcl 1 bci_header aligned based (bci_header_ptr), 4 64 2 layout_type char (4) aligned, 4 65 2 collection_id bit (36) aligned, 4 66 2 next_control_interval 4 67 fixed bin (24) uns unal, 4 68 2 previous_control_interval 4 69 fixed bin (24) uns unal, 4 70 2 flags unal, 4 71 3 continuation_datum_is_present 4 72 bit (1) unal, 4 73 3 free_slot_is_present 4 74 bit (1) unal, 4 75 3 must_be_zero bit (4) unal, /* reserved */ 4 76 2 scattered_free_space 4 77 fixed bin (17) unal, 4 78 2 start_of_used_space 4 79 fixed bin (17) unal, 4 80 2 number_of_datums fixed bin (17) unal; 4 81 4 82 dcl 1 datum_slot aligned based (datum_slot_ptr), 4 83 2 flags unal, 4 84 3 special_format_datum 4 85 bit (1) unal, /* reserved */ 4 86 3 is_continued bit (1) unal, 4 87 3 is_continuation bit (1) unal, 4 88 3 mbz bit (1) unal, /* reserved */ 4 89 2 offset_in_bytes fixed bin (15) uns unal, 4 90 2 length_in_bits fixed bin (17) uns unal; 4 91 4 92 dcl basic_control_interval_ptr 4 93 ptr; 4 94 dcl bci_header_ptr ptr; 4 95 dcl datum_slot_ptr ptr; 4 96 4 97 dcl BASIC_CI_LAYOUT_1 char (4) aligned init ("bci1") internal static options (constant); 4 98 4 99 /* END INCLUDE FILE dm_cm_basic_ci.incl.pl1 */ 180 181 5 1 /* BEGIN INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 5 2 5 3 /* DESCRIPTION: 5 4* 5 5* Contains entry declarations of internally available collection_manager_ 5 6* entries. Entries which are only available via the collection_manager_ 5 7* transfer vector are not included here, but are declared instead in 5 8* dm_collmgr_entry_dcls.incl.pl1. 5 9**/ 5 10 5 11 /* HISTORY: 5 12*Written by Mathew Pierret, 04/01/82. 5 13*Modified: 5 14*09/21/82 by Lindsey Spratt: Added the cm_compact$replacement entry. 5 15*10/29/82 by Matthew Pierret: Added cm_find_free_slot, cm_determine_free_space, 5 16* cm_find_ci_to_alloc_datum, cm_recursive_put. 5 17* Added cm_get_element$info*, $header*. The former is used when 5 18* the caller has a cm_info structure already; the latter is used to 5 19* get collection headers. 5 20* Added cm_opening_info$get. Removed cm_add_ci_(part thread). 5 21* Added cm_allocate_element$info. 5 22*11/09/82 by Matthew Pierret: Added argument to cm_allocate_ordered_element 5 23* calling sequence for returning free space. 5 24* Added cm_free_cn_datum("" $header). 5 25*01/07/83 by Matthew Pierret: Added: 5 26* cm_allocate_element$buffered("" _info); 5 27* cm_put_element$buffered("" _info); 5 28* cm_put_datum_in_place$buffered("" _continued); 5 29* cm_put_datum_in_pool$buffered("" _continued); 5 30* cm_compact$buffered. 5 31*01/26/83 by Matthew Pierret: Replaced cm_get_header_and_slot with 5 32* cm_get_bci_header$slot and added cm_get_bci_header$slot_exclusive. 5 33* Added cm_opening_info$get_storage_record. 5 34* Added a bit(36)aligned argument to cm_recursive_put to hold the 5 35* id of the previous datum. 5 36*02/02/83 by Matthew Pierret: Added fixed bin (17) argument to cm_find_free_slot 5 37* which is for the number of slots after allocation. 5 38*02/07/83 by Matthew Pierret: Added cm_get_id$(id info info_return_slot 5 39* header header_return_slot). 5 40* Added cm_get_element_portion$(exclusive info info_exclusive). 5 41* Added cm_get_element$bypass_info. 5 42*03/25/83 by Matthew Pierret: Added cm_free_element$info and 5 43* cm_free_opening_info. 5 44*04/29/83 by Matthew Pierret: Added cm_put_element$unprotected_info 5 45*08/04/83 by Matthew Pierret: Added the entries $does_new_datum_fit and 5 46* $does_replacement_fit to cm_determine_free_space. These entries 5 47* return flags indicating if a datum fits in the ci and the pool. 5 48* Added a bit(1)aligned parameter to cm_find_free_slot in which is 5 49* returned the new value of bci_header.free_slot_is_present. 5 50*02/07/84 by Matthew Pierret: Added cm_get_id$ptr. Removed all cm_get_id 5 51* modules except cm_get_id$id. Removed all cm_get_element$info* 5 52* entries. Changed cm_get_element_$bypass_info to have the same 5 53* calling sequence as other cm_get_element entries. 5 54*06/12/84 by Matthew Pierret: Changed cm_put_element to cm_modify 5 55* and cm_allocate_element to cm_put. 5 56* Switched the element_length/element_ptr parameter pair to be 5 57* element_ptr/element_length in cm_modify and cm_put. 5 58*07/24/84 by Matthew Pierret: Added cm_free_ci$raw_return_prev_next. 5 59*09/24/84 by Matthew Pierret: Added trace_thread_modifications_(on off) 5 60* entries to cm_free_ci and cm_replace_buffered_ci, 5 61* cm_allocate_ci$info_header, cm_opening_info$opening_table_ptr. 5 62* Removed cm_find_free_space. Commented out un-used entries. 5 63* Re-named allocate entries to put entries, except for allocate_ci. 5 64* Re-named free element and free datum entries to use delete instead 5 65* of free, and cm_recursive_put to cm_recursive_modify. 5 66* Removed cm_get_element$bypass_info. 5 67*02/27/85 by Matthew C. Pierret: Re-added cm_compact$buffered_replacement now 5 68* that cm_modify$buffered uses it. 5 69*03/07/85 by R. Michael Tague: Added cm_postcommit_increment. 5 70**/ 5 71 5 72 /* format: style2,ind3 */ 5 73 5 74 5 75 dcl cm_allocate_ci entry (bit (36) aligned, bit (36) aligned, fixed bin (24) unsigned, fixed bin (35)); 5 76 dcl cm_allocate_ci$info entry (ptr, fixed bin (24) unsigned, fixed bin (35)); 5 77 dcl cm_allocate_ci$info_header 5 78 entry (ptr, fixed bin (24) unsigned, ptr, fixed bin (35)); 5 79 5 80 5 81 dcl cm_compact entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 5 82 dcl cm_compact$buffered entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 5 83 dcl cm_compact$replacement entry (bit (36) aligned, fixed bin (17), bit (36) aligned, ptr, fixed bin (35)); 5 84 dcl cm_compact$buffered_replacement 5 85 entry (ptr, fixed bin (17), bit (36) aligned, fixed bin (35)); 5 86 5 87 dcl cm_delete_cn_datum entry (ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 5 88 5 89 dcl cm_delete_cn_datum$header 5 90 entry (ptr, ptr, ptr, bit (1) aligned, bit (36) aligned, fixed bin (35)); 5 91 5 92 dcl cm_delete entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, bit (1) aligned, 5 93 fixed bin (35)); 5 94 dcl cm_delete$info entry (ptr, bit (36) aligned, bit (1) aligned, fixed bin (35)); 5 95 5 96 dcl cm_determine_free_space$all 5 97 entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35)); 5 98 dcl cm_determine_free_space$effective 5 99 entry (ptr, fixed bin (35), bit (1) aligned, bit (1) aligned, fixed bin (35), 5 100 fixed bin (35)); 5 101 dcl cm_determine_free_space$does_new_datum_fit 5 102 entry (ptr, fixed bin (35), fixed bin (35), bit (1) aligned, bit (1) aligned, 5 103 bit (1) aligned, bit (1) aligned, fixed bin (35)); 5 104 5 105 /**** Not yet used ********************************************************* 5 106* dcl cm_determine_free_space$does_replacement_fit 5 107* entry (ptr, fixed bin (35), fixed bin (35), fixed bin (35), bit (1) aligned, 5 108* bit (1) aligned, bit (1) aligned, bit (1) aligned, fixed bin (35)); 5 109*************************************************************************** */ 5 110 5 111 dcl cm_find_ci_to_alloc_datum 5 112 entry (ptr, fixed bin (35), fixed bin (24) uns, bit (1) aligned, bit (1) aligned, ptr, 5 113 fixed bin (24) uns, fixed bin (35)); 5 114 5 115 dcl cm_find_free_slot entry (bit (36) aligned, fixed bin (24) uns, ptr, fixed bin (17), fixed bin (17), 5 116 bit (1) aligned, fixed bin (35)); 5 117 5 118 dcl cm_free_ci$info entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (35)); 5 119 dcl cm_free_ci$raw_return_prev_next 5 120 entry (ptr, fixed bin (24) uns, bit (1) aligned, fixed bin (24) uns, 5 121 fixed bin (24) uns, fixed bin (35)); 5 122 dcl cm_free_ci$trace_thread_modifications_on 5 123 entry (); 5 124 dcl cm_free_ci$trace_thread_modifications_off 5 125 entry (); 5 126 5 127 5 128 dcl cm_free_opening_info entry (bit (36) aligned, bit (36) aligned, fixed bin (35)); 5 129 5 130 dcl cm_get_bci_header entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 5 131 dcl cm_get_bci_header$exclusive 5 132 entry (bit (36) aligned, uns fixed bin (24), ptr, fixed bin (35)); 5 133 dcl cm_get_bci_header$slot entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 5 134 5 135 /**** Not yet used ******************************************************** 5 136* dcl cm_get_bci_header$slot_exclusive 5 137* entry (bit (36) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 5 138*************************************************************************** */ 5 139 5 140 dcl cm_get_element entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 5 141 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 5 142 dcl cm_get_element$exclusive 5 143 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, ptr, 5 144 fixed bin (35), ptr, bit (1) aligned, ptr, fixed bin (35), fixed bin (35)); 5 145 5 146 dcl cm_get_element_portion entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 5 147 fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 5 148 fixed bin (35), fixed bin (35)); 5 149 5 150 /**** Not yet used ******************************************************** 5 151* dcl cm_get_element_portion$exclusive 5 152* entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, 5 153* fixed bin (35), ptr, fixed bin (35), fixed bin (35), bit (1) aligned, ptr, 5 154* fixed bin (35), fixed bin (35)); 5 155*************************************************************************** */ 5 156 5 157 dcl cm_get_id$id entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 5 158 bit (1) aligned, bit (36) aligned, fixed bin (35)); 5 159 dcl cm_get_id$ptr entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, fixed bin, 5 160 bit (1) aligned, ptr, ptr, bit (36) aligned, fixed bin (35)); 5 161 5 162 dcl cm_modify entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 5 163 fixed bin (35), fixed bin (35)); 5 164 dcl cm_modify$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 5 165 fixed bin (35), fixed bin (35)); 5 166 5 167 /******* Not yet used ***************************************************** 5 168* dcl cm_modify$buffered_info 5 169* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 5 170* fixed bin (35)); 5 171*****************************************************************************/ 5 172 5 173 dcl cm_modify$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 5 174 dcl cm_modify$unprotected_info 5 175 entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 5 176 5 177 5 178 /******* Not yet used ***************************************************** 5 179* dcl cm_modify_portion entry (bit (36) aligned, bit (36) aligned, fixed bin (35), fixed bin (35), 5 180* fixed bin (35), ptr, bit (36) aligned, fixed bin (35), fixed bin (35)); 5 181*****************************************************************************/ 5 182 5 183 5 184 dcl cm_opening_info$get entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 5 185 dcl cm_opening_info$get_storage_record 5 186 entry (ptr, fixed bin (35)); 5 187 dcl cm_opening_info$full_get 5 188 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 5 189 dcl cm_opening_info$opening_table_ptr 5 190 entry () returns (ptr); 5 191 5 192 dcl cm_postcommit_increment 5 193 entry (bit (36) aligned, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35)); 5 194 5 195 dcl cm_put entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 5 196 fixed bin (35), fixed bin (35)); 5 197 dcl cm_put$buffered entry (ptr, bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), bit (36) aligned, 5 198 fixed bin (35), fixed bin (35)); 5 199 5 200 /******* Not yet used ***************************************************** 5 201* dcl cm_put$buffered_info 5 202* entry (ptr, ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), 5 203* fixed bin (35)); 5 204*****************************************************************************/ 5 205 5 206 dcl cm_put$info entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35), fixed bin (35)); 5 207 5 208 dcl cm_put_basic_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 5 209 fixed bin (35)); 5 210 5 211 dcl cm_put_cn_datum entry (ptr, ptr, fixed bin (35), bit (36) aligned, bit (36) aligned, fixed bin (35)); 5 212 5 213 dcl cm_put_datum_in_place entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 5 214 fixed bin (35)); 5 215 dcl cm_put_datum_in_place$buffered 5 216 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 5 217 dcl cm_put_datum_in_place$buffered_continued 5 218 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 5 219 fixed bin (35)); 5 220 dcl cm_put_datum_in_place$continued 5 221 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 5 222 fixed bin (35), bit (36) aligned, fixed bin (35)); 5 223 5 224 dcl cm_put_datum_in_pool entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 5 225 fixed bin (35)); 5 226 dcl cm_put_datum_in_pool$buffered 5 227 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 5 228 dcl cm_put_datum_in_pool$buffered_continued 5 229 entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35), bit (36) aligned, 5 230 fixed bin (35)); 5 231 dcl cm_put_datum_in_pool$continued 5 232 entry (bit (36) aligned, bit (36) aligned, ptr, fixed bin (35), ptr, ptr, 5 233 fixed bin (35), bit (36) aligned, fixed bin (35)); 5 234 5 235 dcl cm_put_ordered_element entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 5 236 fixed bin (35)); 5 237 dcl cm_put_ordered_element$buffered 5 238 entry (ptr, ptr, fixed bin (35), ptr, bit (36) aligned, fixed bin (35), 5 239 fixed bin (35)); 5 240 5 241 dcl cm_put_overlength_tail entry (ptr, ptr, fixed bin (35), bit (36) aligned, fixed bin (35)); 5 242 5 243 dcl cm_recursive_modify entry (ptr, bit (36) aligned, ptr, fixed bin (35), fixed bin (35), bit (36) aligned, 5 244 fixed bin (35)); 5 245 5 246 5 247 dcl cm_replace_buffered_ci$trace_thread_modifications_on 5 248 entry (); 5 249 dcl cm_replace_buffered_ci$trace_thread_modifications_off 5 250 entry (); 5 251 5 252 /* END INCLUDE FILE dm_cm_entry_dcls.incl.pl1 */ 182 183 6 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 6 2 /* format: style3 */ 6 3 6 4 /* These constants are to be used for the flags argument of sub_err_ */ 6 5 /* They are just "string (condition_info_header.action_flags)" */ 6 6 6 7 declare ( 6 8 ACTION_CAN_RESTART init (""b), 6 9 ACTION_CANT_RESTART init ("1"b), 6 10 ACTION_DEFAULT_RESTART 6 11 init ("01"b), 6 12 ACTION_QUIET_RESTART 6 13 init ("001"b), 6 14 ACTION_SUPPORT_SIGNAL 6 15 init ("0001"b) 6 16 ) bit (36) aligned internal static options (constant); 6 17 6 18 /* End include file */ 184 185 end cm_put_cn_datum; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0912.8 cm_put_cn_datum.pl1 >spec>on>7192.pbf-04/04/85>cm_put_cn_datum.pl1 174 1 01/07/85 0858.4 dm_cm_info.incl.pl1 >ldd>include>dm_cm_info.incl.pl1 176 2 01/07/85 0858.2 dm_cm_datum_constants.incl.pl1 >ldd>include>dm_cm_datum_constants.incl.pl1 178 3 01/07/85 0901.2 dm_cm_datum.incl.pl1 >ldd>include>dm_cm_datum.incl.pl1 180 4 01/07/85 0858.0 dm_cm_basic_ci.incl.pl1 >ldd>include>dm_cm_basic_ci.incl.pl1 182 5 04/04/85 0819.0 dm_cm_entry_dcls.incl.pl1 >spec>on>7192.pbf-04/04/85>dm_cm_entry_dcls.incl.pl1 184 6 04/16/82 0958.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.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. ACTION_CANT_RESTART 000022 constant bit(36) initial dcl 6-7 set ref 129* 167* BITS_PER_BYTE 000702 constant fixed bin(17,0) initial dcl 83 ref 105 CM_INFO_VERSION_2 000000 constant char(8) initial dcl 1-48 ref 101 IS_A_CONTINUATION 000022 constant bit(1) initial dcl 84 set ref 126* addr builtin function dcl 77 ref 103 110 111 automatic_bci_header 000100 automatic structure level 1 dcl 61 set ref 107* 110 automatic_datum_slot 000105 automatic structure level 1 dcl 62 set ref 108* 111 bci_header based structure level 1 dcl 4-63 bci_header_ptr 000126 automatic pointer dcl 4-94 set ref 110* 113* 118* 126* 135 139* 145 148* 155* ceil builtin function dcl 77 ref 105 cm_compact 000016 constant entry external dcl 5-81 ref 139 cm_determine_free_space$does_new_datum_fit 000020 constant entry external dcl 5-101 ref 126 cm_find_ci_to_alloc_datum 000022 constant entry external dcl 5-111 ref 113 cm_find_free_slot 000024 constant entry external dcl 5-115 ref 118 cm_info based structure level 1 dcl 1-37 cm_info_ptr 000116 automatic pointer initial dcl 1-47 set ref 100* 101 113* 118 139 148 155 1-47* cm_put_datum_in_pool 000026 constant entry external dcl 5-224 ref 148 cm_put_datum_in_pool$continued 000030 constant entry external dcl 5-231 ref 155 control_interval_id 000111 automatic fixed bin(24,0) initial unsigned dcl 65 in procedure "cm_put_cn_datum" set ref 65* 113* 118* 123 129* control_interval_id based fixed bin(24,0) level 2 in structure "datum_id" packed unsigned unaligned dcl 3-62 in procedure "cm_put_cn_datum" set ref 123* datum_contents_length_in_bits 000124 automatic fixed bin(35,0) initial dcl 3-69 set ref 3-69* datum_contents_length_in_bytes 000112 automatic fixed bin(35,0) initial dcl 66 set ref 66* 105* 113* 126* 129* datum_id based structure level 1 dcl 3-62 datum_id_ptr 000122 automatic pointer initial dcl 3-68 set ref 103* 123 124 139 148 155 3-68* datum_id_string based bit(36) dcl 73 set ref 139* 148* 155* datum_ptr 000120 automatic pointer initial dcl 3-67 set ref 3-67* datum_slot based structure level 1 dcl 4-82 datum_slot_ptr 000130 automatic pointer dcl 4-95 set ref 111* 146 148* 154 155* divide builtin function dcl 77 ref 105 dm_error_$programming_error 000012 external static fixed bin(35,0) dcl 92 set ref 129* error_table_$unimplemented_version 000014 external static fixed bin(35,0) dcl 94 set ref 167* file_oid 3 based bit(36) initial level 2 dcl 1-37 set ref 118* 139* 148* 155* fits_in_ci 000106 automatic bit(1) initial dcl 63 set ref 63* 126* 129 fits_in_pool 000107 automatic bit(1) initial dcl 63 set ref 63* 126* 135 flags 3(12) based structure level 2 in structure "bci_header" packed unaligned dcl 4-63 in procedure "cm_put_cn_datum" flags based structure level 2 in structure "datum_slot" packed unaligned dcl 4-82 in procedure "cm_put_cn_datum" free_slot_is_present 3(13) based bit(1) level 3 packed unaligned dcl 4-63 set ref 145* has_free_slot_after_allocation 000110 automatic bit(1) initial dcl 63 set ref 63* 118* 145 index 0(24) based fixed bin(12,0) level 2 packed unsigned unaligned dcl 3-62 set ref 124* is_continuation 0(02) based bit(1) level 3 packed unaligned dcl 4-82 set ref 146* is_continued 0(01) based bit(1) level 3 packed unaligned dcl 4-82 set ref 154* myname 000002 constant varying char(32) initial dcl 82 set ref 129* 167* null builtin function dcl 77 ref 129 129 1-47 3-67 3-68 167 167 number_of_datums 4(18) based fixed bin(17,0) level 2 packed unaligned dcl 4-63 set ref 135* number_of_slots_after_allocation 000114 automatic fixed bin(17,0) initial dcl 68 set ref 68* 118* 135 139* p_cm_info_ptr parameter pointer dcl 51 ref 9 100 p_code parameter fixed bin(35,0) dcl 57 set ref 9 99* 113* 115 118* 120 139* 140 148* 155* p_continuation parameter bit(36) dcl 55 set ref 9 113 126 148 155* p_datum_contents_length parameter fixed bin(35,0) dcl 53 set ref 9 105 148* 155* p_datum_contents_ptr parameter pointer dcl 52 set ref 9 148* 155* p_datum_id parameter bit(36) dcl 56 set ref 9 103 p_expected_version parameter char(8) unaligned dcl 164 set ref 161 167 167* p_received_version parameter char(8) unaligned dcl 163 set ref 161 167 167* p_structure_name parameter char unaligned dcl 165 set ref 161 167* slot_idx 000115 automatic fixed bin(17,0) initial dcl 68 set ref 68* 118* 124 126 sub_err_ 000010 constant entry external dcl 88 ref 129 167 total_free_bytes 000113 automatic fixed bin(35,0) initial dcl 66 set ref 66* 126* 129* unspec builtin function dcl 77 set ref 107* 108* version based char(8) level 2 dcl 1-37 ref 101 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 6-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 6-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 6-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 6-7 BASIC_CI_LAYOUT_1 internal static char(4) initial dcl 4-97 CDCN_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 2-39 CDCN_DATUM_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 2-35 CD_DATUM_HEADER_LENGTH_IN_BITS internal static fixed bin(17,0) initial dcl 2-31 CD_DATUM_HEADER_LENGTH_IN_BYTES internal static fixed bin(17,0) initial dcl 2-27 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 2-43 MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BYTES internal static fixed bin(35,0) initial dcl 2-47 MINIMUM_MAXIMUM_DATUM_CONTENTS_LENGTH_IN_BITS internal static fixed bin(35,0) initial dcl 2-51 basic_control_interval based structure level 1 dcl 4-56 basic_control_interval_ptr automatic pointer dcl 4-92 cm_allocate_ci 000000 constant entry external dcl 5-75 cm_allocate_ci$info 000000 constant entry external dcl 5-76 cm_allocate_ci$info_header 000000 constant entry external dcl 5-77 cm_compact$buffered 000000 constant entry external dcl 5-82 cm_compact$buffered_replacement 000000 constant entry external dcl 5-84 cm_compact$replacement 000000 constant entry external dcl 5-83 cm_delete 000000 constant entry external dcl 5-92 cm_delete$info 000000 constant entry external dcl 5-94 cm_delete_cn_datum 000000 constant entry external dcl 5-87 cm_delete_cn_datum$header 000000 constant entry external dcl 5-89 cm_determine_free_space$all 000000 constant entry external dcl 5-96 cm_determine_free_space$effective 000000 constant entry external dcl 5-98 cm_free_ci$info 000000 constant entry external dcl 5-118 cm_free_ci$raw_return_prev_next 000000 constant entry external dcl 5-119 cm_free_ci$trace_thread_modifications_off 000000 constant entry external dcl 5-124 cm_free_ci$trace_thread_modifications_on 000000 constant entry external dcl 5-122 cm_free_opening_info 000000 constant entry external dcl 5-128 cm_get_bci_header 000000 constant entry external dcl 5-130 cm_get_bci_header$exclusive 000000 constant entry external dcl 5-131 cm_get_bci_header$slot 000000 constant entry external dcl 5-133 cm_get_element 000000 constant entry external dcl 5-140 cm_get_element$exclusive 000000 constant entry external dcl 5-142 cm_get_element_portion 000000 constant entry external dcl 5-146 cm_get_id$id 000000 constant entry external dcl 5-157 cm_get_id$ptr 000000 constant entry external dcl 5-159 cm_modify 000000 constant entry external dcl 5-162 cm_modify$buffered 000000 constant entry external dcl 5-164 cm_modify$info 000000 constant entry external dcl 5-173 cm_modify$unprotected_info 000000 constant entry external dcl 5-174 cm_opening_info$full_get 000000 constant entry external dcl 5-187 cm_opening_info$get 000000 constant entry external dcl 5-184 cm_opening_info$get_storage_record 000000 constant entry external dcl 5-185 cm_opening_info$opening_table_ptr 000000 constant entry external dcl 5-189 cm_postcommit_increment 000000 constant entry external dcl 5-192 cm_put 000000 constant entry external dcl 5-195 cm_put$buffered 000000 constant entry external dcl 5-197 cm_put$info 000000 constant entry external dcl 5-206 cm_put_basic_element 000000 constant entry external dcl 5-208 cm_put_cn_datum 000000 constant entry external dcl 5-211 cm_put_datum_in_place 000000 constant entry external dcl 5-213 cm_put_datum_in_place$buffered 000000 constant entry external dcl 5-215 cm_put_datum_in_place$buffered_continued 000000 constant entry external dcl 5-217 cm_put_datum_in_place$continued 000000 constant entry external dcl 5-220 cm_put_datum_in_pool$buffered 000000 constant entry external dcl 5-226 cm_put_datum_in_pool$buffered_continued 000000 constant entry external dcl 5-228 cm_put_ordered_element 000000 constant entry external dcl 5-235 cm_put_ordered_element$buffered 000000 constant entry external dcl 5-237 cm_put_overlength_tail 000000 constant entry external dcl 5-241 cm_recursive_modify 000000 constant entry external dcl 5-243 cm_replace_buffered_ci$trace_thread_modifications_off 000000 constant entry external dcl 5-249 cm_replace_buffered_ci$trace_thread_modifications_on 000000 constant entry external dcl 5-247 continuation_datum based structure level 1 packed unaligned dcl 3-47 continued_continuation_datum based structure level 1 packed unaligned dcl 3-56 continued_datum based structure level 1 packed unaligned dcl 3-50 datum based structure level 1 packed unaligned dcl 3-44 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_VERSION 000564 constant entry internal dcl 161 ref 101 cm_put_cn_datum 000143 constant entry external dcl 9 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1054 1106 703 1064 Length 1416 703 32 273 150 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cm_put_cn_datum 270 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure cm_put_cn_datum. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cm_put_cn_datum 000100 automatic_bci_header cm_put_cn_datum 000105 automatic_datum_slot cm_put_cn_datum 000106 fits_in_ci cm_put_cn_datum 000107 fits_in_pool cm_put_cn_datum 000110 has_free_slot_after_allocation cm_put_cn_datum 000111 control_interval_id cm_put_cn_datum 000112 datum_contents_length_in_bytes cm_put_cn_datum 000113 total_free_bytes cm_put_cn_datum 000114 number_of_slots_after_allocation cm_put_cn_datum 000115 slot_idx cm_put_cn_datum 000116 cm_info_ptr cm_put_cn_datum 000120 datum_ptr cm_put_cn_datum 000122 datum_id_ptr cm_put_cn_datum 000124 datum_contents_length_in_bits cm_put_cn_datum 000126 bci_header_ptr cm_put_cn_datum 000130 datum_slot_ptr cm_put_cn_datum THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out return ext_entry ceil_fx1 divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cm_compact cm_determine_free_space$does_new_datum_fit cm_find_ci_to_alloc_datum cm_find_free_slot cm_put_datum_in_pool cm_put_datum_in_pool$continued sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$programming_error error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000135 63 000150 65 000153 66 000154 68 000156 1 47 000160 3 67 000162 3 68 000163 3 69 000164 99 000166 100 000170 101 000173 103 000205 105 000210 107 000217 108 000222 110 000223 111 000225 113 000227 115 000262 118 000265 120 000311 123 000314 124 000320 126 000323 129 000354 135 000434 139 000443 140 000464 145 000467 146 000475 148 000477 154 000527 155 000531 159 000563 161 000564 167 000575 172 000663 ----------------------------------------------------------- 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