COMPILATION LISTING OF SEGMENT om_get_opening Compiled by: Multics PL/I Compiler, Release 33d, of April 24, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 92-09-24_2234.32_Thu_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* Finds and returns a pointer to the opening associated with the given 10* opening identifier. A hash is used to keep track of pointers to opening 11* info structures. The id is bit (72) aligned. The p_table_ptr should 12* point to a table set up by opening_manager_$init. 13**/ 14 15 /* HISTORY: 16* 17*Written by Matthew Pierret, 07/26/82. 18*Modified: 19*08/10/82 by Matthew Pierret: Changed p_code to fixed bin (35) from (17). 20* Also changed ot.number_of_entries to ot.upper_bound. 21*04/12/83 by Matthew Pierret: Changed to use OPENING_TABLE_VERSION_2. This 22* represents no real change. The version was changed because 23* other modules used a different structure with the same version. 24*11/08/84 by Stanford S. Cox: MAIN: Moved CV inline, updated sub_err_ call. 25*12/05/84 by Stanford S. Cox: MAIN: Chg to signal sub_err_ if open table 26* appears damaged. 27**/ 28 29 /* format: style2,ind3 */ 30 om_get_opening: 31 proc (p_table_ptr, p_id, p_info_ptr, p_code); 32 33 /* START OF DECLARATIONS */ 34 /* Parameter */ 35 36 dcl p_table_ptr ptr parameter; 37 dcl p_id bit (72) aligned parameter; 38 dcl p_info_ptr ptr parameter; 39 dcl p_code fixed bin (35) parameter; 40 41 /* Automatic */ 42 43 dcl bound_idx fixed bin (17); 44 dcl hash_index fixed bin (35); 45 dcl opening_id bit (72) aligned; 46 47 /* Based */ 48 /* Builtin */ 49 50 dcl (bin, mod, null) builtin; 51 52 /* Constant */ 53 54 dcl myname char (32) varying init ("om_get_opening") int static options (constant); 55 56 /* Entry */ 57 58 dcl sub_err_ entry () options (variable); 59 60 /* External */ 61 62 dcl dm_error_$no_opening ext fixed bin (35); 63 dcl dm_error_$open_table_damaged 64 ext fixed bin (35); 65 dcl error_table_$unimplemented_version 66 ext fixed bin (35); 67 68 /* END OF DECLARATIONS */ 69 70 p_code = 0; 71 p_info_ptr = null; 72 opening_table_ptr = p_table_ptr; 73 opening_id = p_id; 74 75 if opening_table.version ^= OPENING_TABLE_VERSION_2 76 then call sub_err_ (error_table_$unimplemented_version, myname, ACTION_CANT_RESTART, null, 0, 77 "^/Expected version ""^8a"" of ^a structure; received ""^8a"".", OPENING_TABLE_VERSION_2, "opening_table", 78 opening_table.version); 79 80 /*** hash_index = hash_index_ (addr (opening_id), OPENING_ID_LENGTH, OT_HASH_BIAS, opening_table.upper_bound); */ 81 82 hash_index = HASH_INDEX (opening_id, opening_table.upper_bound); 83 84 hash_bead_ptr = opening_table.hash_entry_ptr (hash_index); 85 if hash_bead_ptr = null 86 then p_code = dm_error_$no_opening; 87 else 88 do; 89 do bound_idx = 1 to HASH_UPPER_BOUND while (hash_bead.next_ptr ^= null & hash_bead.key ^= opening_id); 90 hash_bead_ptr = hash_bead.next_ptr; 91 end; 92 93 if bound_idx > HASH_UPPER_BOUND 94 then call sub_err_ (dm_error_$open_table_damaged, myname, ACTION_CANT_RESTART, null (), 0, 95 "^/Searching for opening id ^.3b.", opening_id); 96 else if hash_bead.key = opening_id 97 then p_info_ptr = hash_bead.info_ptr; 98 else p_code = dm_error_$no_opening; 99 100 end; 101 102 return; 103 104 105 106 hash_index: 107 entry (p_hash_opening_id, p_hash_upper_bound) returns (fixed bin (17)); 108 dcl p_hash_opening_id bit (72) aligned; 109 dcl p_hash_upper_bound fixed bin (35); 110 return (HASH_INDEX (p_hash_opening_id, p_hash_upper_bound)); 111 112 HASH_INDEX: 113 proc (hi_p_opening_id, hi_p_upper_bound) returns (fixed bin (17)); 114 dcl hi_p_opening_id bit (72) aligned; 115 dcl hi_p_upper_bound fixed bin (35); 116 return (mod (bin (hi_p_opening_id, 71), hi_p_upper_bound)); 117 end HASH_INDEX; 118 1 1 /* BEGIN INCLUDE FILE dm_om_table.incl.pl1 */ 1 2 1 3 1 4 /* 1 5*Modified: 1 6*08/11/82 by Matthew Pierret: Changed hash_entry_ptr array to be 0-originned. 1 7*04/12/83 by Matthew Pierret: Changed to version 2, which should have been done 1 8* on 08/11/82. 1 9*10/29/84 by Stanford S. Cox: Changed to not init version. 1 10*12/04/84 by Stanford S. Cox: Added HASH_UPPER_BOUND. 1 11**/ 1 12 /* format: style2,ind3 */ 1 13 1 14 dcl 1 opening_table aligned based (opening_table_ptr), 1 15 2 version char (8), 1 16 2 upper_bound fixed bin (35), 1 17 2 hash_entry_ptr (0:ot_upper_bound refer (opening_table.upper_bound)) ptr; 1 18 1 19 dcl opening_table_ptr ptr; 1 20 dcl OPENING_TABLE_VERSION_2 1 21 init ("opentbl2") char (8) aligned int static options (constant); 1 22 dcl ot_upper_bound fixed bin (35); 1 23 dcl HASH_UPPER_BOUND fixed bin (17) int static options (constant) init (10000); 1 24 1 25 /* END INCLUDE FILE dm_om_table.incl.pl1 */ 119 120 2 1 /* BEGIN INCLUDE FILE dm_om_hash_bead.incl.pl1 */ 2 2 2 3 2 4 /* format: style2,ind3 */ 2 5 dcl 1 hash_bead aligned based (hash_bead_ptr), 2 6 2 key bit (72) aligned, 2 7 2 info_ptr ptr, 2 8 2 next_ptr ptr; 2 9 2 10 dcl hash_bead_ptr ptr; 2 11 2 12 2 13 /* END INCLUDE FILE dm_om_hash_bead.incl.pl1 */ 121 122 3 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 3 2 /* format: style3 */ 3 3 3 4 /* These constants are to be used for the flags argument of sub_err_ */ 3 5 /* They are just "string (condition_info_header.action_flags)" */ 3 6 3 7 declare ( 3 8 ACTION_CAN_RESTART init (""b), 3 9 ACTION_CANT_RESTART init ("1"b), 3 10 ACTION_DEFAULT_RESTART 3 11 init ("01"b), 3 12 ACTION_QUIET_RESTART 3 13 init ("001"b), 3 14 ACTION_SUPPORT_SIGNAL 3 15 init ("0001"b) 3 16 ) bit (36) aligned internal static options (constant); 3 17 3 18 /* End include file */ 123 124 125 end om_get_opening; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/24/92 2234.3 om_get_opening.pl1 >spec>inst>1016>om_get_opening.pl1 119 1 01/07/85 1001.2 dm_om_table.incl.pl1 >ldd>incl>dm_om_table.incl.pl1 121 2 01/07/85 0959.3 dm_om_hash_bead.incl.pl1 >ldd>incl>dm_om_hash_bead.incl.pl1 123 3 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>incl>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 000000 constant bit(36) initial dcl 3-7 set ref 75* 93* HASH_UPPER_BOUND constant fixed bin(17,0) initial dcl 1-23 ref 89 93 OPENING_TABLE_VERSION_2 000002 constant char(8) initial dcl 1-20 set ref 75 75* bin builtin function dcl 50 ref 116 bound_idx 000100 automatic fixed bin(17,0) dcl 43 set ref 89* 93 dm_error_$no_opening 000012 external static fixed bin(35,0) dcl 62 ref 85 98 dm_error_$open_table_damaged 000014 external static fixed bin(35,0) dcl 63 set ref 93* error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 65 set ref 75* hash_bead based structure level 1 dcl 2-5 hash_bead_ptr 000106 automatic pointer dcl 2-10 set ref 84* 85 89 89 90* 90 96 96 hash_entry_ptr 4 based pointer array level 2 dcl 1-14 ref 84 hash_index 000101 automatic fixed bin(35,0) dcl 44 set ref 82* 84 hi_p_opening_id parameter bit(72) dcl 114 ref 112 116 hi_p_upper_bound parameter fixed bin(35,0) dcl 115 ref 112 116 info_ptr 2 based pointer level 2 dcl 2-5 ref 96 key based bit(72) level 2 dcl 2-5 ref 89 96 mod builtin function dcl 50 ref 116 myname 000004 constant varying char(32) initial dcl 54 set ref 75* 93* next_ptr 4 based pointer level 2 dcl 2-5 ref 89 90 null builtin function dcl 50 ref 71 75 75 85 89 93 93 opening_id 000102 automatic bit(72) dcl 45 set ref 73* 82* 89 93* 96 opening_table based structure level 1 dcl 1-14 opening_table_ptr 000104 automatic pointer dcl 1-19 set ref 72* 75 75 82 84 p_code parameter fixed bin(35,0) dcl 39 set ref 30 70* 85* 98* p_hash_opening_id parameter bit(72) dcl 108 set ref 106 110* p_hash_upper_bound parameter fixed bin(35,0) dcl 109 set ref 106 110* p_id parameter bit(72) dcl 37 ref 30 73 p_info_ptr parameter pointer dcl 38 set ref 30 71* 96* p_table_ptr parameter pointer dcl 36 ref 30 72 sub_err_ 000010 constant entry external dcl 58 ref 75 93 upper_bound 2 based fixed bin(35,0) level 2 dcl 1-14 set ref 82* version based char(8) level 2 dcl 1-14 set ref 75 75* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACTION_CAN_RESTART internal static bit(36) initial dcl 3-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 3-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 3-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 3-7 ot_upper_bound automatic fixed bin(35,0) dcl 1-22 NAMES DECLARED BY EXPLICIT CONTEXT. HASH_INDEX 000424 constant entry internal dcl 112 ref 82 110 hash_index 000371 constant entry external dcl 106 om_get_opening 000100 constant entry external dcl 30 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 536 556 436 546 Length 776 436 20 203 77 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME om_get_opening 142 external procedure is an external procedure. HASH_INDEX internal procedure shares stack frame of external procedure om_get_opening. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME om_get_opening 000100 bound_idx om_get_opening 000101 hash_index om_get_opening 000102 opening_id om_get_opening 000104 opening_table_ptr om_get_opening 000106 hash_bead_ptr om_get_opening THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac mdfx3 signal_op ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$no_opening dm_error_$open_table_damaged error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 30 000073 70 000107 71 000111 72 000113 73 000116 75 000122 82 000207 84 000224 85 000230 89 000241 90 000262 91 000264 93 000266 96 000341 98 000352 102 000356 106 000365 110 000377 112 000424 116 000426 ----------------------------------------------------------- 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