COMPILATION LISTING OF SEGMENT gtss_mcfc_empty Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/10/84 1356.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 gtss_mcfc_empty: proc (rs); 10 11 /* Command to set the GCOS simulator's multiple 12* caller file control data base "empty". 13* 14* Author: Dave Ward 08/08/79 15**/ 16 dcl rs char(*)var parm; 17 18 call gtss_mcfc_init_ (r); 19 if r = "false" then do; 20 rs = r; 21 return; 22 end; 23 24 /* Obtain caller's lock id. */ 25 call get_lock_id_ (lid); 26 27 unspec (mcfc), unspec (names) = "0"b; 28 29 /* Pseudo lock all the start list. */ 30 mcfc.start_list.files.lock, mcfc.start_list.avail.lock = lid; 31 32 names = empty (); 33 34 /* Set availibility chains. */ 35 n = lbound (mcfc.start_list, 1); 36 sll = hbound (mcfc.start_list, 1)-lbound (mcfc.start_list, 1)+1; 37 do i = lbound (file_entry, 1) to hbound (file_entry, 1); 38 file_entry (i).link = mcfc.start_list (n).avail.first; 39 mcfc.start_list (n).avail.first = i; 40 n = mod (n+1, sll); 41 end; 42 43 /* Unlock all the start list. */ 44 mcfc.start_list.files.lock, mcfc.start_list.avail.lock = "0"b; 45 46 rs = "true"; 47 return; 48 49 /* Variables for gtss_mcfc_empty: 50* IDENTIFIER ATTRIBUTES */ 51 dcl empty builtin; 52 dcl get_lock_id_ entry(bit(36)aligned); 53 dcl gtss_mcfc_init_ entry(char(*)var); 54 dcl i fixed bin; 55 dcl lid bit(36)aligned; 56 dcl n fixed bin; 57 dcl r char(5)var; 58 dcl sll fixed bin; 59 1 1 /* BEGIN INCLUDE FILE gtss_mcfc.incl.pl1 */ 1 2 /* 1 3* Created: (Wardd Multics) 08/01/79 1454.6 mst Wed 1 4**/ 1 5 /* Changed: Dave Ward, Mel Wilson 11/14/79 providing concurrency lock for names area 1 6**/ 1 7 1 8 /** Data structures used to regulate gcos 1 9* simulator "callers" of files (multiple caller file control - mcfc). 1 10* 1 11* Given: gcos file (D => Multics directory, E => entry, 1 12* U => Multics unique file id) 1 13* h=mod(U,size(start_list)) 1 14* start_list(h) => start of chain for list of files 1 15* (file_entry's) and a lock word to 1 16* regulate use of the chain, corresponding 1 17* values for list of available entries. 1 18**/ 1 19 1 20 dcl 1 mcfc aligned based(gtss_ext_$mcfc.files_ptr) 1 21 , 2 version fixed bin 1 22 1 23 , 2 start_list (0:1020) 1 24 , 3 files 1 25 , 4 lock bit(36) 1 26 , 4 first fixed bin(24) 1 27 , 3 avail like mcfc.start_list.files 1 28 1 29 , 2 file_entry (8000) 1 30 , 3 link fixed bin(24) 1 31 , 3 nameo offset(names) 1 32 , 3 namel fixed bin 1 33 , 3 unique_id bit(36) 1 34 , 3 file_lock bit(36) 1 35 , 3 number_callers fixed bin(24) 1 36 , 3 delete bit unal 1 37 , 3 fill bit (17) unal 1 38 , 3 number_who_could_not_call fixed bin (18) unsigned unal 1 39 ; 1 40 1 41 dcl caller_ptr ptr; 1 42 dcl 1 caller (0:1999)aligned based(caller_ptr) 1 43 , 2 lock_id (0:99)bit(36) 1 44 , 2 gcos_access (0:99)bit(6)unal 1 45 ; 1 46 1 47 dcl 1 mcfc_names aligned based (gtss_ext_$mcfc.names_ptr), 1 48 2 names_lock bit (36), 1 49 2 pad bit (36), 1 50 2 names area (261118); 1 51 1 52 /* END INCLUDE FILE gtss_mcfc.incl.pl1 */ 60 61 2 1 /* BEGIN INCLUDE FILE gtss_ext_.incl.pl1 */ 2 2 /* 2 3* Created: (Wardd Multics) 05/20/78 1307.6 mst Sat 2 4* Modified: Ward 1981 add suspended_process dcl 2 5* Modified: Ron Barstad 83-07-21 Fixed level number on mcfc to 3 2 6* Modified: Ron Barstad 83-07-25 Fixed derail range in statistics to 4js3 number 2 7**/ 2 8 dcl gtss_ext_$aem fixed bin static ext /* >0 Print "additional" error information. */; 2 9 dcl gtss_ext_$bad_drl_rtrn static ext label /* Default for drl_rtrn. */; 2 10 dcl gtss_ext_$db (72)bit(1)unal static ext; 2 11 dcl gtss_ext_$deferred_catalogs_ptr ptr ext; 2 12 dcl gtss_ext_$dispose_of_drl static ext label /* quit handlers for some derails use this label to abort */; 2 13 dcl gtss_ext_$drl_rtrn (4)static ext label /* where to return at subsystem end */; 2 14 dcl gtss_ext_$drm_path char(168)static ext /* gtss_expand_pathname_stores drm_path */; 2 15 dcl gtss_ext_$drun_jid char (5) static ext /* valid only for DRUN executing under absentee */; 2 16 dcl gtss_ext_$event_channel fixed bin (71) static ext /* used for DABT signals */; 2 17 dcl gtss_ext_$finished static ext label /* Return to gtss for normal conclusion. */; 2 18 dcl gtss_ext_$gdb_name char(8)ext /* Name H* module to debug. */; 2 19 dcl gtss_ext_$get_line entry(ptr,ptr,fixed bin(21),fixed bin(21),fixed bin(35))variable ext /* Build mode input procedure. */; 2 20 dcl gtss_ext_$gtss_slave_area_seg (4) ext static ptr /* pointer to gtss slave area segment */; 2 21 dcl gtss_ext_$hcs_work_area_ptr ptr ext static /* Temp seg for acl lists. */; 2 22 dcl gtss_ext_$homedir char (64) static ext /* user's home dir */; 2 23 dcl gtss_ext_$last_k_was_out bit (1)aligned ext static /* "1"b => last tty output was output. */; 2 24 dcl gtss_ext_$pdir char (168) varying ext static /* pathname of process directory */; 2 25 dcl gtss_ext_$popup_from_pi static ext label /* transfer to this label after pi simulates popup primitive */; 2 26 dcl gtss_ext_$process_type fixed bin (17) static ext; 2 27 dcl gtss_ext_$put_chars entry(ptr,ptr,fixed bin(24),fixed bin(35)) variable ext /* Terminal output procedure. */; 2 28 dcl gtss_ext_$restart_from_pi static ext label /* transfer to this label after pi restores machine conditions */; 2 29 dcl gtss_ext_$restart_seg_ptr ptr static ext /* points to DRUN restart file when exec under absentee */; 2 30 dcl gtss_ext_$sig_ptr ext static ptr /* saved ptr to signal_ */; 2 31 dcl gtss_ext_$stack_level_ fixed bin ext static; 2 32 dcl gtss_ext_$suspended_process bit(1) ext static; 2 33 dcl gtss_ext_$SYstarstar_file_no fixed bin (24) static ext; 2 34 dcl gtss_ext_$user_id char (26)var ext; 2 35 dcl gtss_ext_$work_area_ptr ptr ext; 2 36 2 37 dcl 1 gtss_ext_$CFP_bits aligned static external 2 38 , 3 no_input_yet bit (1) unaligned /* used in gtss_CFP_input_, gtss_read_starCFP_ */ 2 39 , 3 rtn_bits bit (4) unaligned /* used in gtss_CFP_input_, gtss_CFP_output_ */ 2 40 , 3 cpos_called bit (1) unaligned /* used in gtss_CFP_input_, gtss_drl_t_cfio_, gtss_abandon_CFP_ */ 2 41 , 3 cout_called bit (1) unaligned /* used in gtss_read_starCFP_, gtss_abandon_CFP_ */ 2 42 , 3 build_mode bit (1) unaligned /* used in gtss_build_, gtss_dsd_process_ */ 2 43 ; 2 44 2 45 dcl 1 gtss_ext_$com_reg aligned static ext, 2 46 3 tsdmx, 2 47 4 dst fixed bin (18) unsigned unaligned, 2 48 4 dit fixed bin (18) unsigned unaligned, 2 49 3 tsdpt fixed bin (36) unsigned unaligned, 2 50 3 tsddt fixed bin (36) unsigned unaligned, 2 51 3 tsdid bit (72) unaligned, 2 52 3 tsdsd bit (36) unaligned, 2 53 3 tsdst fixed bin (36) unsigned unaligned, 2 54 3 tsdjb fixed bin (35) unaligned, 2 55 3 tsdgt, 2 56 4 ust_loc fixed bin (18) unsigned unaligned, 2 57 4 gating_ctl fixed bin (18) unsigned unaligned, 2 58 3 tcdfr bit (36) unaligned; 2 59 2 60 dcl 1 gtss_ext_$flags aligned static ext 2 61 , 3 dispose_of_drl_on_pi bit (01) unal /* 1 => drl that should be aborted after quit-pi sequence */ 2 62 , 3 drl_in_progress bit (01) unal /* 1 => drl handler executing; 0 => gcos code executing */ 2 63 , 3 popup_from_pi bit (01) unal /* 1 => derail processor will simulate Gcos break instead of returning */ 2 64 , 3 unfinished_drl bit (01) unal /* 1 => subsystem is handling breaks and quit was raised during a drl */ 2 65 , 3 ss_time_limit_set bit (01) unal /* 1 => exec time limit set for subsystem */ 2 66 , 3 timer_ranout bit (01) unal /* 1 => user is executing timer runout code */ 2 67 , 3 gtss_com_err_sw bit (01) unal /* 1 => stop com_err_ string from going to terminal */ 2 68 , 3 available bit (65) unal 2 69 ; 2 70 2 71 2 72 dcl 1 gtss_ext_$statistics aligned static ext, /* Derail usage statistics */ 2 73 3 total_time (-10:71)fixed bin (71), 2 74 3 count (-10:71)fixed bin (17); 2 75 2 76 /* Declaration of Available File Table 2 77* */ 2 78 dcl 1 gtss_ext_$aft aligned ext, /* aft structure */ 2 79 2 80 3 start_list (0:102) fixed bin (24), /* >0 => 1st aft_entry row to start of next entry chain. */ 2 81 2 82 3 aft_entry (20), 2 83 4 altname char (8), /* altname name for attaching this file */ 2 84 4 next_entry fixed bin (24), /* Next aft_entry in hash chain. */ 2 85 4 previous_add fixed bin (24), /* Previously added entry. */ 2 86 4 next_add fixed bin (24), /* Entry added after this one. */ 2 87 4 used bit (1) unal, /* "1"b => aft_entry contains AFT value. */ 2 88 4 forced bit(1) unal, /* "1"b => gtss_verify_access_ forced access on this file. */ 2 89 2 90 3 free_space fixed bin (24), /* Index of start of free space list for aft entries. */ 2 91 3 first_added fixed bin (24), /* >0 => start of chain in add order. */ 2 92 3 last_added fixed bin (24) /* >0 => end of chain in added order. */; 2 93 2 94 dcl gtss_ext_$ppt ptr ext /* switch name for tapein drl */; 2 95 /** Data structure to provide access to installed 2 96* subsystems fast library load. 2 97* **/ 2 98 dcl 1 gtss_ext_$fast_lib aligned ext 2 99 , 3 fast_lib_fcb ptr /* Pointer to msf fcb. */ 2 100 , 3 fast_lib_ncp fixed bin (24) /* Number of components. */ 2 101 , 3 comp_ptr (0:9)ptr /* Pointer to component. */ 2 102 , 3 comp_wds (0:9)fixed bin (24) /* Component length (words). */ 2 103 ; 2 104 2 105 /* Pointers to segments to regulate multipler 2 106* callers to files. Same segments are used to regulate 2 107* all simulator callers. 2 108**/ 2 109 dcl 1 gtss_ext_$mcfc aligned ext, 2 110 3 multics_lock_id bit(36), 2 111 3 wait_time fixed bin, 2 112 3 files_ptr ptr, 2 113 3 names_ptr ptr, 2 114 3 callers_ptr (0:3)ptr 2 115 ; 2 116 2 117 /* END INCLUDE FILE gtss_ext_.incl.pl1 */ 62 63 end /* gtss_mcfc_empty */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/10/84 1044.3 gtss_mcfc_empty.pl1 >spec>on>7105>gtss_mcfc_empty.pl1 60 1 09/09/83 1714.0 gtss_mcfc.incl.pl1 >ldd>include>gtss_mcfc.incl.pl1 62 2 09/09/83 1713.8 gtss_ext_.incl.pl1 >ldd>include>gtss_ext_.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. avail 3 based structure array level 3 dcl 1-20 empty builtin function dcl 51 ref 32 file_entry 7765 based structure array level 2 dcl 1-20 set ref 37 37 files 1 based structure array level 3 dcl 1-20 files_ptr 2 000014 external static pointer level 2 dcl 2-109 ref 27 30 30 35 36 36 37 37 38 38 39 44 44 first 4 based fixed bin(24,0) array level 4 dcl 1-20 set ref 38 39* get_lock_id_ 000010 constant entry external dcl 52 ref 25 gtss_ext_$mcfc 000014 external static structure level 1 dcl 2-109 gtss_mcfc_init_ 000012 constant entry external dcl 53 ref 18 i 000100 automatic fixed bin(17,0) dcl 54 set ref 37* 38 39* lid 000101 automatic bit(36) dcl 55 set ref 25* 30 link 7765 based fixed bin(24,0) array level 3 dcl 1-20 set ref 38* lock 3 based bit(36) array level 4 in structure "mcfc" dcl 1-20 in procedure "gtss_mcfc_empty" set ref 30* 44* lock 1 based bit(36) array level 4 in structure "mcfc" dcl 1-20 in procedure "gtss_mcfc_empty" set ref 30* 44* mcfc based structure level 1 dcl 1-20 set ref 27* mcfc_names based structure level 1 dcl 1-47 n 000102 automatic fixed bin(17,0) dcl 56 set ref 35* 38 39 40* 40 names 2 based area(261118) level 2 dcl 1-47 set ref 27* 32* names_ptr 4 000014 external static pointer level 2 dcl 2-109 ref 27 32 r 000103 automatic varying char(5) dcl 57 set ref 18* 19 20 rs parameter varying char dcl 16 set ref 9 20* 46* sll 000106 automatic fixed bin(17,0) dcl 58 set ref 36* 40 start_list 1 based structure array level 2 dcl 1-20 set ref 35 36 36 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. caller based structure array level 1 dcl 1-42 caller_ptr automatic pointer dcl 1-41 gtss_ext_$CFP_bits external static structure level 1 dcl 2-37 gtss_ext_$SYstarstar_file_no external static fixed bin(24,0) dcl 2-33 gtss_ext_$aem external static fixed bin(17,0) dcl 2-8 gtss_ext_$aft external static structure level 1 dcl 2-78 gtss_ext_$bad_drl_rtrn external static label variable dcl 2-9 gtss_ext_$com_reg external static structure level 1 dcl 2-45 gtss_ext_$db external static bit(1) array unaligned dcl 2-10 gtss_ext_$deferred_catalogs_ptr external static pointer dcl 2-11 gtss_ext_$dispose_of_drl external static label variable dcl 2-12 gtss_ext_$drl_rtrn external static label variable array dcl 2-13 gtss_ext_$drm_path external static char(168) unaligned dcl 2-14 gtss_ext_$drun_jid external static char(5) unaligned dcl 2-15 gtss_ext_$event_channel external static fixed bin(71,0) dcl 2-16 gtss_ext_$fast_lib external static structure level 1 dcl 2-98 gtss_ext_$finished external static label variable dcl 2-17 gtss_ext_$flags external static structure level 1 dcl 2-60 gtss_ext_$gdb_name external static char(8) unaligned dcl 2-18 gtss_ext_$get_line external static entry variable dcl 2-19 gtss_ext_$gtss_slave_area_seg external static pointer array dcl 2-20 gtss_ext_$hcs_work_area_ptr external static pointer dcl 2-21 gtss_ext_$homedir external static char(64) unaligned dcl 2-22 gtss_ext_$last_k_was_out external static bit(1) dcl 2-23 gtss_ext_$pdir external static varying char(168) dcl 2-24 gtss_ext_$popup_from_pi external static label variable dcl 2-25 gtss_ext_$ppt external static pointer dcl 2-94 gtss_ext_$process_type external static fixed bin(17,0) dcl 2-26 gtss_ext_$put_chars external static entry variable dcl 2-27 gtss_ext_$restart_from_pi external static label variable dcl 2-28 gtss_ext_$restart_seg_ptr external static pointer dcl 2-29 gtss_ext_$sig_ptr external static pointer dcl 2-30 gtss_ext_$stack_level_ external static fixed bin(17,0) dcl 2-31 gtss_ext_$statistics external static structure level 1 dcl 2-72 gtss_ext_$suspended_process external static bit(1) unaligned dcl 2-32 gtss_ext_$user_id external static varying char(26) dcl 2-34 gtss_ext_$work_area_ptr external static pointer dcl 2-35 NAME DECLARED BY EXPLICIT CONTEXT. gtss_mcfc_empty 000011 constant entry external dcl 9 NAMES DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 36 37 lbound builtin function ref 35 36 37 mod builtin function ref 40 unspec builtin function set ref 27 27* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 314 332 240 324 Length 532 240 16 164 53 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gtss_mcfc_empty 81 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gtss_mcfc_empty 000100 i gtss_mcfc_empty 000101 lid gtss_mcfc_empty 000102 n gtss_mcfc_empty 000103 r gtss_mcfc_empty 000106 sll gtss_mcfc_empty THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return mod_fx1 ext_entry_desc empty THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_lock_id_ gtss_mcfc_init_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gtss_ext_$mcfc LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000006 18 000024 19 000034 20 000041 21 000053 25 000054 27 000063 30 000077 32 000135 35 000141 36 000142 37 000144 38 000151 39 000163 40 000165 41 000172 44 000174 46 000224 47 000236 ----------------------------------------------------------- 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