COMPILATION LISTING OF SEGMENT fm_sys_pn_tbl_delete Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/04/85 0945.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* DESCRIPTION: 8* 9* This routine removes an entry from the file manager's System 10* Pathname Table (sys_pn_tbl). This routine locks and unlocks the 11* sys_pn_tbl, so if the caller already has the sys_pn_tbl locked and wishes 12* it to stay locked, they must lock the sys_pn_tbl after this routine 13* returns. The caller must also have set the validation level 14* appropriately. 15* 16* There are two entries, as follows: 17* 18* fm_sys_pn_tbl_delete$fm_sys_pn_tbl_delete - 19* This entry is the target of fm_sys_on_tbl_util_$delete and 20* is used by fm_delete_close_$post_transaction. 21* It decrements the reference count of processes holding the 22* file open. If the reference count goes to 0, deletes the entry. 23* It is not an error to attempt to close a file, and subsequently to 24* try to delete its sys_pn_tbl entry, after the file has been deleted. 25* For this reason, if the entry is not in use or is in use by another 26* fiel, this operation returns without error. 27* 28* fm_sys_pn_tbl_delete$redelete_force - 29* This entry is the target of fm_sys_pn_tbl_util_$redelete_force. 30* It is used by undo and postcommit_do operations 31* which must be able to force the deletion of the entry regardless 32* of whether other processes have the file open. These operations 33* are the points at which protected files are actually deleted 34* after the transaction has committed itself to doing the deletion 35* (i.,e., the deletion will not be undone). It is safe to delete 36* the file's entry in the sys_pn_tbl, even if the file is open to 37* another process, if no other transaction has a before image against 38* the file. For this reason, 39* ** this entry requires that the current transaction have an exclusive ** 40* ** lock on the file. ** 41* 42* Error handling 43* 44* Possible errors are handled in one of two ways: the LOG routine 45* or the ERROR_RETURN routine. The LOG routine simply logs the event and 46* returns to the main procedure. It is used if the sys_pn_tbl entry 47* does not describe the specified file and if an error occurs in the 48* cleanup handler (FINISH routine). The ERROR_RETURN logs the event 49* and calls fm_error_util_$signal, signalling the fm_sub_error_ condition. 50* The ERROR_RETURN routine does not return and is used for errors which 51* represent a real error. 52* 53**/ 54 55 /* HISTORY: 56* 57*Written by Matthew Pierret, 06/27/84. 58*Modified: 59*10/30/84 by Matthew Pierret: Answered audit comments: removed sub_err_flags, 60* fixed HISTORY section, fixed typo in DESCRIPTION section. 61* Added the delete_force and redelete_force entries. Changed to use 62* LOG_SV (in dm_log_sv_codes.incl.pl1). 63*01/10/85 by Matthew Pierret: Changed to not signal error if not-in-use or 64* if file uids don't match on the assumption that the file was 65* deleted. 66*01/10/85 by Matthew C. Pierret: Added ERROR_RETURN, LOG and MAKE_MESSAGE 67* routines for better error handling. 68*02/28/85 by Matthew C. Pierret: Changed to not log if the UIDs mis-match. 69* That just means that the entry has already been deleted and 70* re-used. 71*03/05/85 by Steve Herbst: Replaced dm_log_ with dm_misc_util_$log. 72*03/14/85 by Matthew C. Pierret: Changed to only unlock if the lock was 73* successfully obtained and was not already locked by this process 74* (it is invalid to lock the lock that a process already holds). 75**/ 76 /* format: style2,ind3 */ 77 78 fm_sys_pn_tbl_delete: 79 proc (p_file_uid, p_sys_pn_tbl_idx); 80 81 /* START OF DECLARATIONS */ 82 /* Parameter */ 83 84 dcl p_file_uid bit (36) aligned; /*unique id of the DM file*/ 85 dcl p_sys_pn_tbl_idx fixed bin (17); /*index of entry in sys_pn_tbl*/ 86 87 /* Automatic */ 88 89 dcl forced_delete bit (1) aligned; 90 dcl code fixed bin (35); 91 dcl file_uid bit (36) aligned; 92 dcl lock_code fixed bin (35) init (LOCK_NOT_YET_ATTEMPTED); 93 dcl sys_pn_tbl_idx fixed bin; 94 dcl unlock_code fixed bin (35) init (UNLOCK_NOT_YET_ATTEMPTED); 95 96 /* Based */ 97 /* Builtin */ 98 99 dcl (addr, lbound, length, min, substr, unspec) 100 builtin; 101 102 /* Condition */ 103 104 dcl cleanup condition; 105 106 /* Constant */ 107 108 dcl MYNAME init ("fm_sys_pn_tbl_delete") char (32) varying internal static options (constant); 109 dcl LOCK_WAIT_TIME init (1e9) fixed bin (71) internal static options (constant); 110 dcl (LOCK_NOT_YET_ATTEMPTED, UNLOCK_NOT_YET_ATTEMPTED) 111 init (-1) fixed bin (35) internal static options (constant); 112 113 /* Entry */ 114 115 dcl cu_$arg_list_ptr entry (ptr); 116 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 117 dcl dm_misc_util_$log entry options (variable); 118 dcl fm_error_util_$signal entry options (variable); 119 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, 120 bit (1) aligned); 121 dcl lock_manager_$lock_fast 122 entry (ptr, fixed bin (71), fixed bin (35)); 123 dcl lock_manager_$unlock_fast 124 entry (ptr, fixed bin (35)); 125 126 /* External */ 127 128 dcl ( 129 dm_error_$fast_lock_invalid_reset, 130 dm_error_$file_uid_not_found 131 ) ext fixed bin (35); 132 133 /* END OF DECLARATIONS */ 134 135 forced_delete = "0"b; 136 go to JOIN; 137 138 139 redelete_force: 140 entry (p_file_uid, p_sys_pn_tbl_idx); 141 142 forced_delete = "1"b; 143 go to JOIN; 144 145 JOIN: 146 code = 0; 147 file_uid = p_file_uid; 148 sys_pn_tbl_idx = p_sys_pn_tbl_idx; 149 150 on cleanup call FINISH (); 151 152 call lock_manager_$lock_fast (addr (sys_pn_tbl.h.lock), LOCK_WAIT_TIME, lock_code); 153 if lock_code ^= 0 & lock_code ^= dm_error_$fast_lock_invalid_reset 154 then call ERROR_RETURN (lock_code, " Unable to lock ^a.", fm_data_$sys_pn_tbl_name); 155 156 if sys_pn_tbl.e (sys_pn_tbl_idx).in_use = SPT_ENTRY_NOT_IN_USE 157 then /* already been deleted - this is not unusual */ 158 ; 159 else if sys_pn_tbl.e (sys_pn_tbl_idx).file_uid ^= file_uid 160 then /* again, already been deleted and replaced */ 161 ; 162 else 163 do; 164 if forced_delete 165 then sys_pn_tbl.e (sys_pn_tbl_idx).open_count = 0; 166 else sys_pn_tbl.e (sys_pn_tbl_idx).open_count = sys_pn_tbl.e (sys_pn_tbl_idx).open_count - 1; 167 168 if sys_pn_tbl.e (sys_pn_tbl_idx).open_count = 0 169 then 170 do; 171 unspec (sys_pn_tbl.e (sys_pn_tbl_idx)) = ""b; 172 unspec (sys_pn_tbl.paths (sys_pn_tbl_idx)) = ""b; 173 end; 174 175 if sys_pn_tbl.h.last_entry = sys_pn_tbl_idx 176 then 177 do; 178 do sys_pn_tbl.h.last_entry = sys_pn_tbl_idx by -1 to lbound (sys_pn_tbl.e, 1) 179 while (sys_pn_tbl.e (sys_pn_tbl.h.last_entry).in_use = SPT_ENTRY_NOT_IN_USE); 180 end; 181 end; 182 end; 183 184 call lock_manager_$unlock_fast (addr (sys_pn_tbl.h.lock), unlock_code); 185 if unlock_code ^= 0 186 then call ERROR_RETURN (unlock_code, " Unable to unlock ^a.", fm_data_$sys_pn_tbl_name); 187 188 189 return; 190 191 ERROR_RETURN: 192 proc options (variable); 193 194 195 dcl er_arg_list_ptr ptr; 196 dcl er_code fixed bin (35) based (er_code_ptr); 197 dcl er_code_ptr ptr; 198 dcl er_code_len fixed bin (21); 199 200 call cu_$arg_list_ptr (er_arg_list_ptr); 201 call cu_$arg_ptr_rel (1, er_code_ptr, er_code_len, (0), er_arg_list_ptr); 202 call fm_error_util_$signal (er_code, MYNAME, FM_ACTION_CANT_RESTART | FM_ACTION_LOG, LOG_SV, 203 MAKE_MESSAGE (er_arg_list_ptr)); 204 205 /* fm_error_util_$signal never returns, however FINISH will be invoked when 206* the stack is unwound. */ 207 208 end ERROR_RETURN; 209 210 LOG: 211 proc options (variable); 212 213 dcl l_arg_list_ptr ptr; 214 dcl l_code fixed bin (35) based (l_code_ptr); 215 dcl l_code_ptr ptr; 216 dcl l_code_len fixed bin (21); 217 218 call cu_$arg_list_ptr (l_arg_list_ptr); 219 call cu_$arg_ptr_rel (1, l_code_ptr, l_code_len, (0), l_arg_list_ptr); 220 call dm_misc_util_$log (LOG_SV, l_code, MYNAME, MAKE_MESSAGE (l_arg_list_ptr)); 221 222 return; 223 224 end LOG; 225 226 MAKE_MESSAGE: 227 proc (mm_p_arg_list_ptr) returns (char (*)); 228 229 dcl mm_p_arg_list_ptr ptr; 230 dcl mm_message_len fixed bin (21); 231 dcl mm_message_buffer char (1024); 232 dcl (DONT_PAD, NO_NEW_LINE) 233 init ("0"b) bit (1) aligned; 234 235 call ioa_$general_rs (mm_p_arg_list_ptr, 2, 3, mm_message_buffer, mm_message_len, DONT_PAD, NO_NEW_LINE); 236 237 return (substr (mm_message_buffer, 1, min (length (mm_message_buffer), mm_message_len))); 238 239 end MAKE_MESSAGE; 240 241 FINISH: 242 proc (); 243 244 245 if (lock_code = 0 | lock_code = dm_error_$fast_lock_invalid_reset) & unlock_code = UNLOCK_NOT_YET_ATTEMPTED 246 then 247 do; 248 call lock_manager_$unlock_fast (addr (sys_pn_tbl.h.lock), code); 249 if unlock_code ^= 0 250 then call LOG (unlock_code, " Failed to unlock ^a during cleanup.", fm_data_$sys_pn_tbl_name); 251 252 end; 253 254 return; 255 256 end FINISH; 257 1 1 /* ******* BEGIN INCLUDE FILE dm_fm_sub_error_flags.incl.pl1 ******** */ 1 2 1 3 /* format: style2,ind3 */ 1 4 1 5 /* HISTORY: 1 6*Written by Matthew Pierret, 07/02/83. 1 7*Modified: 1 8**/ 1 9 1 10 dcl 1 fm_error_flags aligned based, 1 11 2 action unal, 1 12 3 cant_restart bit (1) unal, 1 13 3 default_restart bit (1) unal, 1 14 3 quiet_restart bit (1) unal, 1 15 3 support_signal bit (1) unal, 1 16 3 mbz_1 bit (14) unal, 1 17 2 log unal, 1 18 3 system bit (1) unal, 1 19 3 mbz_2 bit (1) unal, 1 20 2 mbz_3 bit (16) unal; 1 21 1 22 dcl ( 1 23 FM_ACTION_CANT_RESTART init ("1000"b || (32)"0"b), 1 24 FM_ACTION_CAN_RESTART init ("0000"b || (32)"0"b), 1 25 FM_ACTION_DEFAULT_RESTART 1 26 init ("0100"b || (32)"0"b), 1 27 FM_ACTION_QUIET_RESTART 1 28 init ("0010"b || (32)"0"b), 1 29 FM_ACTION_LOG init ((18)"0"b || "10"b || (16)"0"b) 1 30 ) bit (36) aligned internal static options (constant); 1 31 1 32 /* ********* END INCLUDE FILE dm_fm_sub_error_flags.incl.pl1 ******** */ 258 259 2 1 /* BEGIN INCLUDE FILE dm_fm_sys_pn_tbl.incl.pl1 */ 2 2 2 3 /* DESCRIPTION: 2 4* This include file contains the sys_pn_tbl structure, the 2 5* file_manager_'s System Pathname Table. Each file which can possibly 2 6* have a before image current must have an entry in this table. Every 2 7* time this table is modified it is force-written to disk, as its 2 8* correct contents are necessary for rolling back transactions by a 2 9* process other than the process which originally owned the transaction. 2 10* When an entry is inserted, it is force-written twice: the first time with 2 11* the entry filled in but with the "in_use" element set to indicate that the 2 12* entry is not yet in use; the second time with the "in_use" element set 2 13* to indicate that the entry is in use. This is done to avoid the possibility 2 14* of a failure while the entry is being written which could successfully 2 15* write the "in_use" but not all of the rest of the entry. "in_use" can have 2 16* one of three values: 0 - not in use; -1 - in use ; +1 - in use but the 2 17* file has been deleted. 2 18**/ 2 19 2 20 /* HISTORY: 2 21*Written by Jeffrey D. Ives, 10/11/82. 2 22* (Design by Andre Bensoussan and Jeffrey Ives.) 2 23*Modified: 2 24*10/30/84 by Matthew Pierret: Added DESCRIPTION and HISTORY sections, 2 25* *_IN_USE constants. Changed thread to in_use, pfuid to file_uid, 2 26* fsuid to file_system_uid. 2 27**/ 2 28 2 29 /* format: style2,ind3 */ 2 30 2 31 dcl fm_data_$sys_pn_tbl_name 2 32 char (32) ext; 2 33 dcl fm_data_$sys_pn_tbl_ptr 2 34 ptr ext; 2 35 2 36 dcl 1 sys_pn_tbl aligned based (fm_data_$sys_pn_tbl_ptr), 2 37 2 h, 2 38 3 version bit (36), 2 39 3 last_entry fixed bin, 2 40 3 lock fixed bin (71), 2 41 3 mbz (30) fixed bin (71), 2 42 2 e (4096), 2 43 3 in_use fixed bin, 2 44 3 open_count fixed bin, 2 45 3 file_uid bit (36), 2 46 3 file_system_uid bit (36), 2 47 2 paths (4096) char (168) unal; 2 48 2 49 dcl SYS_PN_TBL_VERSION_1 bit (36) aligned static options (constant) init ("162363353101"b3); 2 50 2 51 dcl ( 2 52 SPT_ENTRY_IN_USE init (-1), 2 53 SPT_ENTRY_IN_USE_BUT_DELETED 2 54 init (1), 2 55 SPT_ENTRY_NOT_IN_USE init (0) 2 56 ) fixed bin internal static options (constant); 2 57 2 58 /* END INCLUDE FILE dm_fm_sys_pn_tbl.incl.pl1 */ 260 261 3 1 /* BEGIN INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 3 2 3 3 /* format: ^indcom */ 3 4 3 5 /* DESCRIPTION: 3 6* These are the severity codes used by the dms daemon when calling its logger. 3 7* The severity is ranked thusly: 3 8* 3 9* severity log write situation 3 10* -------- --- ----- --------- 3 11* 0 no yes standard output, query, etc. 3 12* 1 yes yes fatal error, terminate dms daemon. 3 13* 2 yes yes nonfatal error. 3 14* 3 yes yes informative message. 3 15* 4 yes no log information only. 3 16**/ 3 17 3 18 /* HISTORY: 3 19* 3 20*Written by M. Pandolf, 10/06/82. 3 21*Modified: 3 22*12/10/84 by R. Michael Tague: Rename and reformat description/history. 3 23*01/13/85 by Lee A. Newcomb: Renamed to dm_log_sv_codes from 3 24* dm_daemon_sv_codes as the severity codes for the DM log are not 3 25* restrained to the DM Daemon's use. 3 26*01/24/85 by Lee A. Newcomb: Fixed to say dm_log_sv_codes.incl.pl1 in the 3 27* BEGIN and END INCLUDE comments, instead of dm_daemon_sv_codes.==. 3 28**/ 3 29 3 30 /* format: style5 */ 3 31 3 32 dcl (PRINT_SV, QUERY_SV) fixed bin internal static 3 33 options (constant) init (0); 3 34 dcl (CRASH_SV, FATAL_SV) fixed bin internal static 3 35 options (constant) init (1); 3 36 dcl ERROR_SV fixed bin internal static 3 37 options (constant) init (2); 3 38 dcl INFORM_SV fixed bin internal static 3 39 options (constant) init (3); 3 40 dcl LOG_SV fixed bin internal static 3 41 options (constant) init (4); 3 42 3 43 /* END INCLUDE FILE dm_log_sv_codes.incl.pl1 */ 262 263 264 end fm_sys_pn_tbl_delete; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/04/85 0826.9 fm_sys_pn_tbl_delete.pl1 >spec>on>7192.pbf-04/04/85>fm_sys_pn_tbl_delete.pl1 258 1 01/07/85 0858.8 dm_fm_sub_error_flags.incl.pl1 >ldd>include>dm_fm_sub_error_flags.incl.pl1 260 2 01/07/85 0900.8 dm_fm_sys_pn_tbl.incl.pl1 >ldd>include>dm_fm_sys_pn_tbl.incl.pl1 262 3 03/06/85 1031.1 dm_log_sv_codes.incl.pl1 >ldd>include>dm_log_sv_codes.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. DONT_PAD 000501 automatic bit(1) initial dcl 232 set ref 232* 235* FM_ACTION_CANT_RESTART constant bit(36) initial dcl 1-22 ref 202 FM_ACTION_LOG constant bit(36) initial dcl 1-22 ref 202 LOCK_NOT_YET_ATTEMPTED constant fixed bin(35,0) initial dcl 110 ref 92 LOCK_WAIT_TIME 000000 constant fixed bin(71,0) initial dcl 109 set ref 152* LOG_SV 000027 constant fixed bin(17,0) initial dcl 3-40 set ref 202* 220* MYNAME 000002 constant varying char(32) initial dcl 108 set ref 202* 220* NO_NEW_LINE 000502 automatic bit(1) initial dcl 232 set ref 232* 235* SPT_ENTRY_NOT_IN_USE constant fixed bin(17,0) initial dcl 2-51 ref 156 178 UNLOCK_NOT_YET_ATTEMPTED 000730 constant fixed bin(35,0) initial dcl 110 ref 94 245 addr builtin function dcl 99 ref 152 152 184 184 248 248 cleanup 000106 stack reference condition dcl 104 ref 150 code 000101 automatic fixed bin(35,0) dcl 90 set ref 145* 248* cu_$arg_list_ptr 000010 constant entry external dcl 115 ref 200 218 cu_$arg_ptr_rel 000012 constant entry external dcl 116 ref 201 219 dm_error_$fast_lock_invalid_reset 000026 external static fixed bin(35,0) dcl 128 ref 153 245 dm_misc_util_$log 000014 constant entry external dcl 117 ref 220 e 100 based structure array level 2 dcl 2-36 set ref 171* 178 er_arg_list_ptr 000100 automatic pointer dcl 195 set ref 200* 201* 202* er_code based fixed bin(35,0) dcl 196 set ref 202* er_code_len 000104 automatic fixed bin(21,0) dcl 198 set ref 201* er_code_ptr 000102 automatic pointer dcl 197 set ref 201* 202 file_uid 000102 automatic bit(36) dcl 91 in procedure "fm_sys_pn_tbl_delete" set ref 147* 159 file_uid 102 based bit(36) array level 3 in structure "sys_pn_tbl" dcl 2-36 in procedure "fm_sys_pn_tbl_delete" set ref 159 fm_data_$sys_pn_tbl_name 000030 external static char(32) unaligned dcl 2-31 set ref 153* 185* 249* fm_data_$sys_pn_tbl_ptr 000032 external static pointer dcl 2-33 ref 152 152 156 159 164 166 166 168 171 172 175 178 178 178 178 184 184 248 248 fm_error_util_$signal 000016 constant entry external dcl 118 ref 202 forced_delete 000100 automatic bit(1) dcl 89 set ref 135* 142* 164 h based structure level 2 dcl 2-36 in_use 100 based fixed bin(17,0) array level 3 dcl 2-36 set ref 156 178 ioa_$general_rs 000020 constant entry external dcl 119 ref 235 l_arg_list_ptr 000100 automatic pointer dcl 213 set ref 218* 219* 220* l_code based fixed bin(35,0) dcl 214 set ref 220* l_code_len 000104 automatic fixed bin(21,0) dcl 216 set ref 219* l_code_ptr 000102 automatic pointer dcl 215 set ref 219* 220 last_entry 1 based fixed bin(17,0) level 3 dcl 2-36 set ref 175 178* 178* lbound builtin function dcl 99 ref 178 length builtin function dcl 99 ref 237 lock 2 based fixed bin(71,0) level 3 dcl 2-36 set ref 152 152 184 184 248 248 lock_code 000103 automatic fixed bin(35,0) initial dcl 92 set ref 92* 152* 153 153 153* 245 245 lock_manager_$lock_fast 000022 constant entry external dcl 121 ref 152 lock_manager_$unlock_fast 000024 constant entry external dcl 123 ref 184 248 min builtin function dcl 99 ref 237 mm_message_buffer 000101 automatic char(1024) unaligned dcl 231 set ref 235* 237 237 mm_message_len 000100 automatic fixed bin(21,0) dcl 230 set ref 235* 237 mm_p_arg_list_ptr parameter pointer dcl 229 set ref 226 235* open_count 101 based fixed bin(17,0) array level 3 dcl 2-36 set ref 164* 166* 166 168 p_file_uid parameter bit(36) dcl 84 ref 78 139 147 p_sys_pn_tbl_idx parameter fixed bin(17,0) dcl 85 ref 78 139 148 paths 40100 based char(168) array level 2 packed unaligned dcl 2-36 set ref 172* substr builtin function dcl 99 ref 237 sys_pn_tbl based structure level 1 dcl 2-36 sys_pn_tbl_idx 000104 automatic fixed bin(17,0) dcl 93 set ref 148* 156 159 164 166 166 168 171 172 175 178 unlock_code 000105 automatic fixed bin(35,0) initial dcl 94 set ref 94* 184* 185 185* 245 249 249* unspec builtin function dcl 99 set ref 171* 172* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CRASH_SV internal static fixed bin(17,0) initial dcl 3-34 ERROR_SV internal static fixed bin(17,0) initial dcl 3-36 FATAL_SV internal static fixed bin(17,0) initial dcl 3-34 FM_ACTION_CAN_RESTART internal static bit(36) initial dcl 1-22 FM_ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 1-22 FM_ACTION_QUIET_RESTART internal static bit(36) initial dcl 1-22 INFORM_SV internal static fixed bin(17,0) initial dcl 3-38 PRINT_SV internal static fixed bin(17,0) initial dcl 3-32 QUERY_SV internal static fixed bin(17,0) initial dcl 3-32 SPT_ENTRY_IN_USE internal static fixed bin(17,0) initial dcl 2-51 SPT_ENTRY_IN_USE_BUT_DELETED internal static fixed bin(17,0) initial dcl 2-51 SYS_PN_TBL_VERSION_1 internal static bit(36) initial dcl 2-49 dm_error_$file_uid_not_found external static fixed bin(35,0) dcl 128 fm_error_flags based structure level 1 dcl 1-10 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000347 constant entry internal dcl 191 ref 153 185 FINISH 000650 constant entry internal dcl 241 ref 150 JOIN 000116 constant label dcl 145 ref 136 143 LOG 000460 constant entry internal dcl 210 ref 249 MAKE_MESSAGE 000562 constant entry internal dcl 226 ref 202 220 fm_sys_pn_tbl_delete 000073 constant entry external dcl 78 redelete_force 000105 constant entry external dcl 139 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1144 1200 731 1154 Length 1456 731 34 241 212 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME fm_sys_pn_tbl_delete 106 external procedure is an external procedure. on unit on line 150 104 on unit ERROR_RETURN 112 internal procedure is declared options(variable). LOG 108 internal procedure is declared options(variable). MAKE_MESSAGE 356 internal procedure uses returns(char(*)) or returns(bit(*)). FINISH internal procedure shares stack frame of on unit on line 150. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ERROR_RETURN 000100 er_arg_list_ptr ERROR_RETURN 000102 er_code_ptr ERROR_RETURN 000104 er_code_len ERROR_RETURN LOG 000100 l_arg_list_ptr LOG 000102 l_code_ptr LOG 000104 l_code_len LOG MAKE_MESSAGE 000100 mm_message_len MAKE_MESSAGE 000101 mm_message_buffer MAKE_MESSAGE 000501 DONT_PAD MAKE_MESSAGE 000502 NO_NEW_LINE MAKE_MESSAGE fm_sys_pn_tbl_delete 000100 forced_delete fm_sys_pn_tbl_delete 000101 code fm_sys_pn_tbl_delete 000102 file_uid fm_sys_pn_tbl_delete 000103 lock_code fm_sys_pn_tbl_delete 000104 sys_pn_tbl_idx fm_sys_pn_tbl_delete 000105 unlock_code fm_sys_pn_tbl_delete THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this_desc call_int_other_desc return enable shorten_stack ext_entry int_entry int_entry_desc return_chars_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cu_$arg_list_ptr cu_$arg_ptr_rel dm_misc_util_$log fm_error_util_$signal ioa_$general_rs lock_manager_$lock_fast lock_manager_$unlock_fast THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dm_error_$fast_lock_invalid_reset fm_data_$sys_pn_tbl_name fm_data_$sys_pn_tbl_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 92 000061 94 000063 78 000067 135 000101 136 000102 139 000103 142 000113 143 000115 145 000116 147 000117 148 000122 150 000124 152 000142 153 000161 156 000214 159 000225 164 000232 166 000236 168 000240 171 000242 172 000246 175 000255 178 000260 180 000277 184 000302 185 000317 189 000345 191 000346 200 000354 201 000362 202 000404 208 000455 210 000457 218 000465 219 000473 220 000515 222 000557 226 000561 232 000567 235 000571 237 000634 241 000650 245 000651 248 000662 249 000677 254 000727 ----------------------------------------------------------- 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