COMPILATION LISTING OF SEGMENT bjm_create 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.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 8 /* DESCRIPTION: 9* 10* bjm_create implements before_journal_manager_$create_bj to create a 11* before journal in a specific directory with a given name. File manager 12* is used to create the journal and journal specific data is written for 13* later use. The journal is in a closed state at return time. 14* 15* The current calling sequence is very specific; it is hoped a 16* future implementation will replace the size parameters with a 17* create_info strucutre (as file_manager_ uses). As a result of the 18* current calling sequence, a user wishing to set a per-transaction 19* storage limit for the new before journal must first create it, and 20* then call before_journal_manager_$set_transaction_storage_limit. 21**/ 22 23 /* HISTORY: 24*Written by Andre Bensoussan, 07/15/82. 25*Modified: 26*10/15/82 by M. Pandolf: to use file_manager_ to manipulate data 27* management system files. 28*11/11/82 by M. Pandolf: to conform to standard entry and exit sequence. 29*12/20/82 by M. Pandolf: to better manage file_manager_ calls. 30*03/16/83 by A. Bensoussan: to set the ACL of the created journal using 31* using dm_system_data_$initializer_name so the DMS creator 32* (Daemon) can use it in rollback. 33*03/23/83 by Jeff Ives: to set p_code (parameter) on normal return. 34*03/24/83 by Lee A. Newcomb: to set p_code when a bj_recursive_invoc is 35* detected. 36*06/07/83 by A. Bensoussan: to refuse to create a journal with size < 3. 37*11/02/83 by M. Pandolf: to only allow entrynames ending in ".bj" 38*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 39* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 40*06/25/84 by Matthew Pierret: Changed to use file_manager_$add_acl_entries 41* instead of the obsolete $acl_add. 42*08/20/84 by Matthew C. Pierret: Changed to use FILE_CREATE_INFO_VERSION_2, 43* which required explicitly setting the protected flag to off and 44* setting the extended ring brackets to the ring of execution (the 45* data management ring). 46*10/18/84 by Maggie Sharpe: cleaned up dcls; corrected minor format problems; 47* checked "code" after call to fm_$close; changed to use 48* fm_$add_acl_entries instead of fm_$acl_add;changed to use "call 49* ERROR (code)" convention. 50*10/26/84 by Maggie Sharpe: to changed the label ERROR to ERROR_RETURN. 51*12/12/84 by Lindsey Spratt: Fixed to create the dmf with rings of 7,7, rather 52* than "level", since the bj's can only be used properly if the user 53* level is in the read/write bracket of the bj. When this 54* limitation is removed, bj's will be dmf's with ring brackets equal 55* to the data_management_ringno. 56*12/27/84 by Matt Pierret: Fixed call to file_manager_$add_acl_entries to use 57* the general_acl structure instead of just the acl entries. 58*12/28/84 by Lee A. Newcomb: Fixed to create the BJ DMF with rings brackets 59* [DM ring, DM ring], used acl_structures and access_mode_values 60* includes, fixed up error/cleanup processing, renamed ERROR_RETRUN 61* to ERROR_RETURN, and did some general reorganization for the above 62* changes and readability. 63*02/07/85 by Lee A. Newcomb: Fixed to use file_manager_$create_open instead of 64* separate create and open calls; added FINISH procedure and fixed 65* CLEANUP to use it so the validation level gets reset properly. 66*02/12/85 by Lee A. Newcomb: Fixed to use the correct version constant for 67* bj_pste's: BJ_PSTE_VERSION_2, and to have CLEAN_UP not do 68* all its steps unless setup to do so. 69*02/13/85 by Lee A. Newcomb: Removed unused "%include dm_bj_static;". 70*03/13/85 by Lee A. Newcomb: Added the setting of the per-transaction storage 71* limit, currently as the maximum possible value. 72*03/22/85 by Lee A. Newcomb: Fixed to setup the cleanup handler when it should 73* be and to set bjm_data_$bj_code in case it has a leftover status 74* in it. 75**/ 76 /* format: style2,ll79,ind3,^indprocbody,ifthendo,ifthen,^indnoniterdo */ 77 /* format: ^inddcls,dclind5,idind35,linecom */ 78 79 bjm_create: 80 proc (p_dir, p_entry, p_max_size, p_ci_size, p_code); 81 82 83 /* DECLARATIONS */ 84 85 /* Parameter */ 86 dcl ( 87 p_dir char (*), /* Dir path of the journal */ 88 p_entry char (*), /* Entry name of the journal */ 89 p_max_size fixed bin, /* In number of CI's */ 90 p_ci_size fixed bin, /* In number of bytes */ 91 p_code fixed bin (35) /* returned status code */ 92 ) parameter; 93 94 /* Automatic */ 95 dcl ( 96 bj_dir char (168) init (""), 97 bj_entry char (32) init (""), 98 bj_uid bit (36) aligned init (NULL_ID), 99 bjm_clean_up_needed bit (1) aligned init (FALSE), 100 ci_size fixed bin init (0), 101 code fixed bin (35) init (0), 102 create_code fixed bin (35) init (-1), 103 dm_ring fixed bin, 104 fm_oid bit (36) aligned init (NULL_ID), 105 fm_uid bit (36) init (NULL_ID), 106 level fixed bin init (0), 107 max_size fixed bin init (0), 108 1 my_bj_header like bj_header, 109 1 my_file_create_info aligned like file_create_info 110 ) automatic; 111 112 dcl 1 my_general_acl aligned automatic, 113 2 version char (8) aligned 114 init (GENERAL_ACL_VERSION_1), 115 2 count fixed bin init (1), 116 2 entries dim (1) 117 like general_extended_acl_entry; 118 119 /* Builtin */ 120 dcl (addr, length, size, substr, reverse, rtrim, unspec) 121 builtin; 122 123 /* Condition */ 124 dcl cleanup condition; 125 126 /* Constant */ 127 dcl ( 128 myname char (10) init ("bjm_create"), 129 CHECK_FOR_BJM_RECURSION bit (1) aligned init ("1"b), 130 DONT_CHECK_FOR_BJM_RECURSION bit (1) aligned init (""b), 131 FALSE bit (1) aligned init (""b), 132 NULL_ID bit (36) aligned init (""b), 133 TRUE bit (1) aligned init ("1"b) 134 ) internal static options (constant); 135 136 /* Entry */ 137 dcl ( 138 bj_ci_zero$put_header entry (bit (36) aligned, ptr, 139 fixed bin), 140 bj_ci_zero$get_pf_uid entry (bit (36) aligned) 141 returns (bit (36)), 142 bj_cleanup_tables$handler entry (fixed bin (35)), 143 bj_max_txn_storage_limit entry (ptr) returns (fixed bin (35)), 144 cu_$level_get entry (fixed bin), 145 cu_$level_set entry (fixed bin), 146 file_manager_$add_acl_entries entry (char (*), char (*), ptr, 147 fixed bin (35)), 148 file_manager_$allocate entry (bit (36) aligned, fixed bin, 149 fixed bin, fixed bin (35)), 150 file_manager_$close entry (bit (36) aligned, 151 fixed bin (35)), 152 file_manager_$create_open entry (char (*), char (*), ptr, 153 bit (36) aligned, fixed bin (35)), 154 file_manager_$delete entry (char (*), char (*), 155 fixed bin (35)), 156 file_manager_$flush_consecutive_ci entry (bit (36) aligned, fixed bin, 157 fixed bin, fixed bin (35)), 158 get_ring_ entry returns (fixed bin (3)) 159 ) external; 160 161 /* External */ 162 dcl ( 163 ( 164 dm_error_$bj_illegal_size, 165 dm_error_$bj_invalid_name, 166 dm_error_$bj_recursive_invoc 167 ) fixed bin (35), 168 dm_system_data_$initializer_name char (32) aligned 169 ) external static; 170 171 /* Static */ 172 173 /* END OF DECLARATIONS */ 174 175 COPY_PARAMETERS: 176 do; 177 bj_dir = p_dir; 178 bj_entry = p_entry; 179 max_size = p_max_size; 180 ci_size = p_ci_size; /* let fm_$create_open tell if in error */ 181 p_code = 0; /* assume we will succeed */ 182 end COPY_PARAMETERS; 183 184 185 PARTIALLY_VALIDATE_INPUT_PARAMETERS: 186 do; 187 if ^IS_VALID_BJ_NAME (bj_entry) then 188 call ERROR_RETURN (dm_error_$bj_invalid_name); 189 if max_size < 3 then 190 call ERROR_RETURN (dm_error_$bj_illegal_size); 191 end PARTIALLY_VALIDATE_INPUT_PARAMETERS; 192 193 194 SETUP_FOR_NON_STANDARD_EXIT: 195 do; 196 call cu_$level_get (level); 197 dm_ring = get_ring_ (); 198 199 on cleanup call CLEANUP (); 200 call SET_BJM_DATA_ERROR_HANDLING_VALUES (NONLOCAL_ERROR_EXIT, myname, 201 CHECK_FOR_BJM_RECURSION); 202 203 end SETUP_FOR_NON_STANDARD_EXIT; 204 205 206 FILL_IN_FILE_CREATE_INFO: 207 do; 208 unspec (my_file_create_info) = "0"b; 209 my_file_create_info.version = FILE_CREATE_INFO_VERSION_2; 210 my_file_create_info.blocking_factor = 255; 211 my_file_create_info.ci_size_in_bytes = ci_size; 212 my_file_create_info.ring_brackets (*) = dm_ring; 213 end FILL_IN_FILE_CREATE_INFO; 214 215 call cu_$level_set (dm_ring); /* set for rest of main proc */ 216 217 CREATE_NEW_BJ: 218 do; 219 call file_manager_$create_open (bj_dir, bj_entry, 220 addr (my_file_create_info), fm_oid, create_code); 221 if create_code ^= 0 then 222 call ERROR_RETURN (create_code); 223 224 fm_uid = bj_ci_zero$get_pf_uid (fm_oid); 225 bj_uid = fm_uid; 226 end CREATE_NEW_BJ; 227 228 229 GIVE_DM_DAEMON_RW_ACCESS_TO_BJ: 230 do; 231 my_general_acl.access_name (1) = dm_system_data_$initializer_name; 232 my_general_acl.mode (1) = RW_ACCESS; 233 my_general_acl.extended_mode (1) = N_ACCESS; /* BJ's don't have xacl's */ 234 my_general_acl.status_code (1) = 0; /* assume no error */ 235 236 call file_manager_$add_acl_entries (bj_dir, bj_entry, 237 addr (my_general_acl), code); 238 if code ^= 0 then 239 call ERROR_RETURN (code); 240 end GIVE_DM_DAEMON_RW_ACCESS_TO_BJ; 241 242 243 ALLOCATE_AND_INITIALIZE_ALL_BJ_CIS: 244 do; 245 246 /* Have file_manager_ allocate disk addresses for all CI's. Then */ 247 /* flush all of them to make sure the CI's and their VTOCE'S are */ 248 /* updated on disk. */ 249 250 call file_manager_$allocate (fm_oid, 1, max_size - 1, code); 251 if code ^= 0 then 252 call ERROR_RETURN (code); 253 254 call file_manager_$flush_consecutive_ci (fm_oid, 1, max_size - 1, code); 255 if code ^= 0 then 256 call ERROR_RETURN (code); 257 258 end ALLOCATE_AND_INITIALIZE_ALL_BJ_CIS; 259 260 MAKE_BJ_HEADER: 261 do; 262 263 /* Get the journal header information & write it to CI 0 and flush it */ 264 265 bj_header_ptr = addr (my_bj_header); 266 unspec (bj_header) = "0"b; 267 268 bj_header.version = BJ_PSTE_VERSION_2; 269 bj_header.bj_uid = bj_uid; 270 bj_header.ci_size = ci_size; 271 bj_header.max_size = max_size; 272 bj_header.update_frequency = BJ_UPDATE_FREQUENCY; 273 bj_header.txn_storage_limit = bj_max_txn_storage_limit (bj_header_ptr); 274 bj_header.active = "0"b; 275 276 bj_header.cl.lowest_ci = 1; 277 bj_header.cl.highest_ci = max_size - 1; 278 bj_header.cl.number_ci = max_size - 1; 279 bj_header.cl.origin_ci = 1; 280 281 call bj_ci_zero$put_header (fm_oid, bj_header_ptr, size (bj_header)); 282 283 call file_manager_$flush_consecutive_ci (fm_oid, 0 /* CI 0 */, 284 1 /* one CI to flush */, code); 285 if code ^= 0 then 286 call ERROR_RETURN (code); 287 288 end MAKE_BJ_HEADER; 289 290 291 CLOSE_BJ_FILE: 292 do; 293 call file_manager_$close (fm_oid, code); 294 if code ^= 0 then 295 call ERROR_RETURN (code); 296 end CLOSE_BJ_FILE; 297 298 299 300 call FINISH (); 301 302 MAIN_RETURN: 303 return; 304 305 /* end bjm_create; */ 306 307 NONLOCAL_ERROR_EXIT: 308 call ERROR_RETURN (bjm_data_$bj_code); 309 310 FINISH: 311 proc (); 312 313 call SET_BJM_DATA_ERROR_HANDLING_VALUES (bjm_data_$bj_default_error_label, 314 "", DONT_CHECK_FOR_BJM_RECURSION); 315 call cu_$level_set (level); 316 317 return; 318 319 end FINISH; 320 321 ERROR_RETURN: 322 proc (er_p_code); 323 324 dcl er_p_code fixed bin (35) parameter; 325 326 call CLEANUP (); 327 p_code = er_p_code; 328 goto MAIN_RETURN; 329 330 end ERROR_RETURN; 331 332 CLEANUP: 333 proc (); 334 335 /* We ignore errors as it does not matter if we get called */ 336 /* >1 times. We may not use fm_$delete_close as there is a */ 337 /* slight possibility we may have closed the file after */ 338 /* creating it before executing this code. */ 339 340 if fm_oid ^= NULL_ID then /* we opened */ 341 call file_manager_$close (fm_oid, 0); 342 343 if create_code = 0 then /* we created */ 344 call file_manager_$delete (bj_dir, bj_entry, 0); 345 346 if bjm_clean_up_needed = TRUE then 347 call bj_cleanup_tables$handler (0); 348 349 call FINISH (); 350 351 return; 352 353 end CLEANUP; 354 355 SET_BJM_DATA_ERROR_HANDLING_VALUES: 356 proc (sbdehv_p_error_exit, sbdehv_p_operation, 357 sbdehv_p_check_for_recursive_invocation); 358 359 /* This internal procedure centralizes the setting of the BJM global */ 360 /* error values in bjm_data_. It is called near the beginning of */ 361 /* this module, and in the FINISH internal procedure. ONLY THE FIRST */ 362 /* OF THESE CALLS SHOULD ASK FOR DETECTION OF A RECURSIVE INVOCATION */ 363 /* OF THE BEFORE JOURNAL MANAGER, if the other calls did, we could */ 364 /* end up getting a recursive call ERROR_RETURN, CLEANUP, FINISH, */ 365 /* this proc, etc. */ 366 /* */ 367 /* Note: if sbdehv_p_check_for_recursive_invocation and */ 368 /* bjm_clean_up_needed are both false, we do not set any values. */ 369 /* This may happen if we call ERROR_RETURN before calling this */ 370 /* proc, if the partial argument validation fails. */ 371 372 dcl ( 373 sbdehv_p_error_exit label variable, 374 sbdehv_p_operation char (*), 375 sbdehv_p_check_for_recursive_invocation 376 bit (1) aligned 377 ) parameter; 378 379 if sbdehv_p_check_for_recursive_invocation = CHECK_FOR_BJM_RECURSION then 380 if bjm_data_$bj_operation ^= "" then 381 call ERROR_RETURN (dm_error_$bj_recursive_invoc); 382 383 /* only set bjm_data_ values if we set them */ 384 if bjm_clean_up_needed = FALSE 385 & sbdehv_p_check_for_recursive_invocation 386 = DONT_CHECK_FOR_BJM_RECURSION then 387 ; 388 else 389 SET_BJM_DATA_ERROR_VALUES: 390 do; 391 bjm_clean_up_needed = TRUE; 392 bjm_data_$bj_operation = sbdehv_p_operation; 393 bjm_data_$bj_exit_err = sbdehv_p_error_exit; 394 bjm_data_$bj_code = 0; 395 end SET_BJM_DATA_ERROR_VALUES; 396 397 return; 398 399 end SET_BJM_DATA_ERROR_HANDLING_VALUES; 400 401 IS_VALID_BJ_NAME: 402 proc (ivbn_p_bj_name) reducible returns (bit (1) aligned); 403 404 dcl ivbn_p_bj_name char (*) parameter; 405 406 return ((length (rtrim (ivbn_p_bj_name)) < 33) 407 & (substr (reverse (rtrim (ivbn_p_bj_name)), 1, 3) = "jb.")); 408 409 end IS_VALID_BJ_NAME; 410 1 1 /* BEGIN INCLUDE FILE: dm_bj_header.incl.pl1 */ 1 2 /* 1 3*Currently a BJ header (CI0 of the BJ PF) is just like a bj_pst entry for the journal. 1 4* 1 5*Written by Andre Bensoussan June/July 1982 1 6*Modified: 1 7*09/29/82 by Lee A. Newcomb: To make force alignment appropriately. 1 8**/ 1 9 /* format: style4,indattr,idind33,^indcomtxt */ 1 10 1 11 dcl BJ_UPDATE_FREQUENCY fixed bin internal static init (10); 1 12 1 13 dcl bj_header_ptr ptr; 1 14 1 15 dcl 1 bj_header based (bj_header_ptr) aligned like bj_pste; 1 16 1 17 /* END INCLUDE FILE: dm_bj_header.incl.pl1 */ 411 412 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 */ 413 414 3 1 /* BEGIN INCLUDE FILE: dm_file_create_info.incl.pl1 */ 3 2 3 3 /* DESCRIPTION: 3 4* This include file contains the declaration of the file_create_info 3 5* structure. This structure is used to specify to file_manager_ 3 6* attributes a file is to have. 3 7**/ 3 8 3 9 /* HISTORY: 3 10*Written by Jeffery D. Ives, 09/16/82. 3 11* (Original concept by Lindsey L. Spratt.) 3 12*Modified: 3 13*06/15/84 by Matthew Pierret: Added ring_brackets. Changed to a char (8) 3 14* version. 3 15*11/07/84 by Matthew Pierret: Extended mbz_3 to by one word to cover the 3 16* gap caused by the double-word alignment of mbz_2. 3 17**/ 3 18 3 19 /* format: style2,ind3 */ 3 20 3 21 dcl 1 file_create_info aligned based (file_create_info_ptr), 3 22 2 version char (8) aligned, 3 23 2 ci_size_in_bytes fixed bin (35) init (4096), 3 24 /* control interval physical size, must be 4096 */ 3 25 2 blocking_factor fixed bin init (255), /* # of cis in each msf seg, must be 64 or 255 */ 3 26 2 flags unal, 3 27 3 protected bit (1) unal init ("1"b), 3 28 /* protected against inconsistency */ 3 29 3 no_concurrency bit (1) unal init ("0"b), 3 30 /* don't protect against concurrent access */ 3 31 3 no_rollback bit (1) unal init ("0"b), 3 32 /* don't protect against system failure */ 3 33 3 mbz_1 bit (15) unal init ("0"b), 3 34 /* must be zero for future compatability */ 3 35 2 ring_brackets (2) fixed bin (3) unal init (0, 0), 3 36 /* write bracket is first element, read bracket is second */ 3 37 2 mbz_3 bit (46) unal init ("0"b), 3 38 /* must be zero for future compatability */ 3 39 2 mbz_2 (30) fixed bin (71); /* must be zero for future compatability */ 3 40 3 41 dcl file_create_info_ptr ptr; 3 42 3 43 dcl FILE_CREATE_INFO_VERSION_2 3 44 char (8) aligned static options (constant) init ("FileCr 2"); 3 45 dcl ( 3 46 FCI_WRITE_BRACKET_IDX init (1), 3 47 FCI_READ_BRACKET_IDX init (2) 3 48 ) internal static options (constant); 3 49 3 50 /* ************ END OF INCLUDE FILE: dm_file_create_info.incl.pl1 ********** */ 415 416 4 1 /* BEGIN INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 4 2 4 3 /* Originally found in before journal primitives written by */ 4 4 /* A. Bensoussan. Gathered into an include file for ease of use. */ 4 5 /* See the bjm_data_.alm source for details of use. */ 4 6 4 7 /* HISTORY: 4 8*Written by Mike Pandolf, 07/14/82. 4 9*Modified: 4 10*12/06/83 by L. A. Newcomb: Renamed before_journal_manager_static_ to 4 11* bjm_data_ and moved some cells from dm_data_ to bjm_data_. 4 12**/ 4 13 4 14 /* format: style4,indattr,ifthenstmt,ifthen,^indcomtxt,idind33 */ 4 15 dcl bjm_data_$bj_operation char (32) external static; 4 16 4 17 dcl bjm_data_$bj_exit_err label variable external; 4 18 4 19 dcl bjm_data_$bj_code fixed bin (35) external; 4 20 4 21 dcl bjm_data_$bj_default_error_label label external static; 4 22 4 23 4 24 /* END INCLUDE FILE dm_bj_global_error_info.incl.pl1 */ 417 418 5 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 5 2 /* format: style3,indcomtxt,idind30 */ 5 3 5 4 declare acl_ptr pointer; 5 5 declare acl_count fixed bin; 5 6 5 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 5 8 2 version char (8) aligned, 5 9 2 count fixed bin, 5 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 5 11 5 12 declare 1 general_acl_entry based, 5 13 2 access_name character (32) unaligned, 5 14 2 mode bit (36) aligned, 5 15 2 status_code fixed bin (35); 5 16 5 17 5 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 5 19 2 version char (8) aligned, 5 20 2 count fixed bin, 5 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 5 22 5 23 declare 1 general_extended_acl_entry aligned based, 5 24 2 access_name character (32) unaligned, 5 25 2 mode bit (36) aligned, 5 26 2 extended_mode bit (36) aligned, 5 27 2 status_code fixed bin (35); 5 28 5 29 5 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 5 31 2 version char (8) aligned, 5 32 2 count fixed bin, 5 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 5 34 5 35 declare 1 general_delete_acl_entry aligned based, 5 36 2 access_name character (32) unaligned, 5 37 2 status_code fixed bin (35); 5 38 5 39 5 40 declare 1 segment_acl aligned based (acl_ptr), 5 41 2 version fixed bin, 5 42 2 count fixed bin, 5 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 5 44 5 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 5 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 5 47 5 48 5 49 declare 1 directory_acl aligned based (acl_ptr), 5 50 2 version fixed bin, 5 51 2 count fixed bin, 5 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 5 53 5 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 5 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 5 56 5 57 5 58 declare 1 delete_acl based (acl_ptr) aligned, 5 59 2 version fixed bin, 5 60 2 count fixed bin, 5 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 5 62 5 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 5 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 5 65 5 66 5 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 5 68 DIR_ACL_VERSION_1 init ("dra1"), 5 69 DELETE_ACL_VERSION_1 init ("dla1")) 5 70 char (4) int static options (constant); 5 71 5 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 5 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 5 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 5 75 char (8) internal static options (constant); 5 76 5 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 5 78 5 79 /* End include file acl_structures.incl.pl1 */ 419 420 6 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 6 2* 6 3* Values for the "access mode" argument so often used in hardcore 6 4* James R. Davis 26 Jan 81 MCR 4844 6 5* Added constants for SM access 4/28/82 Jay Pattin 6 6* Added text strings 03/19/85 Chris Jones 6 7**/ 6 8 6 9 6 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 6 11 dcl ( 6 12 N_ACCESS init ("000"b), 6 13 R_ACCESS init ("100"b), 6 14 E_ACCESS init ("010"b), 6 15 W_ACCESS init ("001"b), 6 16 RE_ACCESS init ("110"b), 6 17 REW_ACCESS init ("111"b), 6 18 RW_ACCESS init ("101"b), 6 19 S_ACCESS init ("100"b), 6 20 M_ACCESS init ("010"b), 6 21 A_ACCESS init ("001"b), 6 22 SA_ACCESS init ("101"b), 6 23 SM_ACCESS init ("110"b), 6 24 SMA_ACCESS init ("111"b) 6 25 ) bit (3) internal static options (constant); 6 26 6 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 6 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 6 29 6 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 6 31 static options (constant); 6 32 6 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 6 34 static options (constant); 6 35 6 36 dcl ( 6 37 N_ACCESS_BIN init (00000b), 6 38 R_ACCESS_BIN init (01000b), 6 39 E_ACCESS_BIN init (00100b), 6 40 W_ACCESS_BIN init (00010b), 6 41 RW_ACCESS_BIN init (01010b), 6 42 RE_ACCESS_BIN init (01100b), 6 43 REW_ACCESS_BIN init (01110b), 6 44 S_ACCESS_BIN init (01000b), 6 45 M_ACCESS_BIN init (00010b), 6 46 A_ACCESS_BIN init (00001b), 6 47 SA_ACCESS_BIN init (01001b), 6 48 SM_ACCESS_BIN init (01010b), 6 49 SMA_ACCESS_BIN init (01011b) 6 50 ) fixed bin (5) internal static options (constant); 6 51 6 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 421 422 423 424 end bjm_create; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/08/85 1128.0 bjm_create.pl1 >spec>on>41-15>bjm_create.pl1 411 1 01/07/85 0857.4 dm_bj_header.incl.pl1 >ldd>include>dm_bj_header.incl.pl1 413 2 04/05/85 0924.4 dm_bj_pste.incl.pl1 >ldd>include>dm_bj_pste.incl.pl1 415 3 01/07/85 0901.1 dm_file_create_info.incl.pl1 >ldd>include>dm_file_create_info.incl.pl1 417 4 01/07/85 0857.3 dm_bj_global_error_info.incl.pl1 >ldd>include>dm_bj_global_error_info.incl.pl1 419 5 10/14/83 1606.6 acl_structures.incl.pl1 >ldd>include>acl_structures.incl.pl1 421 6 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_PSTE_VERSION_2 constant fixed bin(17,0) initial dcl 2-42 ref 268 BJ_UPDATE_FREQUENCY constant fixed bin(17,0) initial dcl 1-11 ref 272 CHECK_FOR_BJM_RECURSION 000011 constant bit(1) initial dcl 127 set ref 200* 379 DONT_CHECK_FOR_BJM_RECURSION 000023 constant bit(1) initial dcl 127 set ref 313* 384 FALSE constant bit(1) initial dcl 127 ref 95 384 FILE_CREATE_INFO_VERSION_2 000002 constant char(8) initial dcl 3-43 ref 209 GENERAL_ACL_VERSION_1 000000 constant char(8) initial unaligned dcl 5-72 ref 112 NULL_ID constant bit(36) initial dcl 127 ref 95 95 95 340 N_ACCESS constant bit(3) initial unaligned dcl 6-11 ref 233 RW_ACCESS constant bit(3) initial unaligned dcl 6-11 ref 232 TRUE constant bit(1) initial dcl 127 ref 346 391 access_name 3 000376 automatic char(32) array level 3 packed unaligned dcl 112 set ref 231* active 7 based bit(1) level 2 dcl 1-15 set ref 274* addr builtin function dcl 120 ref 219 219 236 236 265 bj_ci_zero$get_pf_uid 000012 constant entry external dcl 137 ref 224 bj_ci_zero$put_header 000010 constant entry external dcl 137 ref 281 bj_cleanup_tables$handler 000014 constant entry external dcl 137 ref 346 bj_dir 000100 automatic char(168) initial unaligned dcl 95 set ref 95* 177* 219* 236* 343* bj_entry 000152 automatic char(32) initial unaligned dcl 95 set ref 95* 178* 187* 219* 236* 343* bj_header based structure level 1 dcl 1-15 set ref 266* 281 281 bj_header_ptr 000422 automatic pointer dcl 1-13 set ref 265* 266 268 269 270 271 272 273 273* 274 276 277 278 279 281* 281 281 bj_max_txn_storage_limit 000016 constant entry external dcl 137 ref 273 bj_pste based structure level 1 dcl 2-48 bj_uid 4 based bit(36) level 2 in structure "bj_header" dcl 1-15 in procedure "bjm_create" set ref 269* bj_uid 000162 automatic bit(36) initial dcl 95 in procedure "bjm_create" set ref 95* 225* 269 bjm_clean_up_needed 000163 automatic bit(1) initial dcl 95 set ref 95* 346 384 391* bjm_data_$bj_code 000056 external static fixed bin(35,0) dcl 4-19 set ref 307* 394* bjm_data_$bj_default_error_label 000060 external static label variable dcl 4-21 set ref 313* bjm_data_$bj_exit_err 000054 external static label variable dcl 4-17 set ref 393* bjm_data_$bj_operation 000052 external static char(32) unaligned dcl 4-15 set ref 379 392* blocking_factor 3 000274 automatic fixed bin(17,0) initial level 2 dcl 95 set ref 95* 210* ci_size 000164 automatic fixed bin(17,0) initial dcl 95 in procedure "bjm_create" set ref 95* 180* 211 270 ci_size 5 based fixed bin(17,0) level 2 in structure "bj_header" dcl 1-15 in procedure "bjm_create" set ref 270* ci_size_in_bytes 2 000274 automatic fixed bin(35,0) initial level 2 dcl 95 set ref 95* 211* cl 34 based structure level 2 dcl 1-15 cleanup 000414 stack reference condition dcl 124 ref 199 code 000165 automatic fixed bin(35,0) initial dcl 95 set ref 95* 236* 238 238* 250* 251 251* 254* 255 255* 283* 285 285* 293* 294 294* count 2 000376 automatic fixed bin(17,0) initial level 2 dcl 112 set ref 112* create_code 000166 automatic fixed bin(35,0) initial dcl 95 set ref 95* 219* 221 221* 343 cu_$level_get 000020 constant entry external dcl 137 ref 196 cu_$level_set 000022 constant entry external dcl 137 ref 215 315 delete_acl_entry based structure level 1 dcl 5-63 directory_acl_entry based structure level 1 dcl 5-54 dm_error_$bj_illegal_size 000042 external static fixed bin(35,0) dcl 162 set ref 189* dm_error_$bj_invalid_name 000044 external static fixed bin(35,0) dcl 162 set ref 187* dm_error_$bj_recursive_invoc 000046 external static fixed bin(35,0) dcl 162 set ref 379* dm_ring 000167 automatic fixed bin(17,0) dcl 95 set ref 197* 212 215* dm_system_data_$initializer_name 000050 external static char(32) dcl 162 ref 231 entries 3 000376 automatic structure array level 2 dcl 112 er_p_code parameter fixed bin(35,0) dcl 324 ref 321 327 extended_mode 14 000376 automatic bit(36) array level 3 dcl 112 set ref 233* file_create_info based structure level 1 dcl 3-21 file_manager_$add_acl_entries 000024 constant entry external dcl 137 ref 236 file_manager_$allocate 000026 constant entry external dcl 137 ref 250 file_manager_$close 000030 constant entry external dcl 137 ref 293 340 file_manager_$create_open 000032 constant entry external dcl 137 ref 219 file_manager_$delete 000034 constant entry external dcl 137 ref 343 file_manager_$flush_consecutive_ci 000036 constant entry external dcl 137 ref 254 283 flags 4 000274 automatic structure level 2 packed unaligned dcl 95 fm_oid 000170 automatic bit(36) initial dcl 95 set ref 95* 219* 224* 250* 254* 281* 283* 293* 340 340* fm_uid 000171 automatic bit(36) initial unaligned dcl 95 set ref 95* 224* 225 general_acl_entry based structure level 1 unaligned dcl 5-12 general_delete_acl_entry based structure level 1 dcl 5-35 general_extended_acl_entry based structure level 1 dcl 5-23 get_ring_ 000040 constant entry external dcl 137 ref 197 highest_ci 36 based fixed bin(24,0) level 3 unsigned dcl 1-15 set ref 277* ivbn_p_bj_name parameter char unaligned dcl 404 ref 401 406 406 length builtin function dcl 120 ref 406 level 000172 automatic fixed bin(17,0) initial dcl 95 set ref 95* 196* 315* lowest_ci 35 based fixed bin(24,0) level 3 unsigned dcl 1-15 set ref 276* max_size 000173 automatic fixed bin(17,0) initial dcl 95 in procedure "bjm_create" set ref 95* 179* 189 250 254 271 277 278 max_size 6 based fixed bin(17,0) level 2 in structure "bj_header" dcl 1-15 in procedure "bjm_create" set ref 271* mbz_1 4(03) 000274 automatic bit(15) initial level 3 packed unaligned dcl 95 set ref 95* mbz_3 4(26) 000274 automatic bit(46) initial level 2 packed unaligned dcl 95 set ref 95* mode 13 000376 automatic bit(36) array level 3 dcl 112 set ref 232* my_bj_header 000174 automatic structure level 1 unaligned dcl 95 set ref 265 my_file_create_info 000274 automatic structure level 1 dcl 95 set ref 208* 219 219 my_general_acl 000376 automatic structure level 1 dcl 112 set ref 236 236 myname 000004 constant char(10) initial unaligned dcl 127 set ref 200* no_concurrency 4(01) 000274 automatic bit(1) initial level 3 packed unaligned dcl 95 set ref 95* no_rollback 4(02) 000274 automatic bit(1) initial level 3 packed unaligned dcl 95 set ref 95* number_ci 37 based fixed bin(24,0) level 3 unsigned dcl 1-15 set ref 278* origin_ci 34 based fixed bin(24,0) level 3 unsigned dcl 1-15 set ref 279* p_ci_size parameter fixed bin(17,0) dcl 86 ref 79 180 p_code parameter fixed bin(35,0) dcl 86 set ref 79 181* 327* p_dir parameter char unaligned dcl 86 ref 79 177 p_entry parameter char unaligned dcl 86 ref 79 178 p_max_size parameter fixed bin(17,0) dcl 86 ref 79 179 protected 4 000274 automatic bit(1) initial level 3 packed unaligned dcl 95 set ref 95* reverse builtin function dcl 120 ref 406 ring_brackets 4(18) 000274 automatic fixed bin(3,0) initial array level 2 packed unaligned dcl 95 set ref 95* 95* 212* rtrim builtin function dcl 120 ref 406 406 sbdehv_p_check_for_recursive_invocation parameter bit(1) dcl 372 ref 355 379 384 sbdehv_p_error_exit parameter label variable dcl 372 ref 355 393 sbdehv_p_operation parameter char unaligned dcl 372 ref 355 392 segment_acl_entry based structure level 1 dcl 5-45 size builtin function dcl 120 ref 281 281 status_code 15 000376 automatic fixed bin(35,0) array level 3 dcl 112 set ref 234* substr builtin function dcl 120 ref 406 txn_storage_limit 33 based fixed bin(35,0) level 2 dcl 1-15 set ref 273* unspec builtin function dcl 120 set ref 208* 266* update_frequency 14 based fixed bin(17,0) level 2 dcl 1-15 set ref 272* version based fixed bin(17,0) level 2 in structure "bj_header" dcl 1-15 in procedure "bjm_create" set ref 268* version 000376 automatic char(8) initial level 2 in structure "my_general_acl" dcl 112 in procedure "bjm_create" set ref 112* version 000274 automatic char(8) level 2 in structure "my_file_create_info" dcl 95 in procedure "bjm_create" set ref 209* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 5-77 A_ACCESS internal static bit(3) initial unaligned dcl 6-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 DELETE_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-33 DIR_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 E_ACCESS internal static bit(3) initial unaligned dcl 6-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 FCI_READ_BRACKET_IDX internal static fixed bin(17,0) initial dcl 3-45 FCI_WRITE_BRACKET_IDX internal static fixed bin(17,0) initial dcl 3-45 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial unaligned dcl 5-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial unaligned dcl 5-72 M_ACCESS internal static bit(3) initial unaligned dcl 6-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 REW_ACCESS internal static bit(3) initial unaligned dcl 6-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RE_ACCESS internal static bit(3) initial unaligned dcl 6-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 R_ACCESS internal static bit(3) initial unaligned dcl 6-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 6-30 SEG_ACL_VERSION_1 internal static char(4) initial unaligned dcl 5-67 SMA_ACCESS internal static bit(3) initial unaligned dcl 6-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 SM_ACCESS internal static bit(3) initial unaligned dcl 6-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 S_ACCESS internal static bit(3) initial unaligned dcl 6-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 W_ACCESS internal static bit(3) initial unaligned dcl 6-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 6-36 acl_count automatic fixed bin(17,0) dcl 5-5 acl_ptr automatic pointer dcl 5-4 bj_pste_ptr automatic pointer dcl 2-45 delete_acl based structure level 1 dcl 5-58 delete_acl_array based structure array level 1 dcl 5-64 directory_acl based structure level 1 dcl 5-49 directory_acl_array based structure array level 1 dcl 5-55 file_create_info_ptr automatic pointer dcl 3-41 general_acl based structure level 1 dcl 5-7 general_delete_acl based structure level 1 dcl 5-30 general_extended_acl based structure level 1 dcl 5-18 segment_acl based structure level 1 dcl 5-40 segment_acl_array based structure array level 1 dcl 5-46 NAMES DECLARED BY EXPLICIT CONTEXT. ALLOCATE_AND_INITIALIZE_ALL_BJ_CIS 000461 constant label dcl 243 CLEANUP 001000 constant entry internal dcl 332 ref 199 326 CLOSE_BJ_FILE 000656 constant label dcl 291 COPY_PARAMETERS 000141 constant label dcl 175 CREATE_NEW_BJ 000334 constant label dcl 217 ERROR_RETURN 000755 constant entry internal dcl 321 ref 187 189 221 238 251 255 285 294 307 379 FILL_IN_FILE_CREATE_INFO 000275 constant label dcl 206 FINISH 000715 constant entry internal dcl 310 ref 300 349 GIVE_DM_DAEMON_RW_ACCESS_TO_BJ 000412 constant label dcl 229 IS_VALID_BJ_NAME 001157 constant entry internal dcl 401 ref 187 MAIN_RETURN 000703 constant label dcl 302 ref 328 MAKE_BJ_HEADER 000545 constant label dcl 260 NONLOCAL_ERROR_EXIT 000704 constant label dcl 307 ref 200 200 PARTIALLY_VALIDATE_INPUT_PARAMETERS 000161 constant label dcl 185 SETUP_FOR_NON_STANDARD_EXIT 000210 constant label dcl 194 SET_BJM_DATA_ERROR_HANDLING_VALUES 001071 constant entry internal dcl 355 ref 200 313 SET_BJM_DATA_ERROR_VALUES 001135 constant label dcl 388 bjm_create 000041 constant entry external dcl 79 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1600 1662 1246 1610 Length 2222 1246 62 323 332 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME bjm_create 339 external procedure is an external procedure. on unit on line 199 64 on unit FINISH 82 internal procedure is called by several nonquick procedures. ERROR_RETURN 64 internal procedure is called by several nonquick procedures. CLEANUP 86 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_create. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME bjm_create 000100 bj_dir bjm_create 000152 bj_entry bjm_create 000162 bj_uid bjm_create 000163 bjm_clean_up_needed bjm_create 000164 ci_size bjm_create 000165 code bjm_create 000166 create_code bjm_create 000167 dm_ring bjm_create 000170 fm_oid bjm_create 000171 fm_uid bjm_create 000172 level bjm_create 000173 max_size bjm_create 000174 my_bj_header bjm_create 000274 my_file_create_info bjm_create 000376 my_general_acl bjm_create 000422 bj_header_ptr bjm_create THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as 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 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bj_ci_zero$get_pf_uid bj_ci_zero$put_header bj_cleanup_tables$handler bj_max_txn_storage_limit cu_$level_get cu_$level_set file_manager_$add_acl_entries file_manager_$allocate file_manager_$close file_manager_$create_open file_manager_$delete file_manager_$flush_consecutive_ci get_ring_ 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 dm_error_$bj_illegal_size dm_error_$bj_invalid_name dm_error_$bj_recursive_invoc dm_system_data_$initializer_name LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 79 000034 95 000061 112 000135 177 000141 178 000147 179 000154 180 000156 181 000160 187 000161 189 000176 196 000210 197 000217 199 000230 200 000252 208 000275 209 000300 210 000302 211 000304 212 000306 215 000325 219 000334 221 000367 224 000377 225 000410 231 000412 232 000417 233 000421 234 000422 236 000423 238 000451 250 000461 251 000503 254 000513 255 000535 265 000545 266 000547 268 000552 269 000554 270 000556 271 000560 272 000562 273 000564 274 000575 276 000577 277 000601 278 000604 279 000607 281 000611 283 000626 285 000646 293 000656 294 000667 300 000677 302 000703 307 000704 424 000713 310 000714 313 000722 315 000743 317 000753 321 000754 326 000762 327 000767 328 000774 332 000777 340 001005 343 001021 346 001046 349 001062 351 001067 355 001070 379 001104 384 001125 391 001135 392 001137 393 001147 394 001155 397 001156 401 001157 406 001170 ----------------------------------------------------------- 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