COMPILATION LISTING OF SEGMENT display_kst_entry Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-06-29_1714.30_Thu_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 display_kst_entry: 12 dke: proc; 13 14 /* 15* 16* Written 04/22/76 by Richard Bratt 17* Fixed to compile properly, May 1981, W. Olin Sibert 18* Modified to remove hdr, Keith Loepere, November 1984. 19* 20**/ 21 22 dcl ap ptr, 23 al fixed bin, 24 flags char (168) varying init (""), 25 phcs_initiate bit (1) aligned init ("0"b), 26 linkage_error condition, 27 segno fixed bin (17), 28 segptr ptr, 29 terminate bit (1) aligned, 30 dsegp ptr, 31 arg char (al) based (ap), 32 dname char (168), 33 ename char (32), 34 code fixed bin (35); 35 dcl kst_copy_buffer (50) fixed bin; 36 dcl p ptr; 37 dcl sdw_copy_buffer (2) fixed bin; 38 dcl s ptr; 39 dcl error_table_$invalidsegno ext fixed bin (35); 40 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 41 (ioa_, com_err_) entry options (variable), 42 cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin), 43 expand_path_ entry (ptr, fixed bin, ptr, ptr, fixed bin (35)), 44 (hcs_$terminate_noname, phcs_$terminate_noname) entry (ptr, fixed bin (35)), 45 (hcs_$initiate, phcs_$initiate) entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 46 ring_zero_peek_ entry (ptr, ptr, fixed bin, fixed bin (35)), 47 ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)); 48 49 dcl (addr, baseno, binary, null, pointer, rel, size, unspec) builtin; 50 51 /* */ 52 53 terminate = "0"b; 54 p = addr (kst_copy_buffer); /* Used to use init (addr (...)) */ 55 s = addr (sdw_copy_buffer); 56 57 call cu_$arg_ptr (1, ap, al, code); 58 if code ^= 0 59 then do; 60 complain: call ioa_ ("USAGE: display_kst_entry |"); 61 return; 62 end; 63 segno = cv_oct_check_ (arg, code); 64 if code ^= 0 65 then do; 66 if arg = "-name" | arg = "-nm" 67 then do; 68 call cu_$arg_ptr (2, ap, al, code); 69 if code ^= 0 then go to complain; 70 end; 71 call expand_path_ (ap, al, addr (dname), addr (ename), code); 72 if code ^= 0 then call abort (code); 73 call hcs_$initiate (dname, ename, "", 0, 1, segptr, code); 74 if segptr = null () 75 then do; 76 on linkage_error call abort (code); 77 call phcs_$initiate (dname, ename, "", 0, 1, segptr, code); 78 revert linkage_error; 79 phcs_initiate = "1"b; 80 end; 81 if segptr = null () then call abort (code); 82 terminate = "1"b; 83 segno = binary (baseno (segptr), 18); 84 end; 85 call ring0_get_$segptr ("", "kst_seg", kstp, code); 86 call ring0_get_$segptr ("", "dseg", dsegp, code); 87 call ring_zero_peek_ (kstp, p, 8, code); 88 if code ^= 0 then call abort (code); 89 if segno < p -> kst.lowseg | segno > p -> kst.highest_used_segno 90 then call abort (error_table_$invalidsegno); 91 kstep = ptr (kstp, bin (bin (rel (addr (p -> kst.kst_entry (segno))), 18) - bin (rel (p), 18), 18)); 92 call ring_zero_peek_ (kstep, p, size (kste), code); 93 if code ^= 0 then call abort (code); 94 call ring_zero_peek_ (addr (dsegp -> sdwa (segno)), s, size (sdw), code); 95 if code ^= 0 then unspec (sdw_copy_buffer) = "0"b; 96 97 call ioa_ ("^/segno:^-^o at ^p", segno, kstep); 98 call ioa_ ("usage:^-^7(^d, ^)^d", p -> kste.usage_count); 99 call ioa_ ("entryp:^-^p", p -> kste.entryp); 100 call ioa_ ("uid:^-^w", p -> kste.uid); 101 call ioa_ ("dtbm:^-^w", p -> kste.dtbm); 102 call ioa_ ("mode:^-^o (^d, ^d, ^d)", bin (p -> kste.access, 3), 103 bin (s -> sdw.r1, 3), bin (s -> sdw.r2, 3), bin (s -> sdw.r3, 3)); 104 if p -> kste.extended_access = "0"b 105 then call ioa_ ("ex mode:^-00000000000 (^d, ^d, ^d)", 106 bin (p -> kste.ex_rb (1), 3), bin (p -> kste.ex_rb (2), 3), bin (p -> kste.ex_rb (3), 3)); 107 else call ioa_ ("ex mode:^-^11o (^d, ^d, ^d)", bin (p -> kste.extended_access, 33), 108 bin (p -> kste.ex_rb (1), 3), bin (p -> kste.ex_rb (2), 3), bin (p -> kste.ex_rb (3), 3)); 109 if p -> kste.dirsw 110 then call ioa_ ("infcount:^-^d", p -> kste.infcount); 111 else call ioa_ ("lv index:^-^o", p -> kste.infcount); 112 if p -> kste.dirsw then flags = flags || "dirsw "; 113 if p -> kste.allow_write then flags = flags || "write "; 114 if p -> kste.priv_init then flags = flags || "priv "; 115 if p -> kste.tms then flags = flags || "tms "; 116 if p -> kste.tus then flags = flags || "tus "; 117 if p -> kste.tpd then flags = flags || "tpd "; 118 if p -> kste.audit then flags = flags || "audit "; 119 if p -> kste.explicit_deact_ok then flags = flags || "deactivate "; 120 call ioa_ ("flags:^-^a", flags); 121 if terminate 122 then if phcs_initiate 123 then call phcs_$terminate_noname (segptr, code); 124 else call hcs_$terminate_noname (segptr, code); 125 return; 126 127 abort: proc (code); 128 dcl code fixed bin (35); 129 call com_err_ (code, "display_kst_entry"); 130 go to return_to_caller; 131 end abort; 132 133 return_to_caller: 134 return; 135 136 /* */ 137 1 1 /* START OF: kst.incl.pl1 * * * * * */ 1 2 1 3 /* 1 4*Modified March 1976 by R. Bratt 1 5*Modified November 1984 to remove hdr, Keith Loepere. */ 1 6 1 7 1 8 /****^ HISTORY COMMENTS: 1 9* 1) change(86-08-08,GDixon), approve(86-08-08,MCR7388), 1 10* audit(86-09-02,Farley), install(86-09-08,MR12.0-1150): 1 11* Add warning on use of kste.entryp. 1 12* END HISTORY COMMENTS */ 1 13 1 14 1 15 dcl pds$kstp ext ptr, 1 16 (kstp, kstep) ptr; 1 17 1 18 dcl 1 kst aligned based (kstp), /* KST header declaration */ 1 19 2 lowseg fixed bin (17), /* lowest segment number described by kst */ 1 20 2 highseg fixed bin (17), /* highest segment number described by kst */ 1 21 2 highest_used_segno fixed bin (17), /* highest segment number yet used */ 1 22 2 lvs fixed bin (8), /* number of private LVs this process is connected to */ 1 23 2 time_of_bootload fixed bin (71), /* bootload time during prelinking */ 1 24 2 garbage_collections fixed bin (17) unaligned, /* KST garbage collections */ 1 25 2 entries_collected fixed bin (17) unaligned, /* KST entries recovered by garbage collection */ 1 26 2 free_list bit (18) unaligned, /* relative pointer to first free kste */ 1 27 2 prelinked_ring (7) bit (1) unaligned, /* rings prelinked in process */ 1 28 2 template bit (1) unaligned, /* this is a template kst if set */ 1 29 2 allow_256K_connect bit (1) unaligned, /* can use 256K segments */ 1 30 2 unused_2 bit (9) unaligned, 1 31 2 uid_hash_bucket (0 : 127) bit (18) unaligned, /* hash buckets */ 1 32 2 kst_entry (0 refer (kst.lowseg):0 refer (kst.highseg)) aligned like kste, /* kst entries */ 1 33 2 lv (1:256) bit (36), /* private logical volume connection list */ 1 34 2 end_of_kst bit (36); 1 35 1 36 dcl 1 kste based (kstep) aligned, /* KST entry declaration */ 1 37 2 fp bit (18) unaligned, /* forward rel pointer */ 1 38 2 segno fixed bin (17) unaligned, /* segment number of this kste */ 1 39 2 usage_count (0:7) fixed bin (8) unaligned, /* outstanding initiates/ring */ 1 40 2 entryp ptr unaligned, /* branch pointer */ 1 41 /* See WARNING below for requirements to use entryp. */ 1 42 2 uid bit (36) aligned, /* unique identifier */ 1 43 2 access_information unaligned, 1 44 3 dtbm bit (36), /* date time branch modified */ 1 45 3 extended_access bit (33), /* extended access from the branch */ 1 46 3 access bit (3), /* rew */ 1 47 3 ex_rb (3) bit (3), /* ring brackets from branch */ 1 48 2 pad1 bit (3) unaligned, 1 49 2 flags unaligned, 1 50 3 dirsw bit (1), /* directory switch */ 1 51 3 allow_write bit (1), /* set if initiated with write permission */ 1 52 3 priv_init bit (1), /* privileged initiation */ 1 53 3 tms bit (1), /* transparent modification switch */ 1 54 3 tus bit (1), /* transparent usage switch */ 1 55 3 tpd bit (1), /* transparent paging device switch */ 1 56 3 audit bit (1), /* audit switch */ 1 57 3 explicit_deact_ok bit (1), /* set if I am willing to have a user force deactivate */ 1 58 3 pad bit (3), 1 59 2 infcount fixed bin (12) unaligned; /* _i_f dirsw _t_h_e_n inferior count _e_l_s_e lv index */ 1 60 1 61 1 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 63 /* */ 1 64 /* WARNING: Before using kste.entryp to get a pointer to the directory */ 1 65 /* entry associated with the kst entry, you must first validate its value */ 1 66 /* by calling sum$getbranch or sum$getbranch_root_my. This call also locks */ 1 67 /* the containing directory. The containing directory must remain locked */ 1 68 /* during the entire period when kste.entryp and the directory entry are */ 1 69 /* being referenced. Once the directory is unlocked, kste.entryp can no */ 1 70 /* longer be used to get a pointer to the entry within the unlocked */ 1 71 /* directory since the dir entry could have been moved within the directory */ 1 72 /* by another processor. */ 1 73 /* */ 1 74 /* If you only need a pointer to the directory containing the associated */ 1 75 /* dir entry (but not to the dir entry itself), you can use: */ 1 76 /* pointer (kste.entryp, 0) */ 1 77 /* without calling sum to lock the directory and validate entryp. GDixon */ 1 78 /* */ 1 79 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 80 1 81 /* END OF: kst.incl.pl1 * * * * * */ 138 139 140 /* */ 141 2 1 /* BEGIN INCLUDE FILE ... sdw.incl.pl1 ... last modified 12 May 1976 */ 2 2 2 3 dcl sdwp ptr; 2 4 2 5 dcl 1 sdw based (sdwp) aligned, /* Segment Descriptor Word */ 2 6 2 7 (2 add bit (24), /* main memory address of page table */ 2 8 2 (r1, r2, r3) bit (3), /* ring brackets for the segment */ 2 9 2 df bit (1), /* directed fault bit (0 => fault) */ 2 10 2 df_no bit (2), /* directed fault number */ 2 11 2 12 2 pad1 bit (1), 2 13 2 bound bit (14), /* boundary field (in 16 word blocks) */ 2 14 2 access, /* access bits */ 2 15 3 read bit (1), /* read permission bit */ 2 16 3 execute bit (1), /* execute permission bit */ 2 17 3 write bit (1), /* write permission bit */ 2 18 3 privileged bit (1), /* privileged bit */ 2 19 2 unpaged bit (1), /* segment is unpaged if this is 1 */ 2 20 2 entry_bound_sw bit (1), /* if this is 0 the entry bound is checked by hardware */ 2 21 2 cache bit (1), /* cache enable bit */ 2 22 2 entry_bound bit (14)) unaligned; /* entry bound */ 2 23 2 24 dcl 1 sdwa (0: 1) based (sdwp) aligned like sdw; /* SDW array (descriptor segment) */ 2 25 2 26 /* END INCLUDE FILE sdw.incl.pl1 */ 142 143 144 end display_kst_entry; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/29/00 1714.3 display_kst_entry.pl1 >udd>sm>ds>w>ml>display_kst_entry.pl1 138 1 09/18/86 1408.1 kst.incl.pl1 >ldd>incl>kst.incl.pl1 142 2 09/14/76 0859.8 sdw.incl.pl1 >ldd>incl>sdw.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. access 6(33) based bit(3) level 3 packed packed unaligned dcl 1-36 ref 102 102 access_information 5 based structure level 2 packed packed unaligned dcl 1-36 addr builtin function dcl 49 ref 54 55 71 71 71 71 91 94 94 al 000102 automatic fixed bin(17,0) dcl 22 set ref 57* 63 63 66 66 68* 71* allow_write 7(13) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 113 ap 000100 automatic pointer dcl 22 set ref 57* 63 66 66 68* 71* arg based char packed unaligned dcl 22 set ref 63* 66 66 audit 7(18) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 118 baseno builtin function dcl 49 ref 83 binary builtin function dcl 49 ref 83 code 000260 automatic fixed bin(35,0) dcl 22 in procedure "dke" set ref 57* 58 63* 64 68* 69 71* 72 72* 73* 76* 77* 81* 85* 86* 87* 88 88* 92* 93 93* 94* 95 121* 124* code parameter fixed bin(35,0) dcl 128 in procedure "abort" set ref 127 129* com_err_ 000016 constant entry external dcl 40 ref 129 cu_$arg_ptr 000012 constant entry external dcl 40 ref 57 68 cv_oct_check_ 000020 constant entry external dcl 40 ref 63 dirsw 7(12) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 109 112 dname 000176 automatic char(168) packed unaligned dcl 22 set ref 71 71 73* 77* dsegp 000174 automatic pointer dcl 22 set ref 86* 94 94 dtbm 5 based bit(36) level 3 packed packed unaligned dcl 1-36 set ref 101* ename 000250 automatic char(32) packed unaligned dcl 22 set ref 71 71 73* 77* entryp 3 based pointer level 2 packed packed unaligned dcl 1-36 set ref 99* error_table_$invalidsegno 000010 external static fixed bin(35,0) dcl 39 set ref 89* ex_rb 7 based bit(3) array level 3 packed packed unaligned dcl 1-36 ref 104 104 104 104 104 104 107 107 107 107 107 107 expand_path_ 000022 constant entry external dcl 40 ref 71 explicit_deact_ok 7(19) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 119 extended_access 6 based bit(33) level 3 packed packed unaligned dcl 1-36 ref 104 107 107 flags 7(12) based structure level 2 in structure "kste" packed packed unaligned dcl 1-36 in procedure "dke" flags 000103 automatic varying char(168) initial dcl 22 in procedure "dke" set ref 22* 112* 112 113* 113 114* 114 115* 115 116* 116 117* 117 118* 118 119* 119 120* hcs_$initiate 000030 constant entry external dcl 40 ref 73 hcs_$terminate_noname 000024 constant entry external dcl 40 ref 124 highest_used_segno 2 based fixed bin(17,0) level 2 dcl 1-18 ref 89 infcount 7(23) based fixed bin(12,0) level 2 packed packed unaligned dcl 1-36 set ref 109* 111* ioa_ 000014 constant entry external dcl 40 ref 60 97 98 99 100 101 102 104 107 109 111 120 kst based structure level 1 dcl 1-18 kst_copy_buffer 000261 automatic fixed bin(17,0) array dcl 35 set ref 54 kst_entry 110 based structure array level 2 dcl 1-18 set ref 91 kste based structure level 1 dcl 1-36 set ref 92 92 kstep 000354 automatic pointer dcl 1-15 set ref 91* 92* 92 92 97* kstp 000352 automatic pointer dcl 1-15 set ref 85* 87* 91 linkage_error 000160 stack reference condition dcl 22 ref 76 78 lowseg based fixed bin(17,0) level 2 dcl 1-18 ref 89 91 null builtin function dcl 49 ref 74 81 p 000344 automatic pointer dcl 36 set ref 54* 87* 89 89 91 91 92* 98 99 100 101 102 102 104 104 104 104 104 104 104 107 107 107 107 107 107 107 107 109 109 111 112 113 114 115 116 117 118 119 phcs_$initiate 000032 constant entry external dcl 40 ref 77 phcs_$terminate_noname 000026 constant entry external dcl 40 ref 121 phcs_initiate 000156 automatic bit(1) initial dcl 22 set ref 22* 79* 121 priv_init 7(14) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 114 r1 0(24) based bit(3) level 2 packed packed unaligned dcl 2-5 ref 102 102 r2 0(27) based bit(3) level 2 packed packed unaligned dcl 2-5 ref 102 102 r3 0(30) based bit(3) level 2 packed packed unaligned dcl 2-5 ref 102 102 rel builtin function dcl 49 ref 91 91 ring0_get_$segptr 000036 constant entry external dcl 40 ref 85 86 ring_zero_peek_ 000034 constant entry external dcl 40 ref 87 92 94 s 000350 automatic pointer dcl 38 set ref 55* 94* 102 102 102 102 102 102 sdw based structure level 1 dcl 2-5 ref 94 94 sdw_copy_buffer 000346 automatic fixed bin(17,0) array dcl 37 set ref 55 95* sdwa based structure array level 1 dcl 2-24 set ref 94 94 sdwp automatic pointer dcl 2-3 ref 94 94 segno 000166 automatic fixed bin(17,0) dcl 22 set ref 63* 83* 89 89 91 94 94 97* segptr 000170 automatic pointer dcl 22 set ref 73* 74 77* 81 83 121* 124* size builtin function dcl 49 ref 92 92 94 94 terminate 000172 automatic bit(1) dcl 22 set ref 53* 82* 121 tms 7(15) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 115 tpd 7(17) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 117 tus 7(16) based bit(1) level 3 packed packed unaligned dcl 1-36 ref 116 uid 4 based bit(36) level 2 dcl 1-36 set ref 100* unspec builtin function dcl 49 set ref 95* usage_count 1 based fixed bin(8,0) array level 2 packed packed unaligned dcl 1-36 set ref 98* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. pds$kstp external static pointer dcl 1-15 pointer builtin function dcl 49 NAMES DECLARED BY EXPLICIT CONTEXT. abort 001635 constant entry internal dcl 127 ref 72 76 81 88 89 93 complain 000253 constant label dcl 60 ref 69 display_kst_entry 000217 constant entry external dcl 11 dke 000207 constant entry external dcl 11 return_to_caller 001633 constant label dcl 133 ref 130 NAMES DECLARED BY CONTEXT OR IMPLICATION. bin builtin function ref 91 91 91 102 102 102 102 102 102 102 102 104 104 104 104 104 104 107 107 107 107 107 107 107 107 ptr builtin function ref 91 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2060 2120 1670 2070 Length 2346 1670 40 211 167 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dke 307 external procedure is an external procedure. on unit on line 76 70 on unit abort 80 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dke 000100 ap dke 000102 al dke 000103 flags dke 000156 phcs_initiate dke 000166 segno dke 000170 segptr dke 000172 terminate dke 000174 dsegp dke 000176 dname dke 000250 ename dke 000260 code dke 000261 kst_copy_buffer dke 000344 p dke 000346 sdw_copy_buffer dke 000350 s dke 000352 kstp dke 000354 kstep dke THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_ptr cv_oct_check_ expand_path_ hcs_$initiate hcs_$terminate_noname ioa_ phcs_$initiate phcs_$terminate_noname ring0_get_$segptr ring_zero_peek_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$invalidsegno LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000202 11 000206 53 000225 54 000226 55 000230 57 000232 58 000251 60 000253 61 000267 63 000270 64 000314 66 000316 68 000330 69 000347 71 000351 72 000374 73 000404 74 000450 76 000454 77 000501 78 000545 79 000546 81 000550 82 000562 83 000564 85 000570 86 000617 87 000646 88 000665 89 000675 91 000712 92 000733 93 000753 94 000763 95 001006 97 001012 98 001041 99 001062 100 001105 101 001125 102 001147 104 001220 107 001267 109 001336 111 001366 112 001411 113 001427 114 001444 115 001461 116 001476 117 001513 118 001530 119 001545 120 001562 121 001603 124 001621 125 001632 133 001633 127 001634 129 001642 130 001665 ----------------------------------------------------------- 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