COMPILATION LISTING OF SEGMENT init_str_seg Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0939.4 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 init_str_seg: proc; 14 15 /* Procedure to init trailer segment. */ 16 17 /* Modified 04/17/81, WOS, to record the number of trailers created in the sst */ 18 19 dcl trp pointer; 20 dcl idx fixed bin; 21 22 dcl slt$ external static; 23 24 dcl sst$tfreep pointer external static; 25 dcl sst$strsize fixed bin external static; 26 dcl sst$n_trailers fixed bin external static; 27 dcl sys_info$page_size fixed bin external static; 28 29 dcl (addr, baseno, binary, divide, rel, size) builtin; 30 31 /* */ 32 33 sst$tfreep = addr(str_seg$); /* Pointer to trailer segment. */ 34 trp = sst$tfreep; 35 36 sst$strsize = size (str); 37 sltep = addr (addr (slt$) -> slt.seg (binary (baseno (trp)))); 38 sst$n_trailers = divide ((binary (slte.cur_length, 9) * sys_info$page_size), sst$strsize, 17, 0); 39 40 do idx = 1 to sst$n_trailers; /* Initialize them all */ 41 strp = addr (trp -> stra (idx - 1)); /* Pointer to this entry. */ 42 strp -> str.dstep = "777777"b3; /* set pattern in dstep */ 43 strp -> str.fp = rel (sst$tfreep); /* Thread onto free list. */ 44 sst$tfreep = strp; 45 end; 46 47 return; 48 49 1 2 /* BEGIN INCLUDE FILE ... str.incl.pl1 ... last modified March 1970 */ 1 3 1 4 dcl str_seg$ ext, 1 5 strp ptr; 1 6 1 7 dcl 1 str based (strp) aligned, /* segment or process trailer declaration */ 1 8 1 9 (2 fp bit (18), /* forward ast trailer rel pointer */ 1 10 2 bp bit (18), /* backward ast trailer rel pointer*/ 1 11 1 12 2 segno bit (18), /* segment number*/ 1 13 2 dstep bit (18)) unaligned; /* rel pointer to ring 0 dste */ 1 14 1 15 dcl stra (0:8000) bit (72) based (strp) aligned; 1 16 1 17 /* END INCLUDE FILE ... str.incl.pl1 */ 1 18 49 50 /* BEGIN INCLUDE FILE slt.incl.pl1 --- Last modified 2/76 SHW */ 2 2 2 3 /* Declarations for Segment Loading Table header and array. 2 4* 2 5* Used by Initialization and MST Checker subroutines */ 2 6 2 7 dcl sltp ptr, /* pointer to base of SLT segment */ 2 8 names_ptr ptr, /* pointer to base of SLT names segment */ 2 9 namep ptr, /* pointer to segment name list block */ 2 10 pathp ptr, /* pointer to segment's directory path name */ 2 11 aclp ptr; /* pointer to acl structure */ 2 12 2 13 declare 1 slt based (sltp) aligned, /* declaration of Segment Loading Table (SLT) */ 2 14 2 name_seg_ptr ptr, /* words 0-1, pointer (ITS pair) to name segment */ 2 15 2 free_core_start fixed bin (24), /* word 2, start of free core after perm-wired */ 2 16 2 first_sup_seg fixed bin (18), /* word 3, first supervisor segment number */ 2 17 2 last_sup_seg fixed bin (18), /* word 4, last supervisor segment number */ 2 18 2 first_init_seg fixed bin (18), /* word 5, first initializer segment number */ 2 19 2 last_init_seg fixed bin (18), /* word 6, last initializer segment number */ 2 20 2 free_core_size fixed bin (24), /* size (in words) of free core after perm-wired */ 2 21 2 seg (0:8191) aligned, /* segment entries (4 words each) */ 2 22 3 slte (4) fixed bin (35); /* Space for SLT entries */ 2 23 2 24 /* auxiliary segment of SLT for storing of segment names and directory path names */ 2 25 2 26 declare 1 name_seg based (names_ptr) aligned, /* name segment header */ 2 27 2 pad bit (18) unal, 2 28 2 next_loc bit (18) unal, /* Next available free location in name seg */ 2 29 2 ht (0:127) bit (18) aligned; /* Names hash table */ 2 30 2 31 declare 1 segnam based (namep) aligned, /* declaration for segment name block */ 2 32 2 count fixed bin (17), /* number of segment names in this block */ 2 33 2 names (50 refer (segnam.count)), /* segment name array */ 2 34 3 hp bit (18) unal, /* hash thread pointer */ 2 35 3 ref bit (1) unal, /* "1"b if name referenced */ 2 36 3 pad bit (5) unal, 2 37 3 segno bit (12) unal, /* segment number associated with this name */ 2 38 3 name char (32) unal; /* space for name (max 32 characters) */ 2 39 2 40 declare 1 path based (pathp) aligned, /* declaration for directory path name */ 2 41 2 size fixed bin (17), /* length of pathname */ 2 42 2 name char (168 refer (path.size)) unal, /* directory path name */ 2 43 2 acls fixed bin; /* ACL list starts here */ 2 44 2 45 declare 1 acls based (aclp) aligned, /* declaration for acl list */ 2 46 2 count fixed bin, /* number of entries in acl list */ 2 47 2 acl (50 refer (acls.count)), /* array of acl entries */ 2 48 3 userid char (32), /* user specification */ 2 49 3 mode bit (36) aligned, /* mode for the specified user */ 2 50 3 pad bit (36) aligned, 2 51 3 code fixed bin; 2 52 2 53 2 54 /* END INCLUDE FILE slt.incl.pl1 */ 50 51 /* BEGIN INCLUDE FILE slte.incl.pl1 */ 3 2 /* Declaration for Segment Loading Table Entry structure. 3 3* Used by Initialization, MST Generation, and MST Checker subroutines */ 3 4 /* modified 5/4/76 by Noel I. Morris */ 3 5 /* last modified 12/12/83 by Keith Loepere for breakpointable */ 3 6 /* format: style3 */ 3 7 3 8 dcl sltep ptr; 3 9 3 10 dcl 1 slte_uns based (sltep) aligned, 3 11 ( 2 names_ptr bit (18), /* rel pointer to thread of names */ 3 12 2 path_ptr bit (18), /* rel pointer to pathname (if present) */ 3 13 /**** End of word 1 */ 3 14 2 access bit (4), /* SDW access bit (REWP) */ 3 15 2 cache bit (1), /* Segment to be allowed in cache */ 3 16 2 abs_seg bit (1), /* segment is an abs seg if ON */ 3 17 2 firmware_seg bit (1), /* load in low 256 */ 3 18 2 layout_seg bit (1), /* mailbox & such */ 3 19 2 breakpointable bit (1), /* includes breakpoint_page */ 3 20 2 pad1 bit (3), /* unused */ 3 21 2 wired bit (1), /* segment is wired if ON */ 3 22 2 paged bit (1), /* segment is paged if ON */ 3 23 2 per_process bit (1), /* segment is per-process if ON */ 3 24 2 pad3 bit (2), 3 25 2 acl_provided bit (1), /* ON if acl structure follows path_name on MST */ 3 26 /**** End of 1st half of word 2 */ 3 27 2 pad4 bit (3), 3 28 2 branch_required bit (1), /* path name supplied if ON */ 3 29 2 init_seg bit (1), /* segment is init_seg if ON */ 3 30 2 temp_seg bit (1), /* segment is temp_seg if ON */ 3 31 2 link_provided bit (1), /* linkage segment provided if ON */ 3 32 2 link_sect bit (1), /* segment is linkage segment if ON */ 3 33 2 link_sect_wired bit (1), /* linkage segment is wired if ON */ 3 34 2 combine_link bit (1), /* linkage is combined if ON */ 3 35 2 pre_linked bit (1), /* lot entry has been made if ON */ 3 36 2 defs bit (1), /* segment is definitions segment if ON */ 3 37 /***** End of word 2 */ 3 38 2 pad5 bit (6), 3 39 2 cur_length fixed bin (9) uns, /* current length of segment (in 1024 word blocks) */ 3 40 2 ringbrack (3) fixed bin (3) uns, /* ringbrackets */ 3 41 2 segno fixed bin (18) uns, /* text/link segment number */ 3 42 /***** End of word 3 */ 3 43 2 pad7 bit (3), 3 44 2 max_length fixed bin (9) uns, /* maximum length for segment */ 3 45 2 bit_count fixed bin (24) uns 3 46 ) unaligned; /* bitcount of segment */ 3 47 3 48 dcl 1 slte based (sltep) aligned, 3 49 ( 2 names_ptr bit (18), /* rel pointer to thread of names */ 3 50 2 path_ptr bit (18), /* rel pointer to pathname (if present) */ 3 51 2 access bit (4), /* SDW access bit (REWP) */ 3 52 2 cache bit (1), /* Segment to be allowed in cache */ 3 53 2 abs_seg bit (1), /* segment is an abs seg if ON */ 3 54 2 firmware_seg bit (1), 3 55 2 layout_seg bit (1), 3 56 2 breakpointable bit (1), 3 57 2 pad2 bit (3), 3 58 2 wired bit (1), /* segment is wired if ON */ 3 59 2 paged bit (1), /* segment is paged if ON */ 3 60 2 per_process bit (1), /* segment is per-process if ON */ 3 61 2 pad3 bit (2), 3 62 2 acl_provided bit (1), /* ON if acl structure follows path_name on MST */ 3 63 2 pad4 bit (3), 3 64 2 branch_required bit (1), /* path name supplied if ON */ 3 65 2 init_seg bit (1), /* segment is init_seg if ON */ 3 66 2 temp_seg bit (1), /* segment is temp_seg if ON */ 3 67 2 link_provided bit (1), /* linkage segment provided if ON */ 3 68 2 link_sect bit (1), /* segment is linkage segment if ON */ 3 69 2 link_sect_wired bit (1), /* linkage segment is wired if ON */ 3 70 2 combine_link bit (1), /* linkage is combined if ON */ 3 71 2 pre_linked bit (1), /* lot entry has been made if ON */ 3 72 2 defs bit (1), /* segment is definitions segment if ON */ 3 73 2 pad5 bit (6), 3 74 2 cur_length bit (9), /* current length of segment (in 1024 word blocks) */ 3 75 2 ringbrack (3) bit (3), /* ringbrackets */ 3 76 2 segno bit (18), /* text/link segment number */ 3 77 2 pad6 bit (3), 3 78 2 max_length bit (9), /* maximum length for segment */ 3 79 2 bit_count bit (24) 3 80 ) unaligned; /* bitcount of segment */ 3 81 3 82 /* END INCLUDE FILE slte.incl.pl1 */ 51 52 53 end init_str_seg; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0826.9 init_str_seg.pl1 >spec>install>1112>init_str_seg.pl1 49 1 05/06/74 1751.6 str.incl.pl1 >ldd>include>str.incl.pl1 50 2 05/24/82 1005.0 slt.incl.pl1 >ldd>include>slt.incl.pl1 51 3 07/11/84 0937.3 slte.incl.pl1 >ldd>include>slte.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. addr builtin function dcl 29 ref 33 37 37 41 baseno builtin function dcl 29 ref 37 binary builtin function dcl 29 ref 37 38 cur_length 2 based bit(9) level 2 packed packed unaligned dcl 3-48 ref 38 divide builtin function dcl 29 ref 38 dstep 1(18) based bit(18) level 2 packed packed unaligned dcl 1-7 set ref 42* fp based bit(18) level 2 packed packed unaligned dcl 1-7 set ref 43* idx 000102 automatic fixed bin(17,0) dcl 20 set ref 40* 41* rel builtin function dcl 29 ref 43 seg 10 based structure array level 2 dcl 2-13 set ref 37 size builtin function dcl 29 ref 36 slt based structure level 1 dcl 2-13 slt$ 000010 external static fixed bin(17,0) dcl 22 set ref 37 slte based structure level 1 dcl 3-48 sltep 000106 automatic pointer dcl 3-8 set ref 37* 38 sst$n_trailers 000016 external static fixed bin(17,0) dcl 26 set ref 38* 40 sst$strsize 000014 external static fixed bin(17,0) dcl 25 set ref 36* 38 sst$tfreep 000012 external static pointer dcl 24 set ref 33* 34 43 44* str based structure level 1 dcl 1-7 set ref 36 str_seg$ 000022 external static fixed bin(17,0) dcl 1-4 set ref 33 stra based bit(72) array dcl 1-15 set ref 41 strp 000104 automatic pointer dcl 1-4 set ref 36 41* 42 43 44 sys_info$page_size 000020 external static fixed bin(17,0) dcl 27 ref 38 trp 000100 automatic pointer dcl 19 set ref 34* 37 41 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. aclp automatic pointer dcl 2-7 acls based structure level 1 dcl 2-45 name_seg based structure level 1 dcl 2-26 namep automatic pointer dcl 2-7 names_ptr automatic pointer dcl 2-7 path based structure level 1 dcl 2-40 pathp automatic pointer dcl 2-7 segnam based structure level 1 dcl 2-31 slte_uns based structure level 1 dcl 3-10 sltp automatic pointer dcl 2-7 NAME DECLARED BY EXPLICIT CONTEXT. init_str_seg 000001 constant entry external dcl 13 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 150 174 60 160 Length 404 60 24 174 70 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME init_str_seg 76 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME init_str_seg 000100 trp init_str_seg 000102 idx init_str_seg 000104 strp init_str_seg 000106 sltep init_str_seg THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac mpfx2 ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. slt$ sst$n_trailers sst$strsize sst$tfreep str_seg$ sys_info$page_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000000 33 000006 34 000010 36 000011 37 000013 38 000025 40 000032 41 000041 42 000045 43 000047 44 000054 45 000055 47 000057 ----------------------------------------------------------- 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