COMPILATION LISTING OF SEGMENT list_onunits_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/05/86 1041.3 mst Wed 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 list_onunits_: proc (a_sp, stream); 12 13 /* LIST_ONUNITS_ - list enabled condition handlers in a frame. 14* 15* This program is called by trace_stack_ 16* 17* */ 18 19 dcl a_sp ptr, /* stack frame pointer */ 20 stream char (32) aligned; /* output stream */ 21 22 dcl tp ptr, /* working ptr */ 23 strp ptr, 24 bchr char (32) unal based (tp), 25 condid char (66) aligned, 26 junk fixed bin, 27 snapw char (4) aligned, 28 on_unit_ptr ptr, 29 on_unit_rel bit (18) aligned; 30 31 dcl 1 filevar based aligned, 32 2 fabp ptr, 33 2 fsbp ptr; 34 35 dcl 1 fab based aligned, /* File attributes block. */ 36 2 switch bit (36), 37 2 filename char (32); 38 39 dcl interpret_ptr_ entry (ptr, ptr, ptr), 40 ioa_$rsnnl entry options (variable), 41 ioa_$ioa_stream entry options (variable); 42 43 dcl n_io_conds fixed bin int static init (7); /* Number of conditions which have file name. */ 44 dcl io_cond (7) char (16) aligned int static init 45 ("endfile", 46 "endpage", 47 "name", 48 "record", 49 "transmit", 50 "undefinedfile", 51 "key"); 52 1 1 /* BEGIN INCLUDE FILE ... on_unit.incl.pl1 */ 1 2 /* coded 31 October 1973 by M. Weaver to facilitate adding flags */ 1 3 1 4 dcl 1 on_unit based aligned, 1 5 2 name ptr, /* pointer to the condition name */ 1 6 2 body ptr, /* pointer to procedure to handle condition */ 1 7 2 size fixed bin, /* length of the condition name */ 1 8 2 next bit (18) unaligned, /* rel pointer to next on unit */ 1 9 2 flags unaligned, 1 10 3 pl1_snap bit (1) unaligned, /* "1"b indicates to call snap procedure */ 1 11 3 pl1_system bit (1) unaligned, /* "1"b indicates to use system condition handler */ 1 12 3 pad bit (16) unaligned, 1 13 2 file ptr; /* ptr to file descriptor for pl1 I/O condition */ 1 14 1 15 /* END INCLUDE FILE ... on_unit.incl.pl1 */ 53 2 1 /* BEGIN INCLUDE FILE ... stack_frame.incl.pl1 ... */ 2 2 2 3 /* format: off */ 2 4 2 5 /* Modified: 16 Dec 1977, D. Levin - to add fio_ps_ptr and pl1_ps_ptr */ 2 6 /* Modified: 3 Feb 1978, P. Krupp - to add run_unit_manager bit & main_proc bit */ 2 7 /* Modified: 21 March 1978, D. Levin - change fio_ps_ptr to support_ptr */ 2 8 /* Modified: 03/01/84, S. Herbst - Added RETURN_PTR_MASK */ 2 9 2 10 2 11 /****^ HISTORY COMMENTS: 2 12* 1) change(86-09-15,Kissel), approve(86-09-15,MCR7473), 2 13* audit(86-10-01,Fawcett), install(86-11-03,MR12.0-1206): 2 14* Modified to add constants for the translator_id field in the stack_frame 2 15* structure. 2 16* END HISTORY COMMENTS */ 2 17 2 18 2 19 dcl RETURN_PTR_MASK bit (72) int static options (constant) /* mask to be AND'd with stack_frame.return_ptr */ 2 20 init ("777777777777777777000000"b3); /* when copying, to ignore bits that a call fills */ 2 21 /* with indicators (nonzero for Fortran hexfp caller) */ 2 22 /* say: unspec(ptr) = unspec(stack_frame.return_ptr) & RETURN_PTR_MASK; */ 2 23 2 24 dcl TRANSLATOR_ID_PL1V2 bit (18) internal static options (constant) init ("000000"b3); 2 25 dcl TRANSLATOR_ID_ALM bit (18) internal static options (constant) init ("000001"b3); 2 26 dcl TRANSLATOR_ID_PL1V1 bit (18) internal static options (constant) init ("000002"b3); 2 27 dcl TRANSLATOR_ID_SIGNAL_CALLER bit (18) internal static options (constant) init ("000003"b3); 2 28 dcl TRANSLATOR_ID_SIGNALLER bit (18) internal static options (constant) init ("000004"b3); 2 29 2 30 2 31 dcl sp pointer; /* pointer to beginning of stack frame */ 2 32 2 33 dcl stack_frame_min_length fixed bin static init(48); 2 34 2 35 2 36 dcl 1 stack_frame based(sp) aligned, 2 37 2 pointer_registers(0 : 7) ptr, 2 38 2 prev_sp pointer, 2 39 2 next_sp pointer, 2 40 2 return_ptr pointer, 2 41 2 entry_ptr pointer, 2 42 2 operator_and_lp_ptr ptr, /* serves as both */ 2 43 2 arg_ptr pointer, 2 44 2 static_ptr ptr unaligned, 2 45 2 support_ptr ptr unal, /* only used by fortran I/O */ 2 46 2 on_unit_relp1 bit(18) unaligned, 2 47 2 on_unit_relp2 bit(18) unaligned, 2 48 2 translator_id bit(18) unaligned, /* Translator ID (see constants above) 2 49* 0 => PL/I version II 2 50* 1 => ALM 2 51* 2 => PL/I version I 2 52* 3 => signal caller frame 2 53* 4 => signaller frame */ 2 54 2 operator_return_offset bit(18) unaligned, 2 55 2 x(0: 7) bit(18) unaligned, /* index registers */ 2 56 2 a bit(36), /* accumulator */ 2 57 2 q bit(36), /* q-register */ 2 58 2 e bit(36), /* exponent */ 2 59 2 timer bit(27) unaligned, /* timer */ 2 60 2 pad bit(6) unaligned, 2 61 2 ring_alarm_reg bit(3) unaligned; 2 62 2 63 2 64 dcl 1 stack_frame_flags based(sp) aligned, 2 65 2 pad(0 : 7) bit(72), /* skip over prs */ 2 66 2 xx0 bit(22) unal, 2 67 2 main_proc bit(1) unal, /* on if frame belongs to a main procedure */ 2 68 2 run_unit_manager bit(1) unal, /* on if frame belongs to run unit manager */ 2 69 2 signal bit(1) unal, /* on if frame belongs to logical signal_ */ 2 70 2 crawl_out bit(1) unal, /* on if this is a signal caller frame */ 2 71 2 signaller bit(1) unal, /* on if next frame is signaller's */ 2 72 2 link_trap bit(1) unal, /* on if this frame was made by the linker */ 2 73 2 support bit(1) unal, /* on if frame belongs to a support proc */ 2 74 2 condition bit(1) unal, /* on if condition established in this frame */ 2 75 2 xx0a bit(6) unal, 2 76 2 xx1 fixed bin, 2 77 2 xx2 fixed bin, 2 78 2 xx3 bit(25) unal, 2 79 2 old_crawl_out bit (1) unal, /* on if this is a signal caller frame */ 2 80 2 old_signaller bit(1) unal, /* on if next frame is signaller's */ 2 81 2 xx3a bit(9) unaligned, 2 82 2 xx4(9) bit(72) aligned, 2 83 2 v2_pl1_op_ret_base ptr, /* When a V2 PL/I program calls an operator the 2 84* * operator puts a pointer to the base of 2 85* * the calling procedure here. (text base ptr) */ 2 86 2 xx5 bit(72) aligned, 2 87 2 pl1_ps_ptr ptr; /* ptr to ps for this frame; also used by fio. */ 2 88 2 89 /* format: on */ 2 90 2 91 /* END INCLUDE FILE ... stack_frame.incl.pl1 */ 54 55 3 1 /* BEGIN INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 3 2 3 3 dcl 1 struc based (strp) aligned, /* This useful structure is in trace_stack pgms */ 3 4 2 comment char (64), /* name of boundseg, or thing pointed to, or .. */ 3 5 2 segment char (32), /* name of segment, or segment number with # */ 3 6 2 entryn char (33), /* entry name, preceded by $, or blank */ 3 7 2 offset char (6), /* offset in segment, or blank */ 3 8 2 opname char (32), /* may be pl1 operator name */ 3 9 2 ring char (1) unal, /* ring number of ptr */ 3 10 2 std_flag bit (1) unal, /* TRUE if std object. */ 3 11 2 xpad bit (26) unal, 3 12 2 bitoff char (4), /* bit offset */ 3 13 2 modifier char (8), /* ptr modifier, or special code like "noaccess" */ 3 14 2 symbolp ptr, /* ptr to symbol section */ 3 15 2 instruction_counter fixed bin, /* binary instruction counter */ 3 16 2 sourcemap fixed bin, /* source map offset in symbol section */ 3 17 2 compiler char (8), /* name of compiler */ 3 18 2 text_ptr ptr, /* ptr to segment text */ 3 19 2 stack_ptr ptr; /* ptr to stack frame */ 3 20 3 21 dcl 1 strbuf aligned like struc; /* If referenced, will make storage for struc */ 3 22 3 23 /* END INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 56 57 58 dcl (addr, addrel, null, substr) builtin; 59 60 /* ------------------------------------------------------ */ 61 62 sp = a_sp; /* copy arg */ 63 if ^stack_frame_flags.condition then return; /* check bit 29 of last-sp */ 64 strp = addr (strbuf); 65 on_unit_rel = stack_frame.on_unit_relp1; /* got on-units, so follow chain */ 66 onloop: if on_unit_rel = "0"b then return; /* "0"b means end of chain */ 67 on_unit_ptr = addrel (sp, on_unit_rel); /* these things are relative to sp */ 68 if on_unit_ptr -> on_unit.flags.pl1_snap then snapw = "snap"; else snapw = ""; 69 if on_unit_ptr -> on_unit.size ^= 0 then do; 70 tp = on_unit_ptr -> on_unit.name; /* get ptr to name */ 71 condid = substr (bchr, 1, on_unit_ptr -> on_unit.size); 72 do junk = 1 to n_io_conds while (condid ^= io_cond (junk)); end; 73 if junk <= n_io_conds then /* This unit has associated filename. */ 74 call ioa_$rsnnl ("^a(^a)", condid, junk, substr (bchr, 1, on_unit_ptr -> on_unit.size), 75 on_unit_ptr -> on_unit.file -> filevar.fabp -> fab.filename); 76 if on_unit_ptr -> on_unit.flags.pl1_system then do; 77 call ioa_$ioa_stream (stream, "^-on ""^a"" ^a system;", condid, snapw); 78 end; 79 else do; 80 call interpret_ptr_ (on_unit_ptr -> on_unit.body, null, strp); 81 call ioa_$ioa_stream (stream, "^-on ""^a"" ^a call ^a^a|^a ^a", condid, 82 snapw, struc.segment, struc.entryn, struc.offset, struc.comment); 83 end; 84 end; 85 on_unit_rel = on_unit_ptr -> on_unit.next; /* following chain */ 86 go to onloop; 87 88 end list_onunits_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/86 1041.7 list_onunits_.pl1 >special_ldd>install>MR12.0-1206>list_onunits_.pl1 53 1 05/06/74 1742.5 on_unit.incl.pl1 >ldd>include>on_unit.incl.pl1 54 2 11/03/86 1114.7 stack_frame.incl.pl1 >special_ldd>install>MR12.0-1206>stack_frame.incl.pl1 56 3 06/11/74 0602.3 interpret_ptr_struc.incl.pl1 >ldd>include>interpret_ptr_struc.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. a_sp parameter pointer dcl 19 ref 11 62 addr builtin function dcl 58 ref 64 addrel builtin function dcl 58 ref 67 bchr based char(32) unaligned dcl 22 ref 71 73 73 body 2 based pointer level 2 dcl 1-4 set ref 80* comment based char(64) level 2 dcl 3-3 set ref 81* condid 000104 automatic char(66) dcl 22 set ref 71* 72 73* 77* 81* condition 20(29) based bit(1) level 2 packed unaligned dcl 2-64 ref 63 entryn 30 based char(33) level 2 dcl 3-3 set ref 81* fab based structure level 1 dcl 35 fabp based pointer level 2 dcl 31 ref 73 file 6 based pointer level 2 dcl 1-4 ref 73 filename 1 based char(32) level 2 dcl 35 set ref 73* filevar based structure level 1 dcl 31 flags 5(18) based structure level 2 packed unaligned dcl 1-4 interpret_ptr_ 000010 constant entry external dcl 39 ref 80 io_cond 000000 constant char(16) initial array dcl 44 ref 72 ioa_$ioa_stream 000014 constant entry external dcl 39 ref 77 81 ioa_$rsnnl 000012 constant entry external dcl 39 ref 73 junk 000125 automatic fixed bin(17,0) dcl 22 set ref 72* 72* 73 73* n_io_conds constant fixed bin(17,0) initial dcl 43 ref 72 73 name based pointer level 2 dcl 1-4 ref 70 next 5 based bit(18) level 2 packed unaligned dcl 1-4 ref 85 null builtin function dcl 58 ref 80 80 offset 41 based char(6) level 2 dcl 3-3 set ref 81* on_unit based structure level 1 dcl 1-4 on_unit_ptr 000130 automatic pointer dcl 22 set ref 67* 68 69 70 71 73 73 73 76 80 85 on_unit_rel 000132 automatic bit(18) dcl 22 set ref 65* 66 67 85* on_unit_relp1 36 based bit(18) level 2 packed unaligned dcl 2-36 ref 65 pl1_snap 5(18) based bit(1) level 3 packed unaligned dcl 1-4 ref 68 pl1_system 5(19) based bit(1) level 3 packed unaligned dcl 1-4 ref 76 segment 20 based char(32) level 2 dcl 3-3 set ref 81* size 4 based fixed bin(17,0) level 2 dcl 1-4 ref 69 71 73 73 snapw 000126 automatic char(4) dcl 22 set ref 68* 68* 77* 81* sp 000134 automatic pointer dcl 2-31 set ref 62* 63 65 67 stack_frame based structure level 1 dcl 2-36 stack_frame_flags based structure level 1 dcl 2-64 strbuf 000136 automatic structure level 1 dcl 3-21 set ref 64 stream parameter char(32) dcl 19 set ref 11 77* 81* strp 000102 automatic pointer dcl 22 set ref 64* 80* 81 81 81 81 struc based structure level 1 dcl 3-3 substr builtin function dcl 58 ref 71 73 73 tp 000100 automatic pointer dcl 22 set ref 70* 71 73 73 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. RETURN_PTR_MASK internal static bit(72) initial unaligned dcl 2-19 TRANSLATOR_ID_ALM internal static bit(18) initial unaligned dcl 2-25 TRANSLATOR_ID_PL1V1 internal static bit(18) initial unaligned dcl 2-26 TRANSLATOR_ID_PL1V2 internal static bit(18) initial unaligned dcl 2-24 TRANSLATOR_ID_SIGNALLER internal static bit(18) initial unaligned dcl 2-28 TRANSLATOR_ID_SIGNAL_CALLER internal static bit(18) initial unaligned dcl 2-27 stack_frame_min_length internal static fixed bin(17,0) initial dcl 2-33 NAMES DECLARED BY EXPLICIT CONTEXT. list_onunits_ 000076 constant entry external dcl 11 onloop 000117 constant label dcl 66 ref 86 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 442 460 371 452 Length 710 371 16 214 51 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME list_onunits_ 232 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME list_onunits_ 000100 tp list_onunits_ 000102 strp list_onunits_ 000104 condid list_onunits_ 000125 junk list_onunits_ 000126 snapw list_onunits_ 000130 on_unit_ptr list_onunits_ 000132 on_unit_rel list_onunits_ 000134 sp list_onunits_ 000136 strbuf list_onunits_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. interpret_ptr_ ioa_$ioa_stream ioa_$rsnnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000072 62 000103 63 000107 64 000112 65 000114 66 000117 67 000121 68 000124 68 000132 69 000134 70 000136 71 000140 72 000143 72 000161 73 000163 76 000234 77 000241 78 000275 80 000276 81 000313 85 000364 86 000370 ----------------------------------------------------------- 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