COMPILATION LISTING OF SEGMENT display_timers Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/14/86 1030.3 mst Fri 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 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-11-12,Fawcett), approve(86-11-12,PBF7473), 16* audit(86-11-13,Gilcrease), install(86-11-14,MR12.0-1218): 17* Changed to work with version 3 of timere_manager_schedule.incl.pl1. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style1,^inddcls,ifthenstmt,ifthendo,ifthen,indcomtxt,dclind5 */ 22 display_timers: proc; 23 24 /* This command prints a list of the timer_manager_ timers scheduled to 25* occur in the process. 26* 27* Written in 1980 by C. D. Tavares 28* Modified 8 September 1982 by Richard Lamson to work with version 2 schedule 29**/ 30 31 /* AUTOMATIC */ 32 33 dcl (code fixed bin (35), 34 date_time_string char (24), 35 dirname char (168), 36 ename char (32), 37 i fixed bin, 38 strp pointer) automatic; 39 40 /* STATIC */ 41 42 dcl sys_area_p pointer initial (null); 43 44 /* BASED */ 45 46 dcl sys_area area (sys_info$max_seg_size) based (sys_area_p); 47 48 /* EXTERNAL STATIC */ 49 50 dcl (error_table_$improper_data_format, 51 error_table_$unimplemented_version, 52 sys_info$max_seg_size) ext fixed bin (35) static; 53 54 /* ENTRIES */ 55 56 dcl com_err_ entry options (variable), 57 date_time_ entry (fixed bin (71), char (*)), 58 get_control_point_id_ entry () returns (bit (36)), 59 get_system_free_area_ entry () returns (ptr), 60 hcs_$fs_get_path_name entry (pointer, char (*), fixed bin, char (*), 61 fixed bin (35)), 62 interpret_ptr_ entry (pointer, pointer, pointer), 63 ioa_ entry options (variable), 64 ioa_$rsnnl entry options (variable), 65 timer_manager_$get_schedule 66 entry (pointer, pointer, fixed bin (35)); 67 68 /* BUILTINS */ 69 70 dcl (addr, clock, codeptr, 71 environmentptr, min, 72 null, unspec, vclock) builtin; 73 74 /* CONDITIONS */ 75 76 dcl cleanup condition; 77 1 1 /* BEGIN INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 1 2 1 3 dcl 1 struc based (strp) aligned, /* This useful structure is in trace_stack pgms */ 1 4 2 comment char (64), /* name of boundseg, or thing pointed to, or .. */ 1 5 2 segment char (32), /* name of segment, or segment number with # */ 1 6 2 entryn char (33), /* entry name, preceded by $, or blank */ 1 7 2 offset char (6), /* offset in segment, or blank */ 1 8 2 opname char (32), /* may be pl1 operator name */ 1 9 2 ring char (1) unal, /* ring number of ptr */ 1 10 2 std_flag bit (1) unal, /* TRUE if std object. */ 1 11 2 xpad bit (26) unal, 1 12 2 bitoff char (4), /* bit offset */ 1 13 2 modifier char (8), /* ptr modifier, or special code like "noaccess" */ 1 14 2 symbolp ptr, /* ptr to symbol section */ 1 15 2 instruction_counter fixed bin, /* binary instruction counter */ 1 16 2 sourcemap fixed bin, /* source map offset in symbol section */ 1 17 2 compiler char (8), /* name of compiler */ 1 18 2 text_ptr ptr, /* ptr to segment text */ 1 19 2 stack_ptr ptr; /* ptr to stack frame */ 1 20 1 21 dcl 1 strbuf aligned like struc; /* If referenced, will make storage for struc */ 1 22 1 23 /* END INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 78 79 2 1 /* --------------- BEGIN include file timer_manager_schedule.incl.pl1 --------------- */ 2 2 /* Last modified 9 September 1982 to add timer_manager_ data pointers */ 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 2 7* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 2 8* Changed to support control point management. These changes were actually 2 9* done in February 1985 by G. Palter. 2 10* END HISTORY COMMENTS */ 2 11 2 12 2 13 dcl 1 schedule aligned based (schedule_ptr), 2 14 2 version fixed bin, 2 15 2 n_timers fixed bin, 2 16 2 timer (N_Timers refer (schedule.n_timers)) aligned, 2 17 3 time fixed bin (71), 2 18 3 flags, 2 19 4 inhibit bit (1) unaligned, 2 20 4 alarm bit (1) unaligned, 2 21 4 cpu bit (1) unaligned, 2 22 4 call bit (1) unaligned, 2 23 4 wakeup bit (1) unaligned, 2 24 4 data_ptr_provided bit (1) unaligned, 2 25 4 pad bit (30) unaligned, 2 26 3 pad1 bit (36) aligned, 2 27 3 channel fixed bin (71), 2 28 3 routine entry variable options (variable), 2 29 3 data_ptr pointer, 2 30 3 control_point_id bit (36) aligned, 2 31 3 pad (3) fixed bin (35); 2 32 2 33 dcl N_Timers fixed bin, 2 34 schedule_ptr pointer, 2 35 2 36 timer_manager_schedule_version_1 fixed bin static initial (1) options (constant), 2 37 timer_manager_schedule_version_2 fixed bin static initial (2) options (constant), 2 38 timer_manager_schedule_version_3 fixed bin static initial (3) options (constant); 2 39 2 40 2 41 /* ---------------- END include file timer_manager_schedule.incl.pl1 ---------------- */ 80 81 82 if sys_area_p = null then 83 sys_area_p = get_system_free_area_ (); 84 85 schedule_ptr = null; 86 87 on cleanup call cleaner_up; 88 89 90 call timer_manager_$get_schedule (sys_area_p, schedule_ptr, code); 91 if code ^= 0 then call crump (code, "Obtaining timers."); 92 93 if schedule.version < timer_manager_schedule_version_1 94 | schedule.version > timer_manager_schedule_version_3 95 then call crump (error_table_$unimplemented_version, ""); 96 97 call date_time_ (clock (), date_time_string); 98 99 call ioa_ ("^[No timers^s^;1 timer^s^;^d timers^] scheduled. 100 Current time is ^a; current CPU usage is ^.2f^/", 101 min (schedule.n_timers + 1, 3), schedule.n_timers, 102 date_time_string, vclock () / 1e6); 103 104 105 do i = 1 to schedule.n_timers; 106 107 if schedule.version < timer_manager_schedule_version_2 then timer (i).data_ptr_provided = "0"b; 108 109 if timer.call (i) then do; 110 call hcs_$fs_get_path_name 111 (codeptr (timer.routine (i)), dirname, 0, ename, 112 code); 113 if code ^= 0 then 114 call crump (code, 115 "Interpreting a timer's entry variable."); 116 117 call interpret_ptr_ 118 (codeptr (timer.routine (i)), 119 environmentptr (timer.routine (i)), 120 addr (strbuf)); 121 end; 122 123 else if ^timer (i).wakeup then 124 call crump 125 (error_table_$improper_data_format, 126 "Timer neither call nor wakeup."); 127 128 if timer.alarm (i) then 129 call date_time_ (timer.time (i), date_time_string); 130 else if timer.cpu (i) then 131 call ioa_$rsnnl 132 ("^6.3f CPU seconds", date_time_string, 0, 133 timer.time (i) / 1e6); 134 else call crump 135 (error_table_$improper_data_format, 136 "Timer neither alarm nor CPU."); 137 138 call ioa_ 139 ("Timer ^2d is ^[inhibited ^;^]^[alarm^;CPU^] timer scheduled at ^a 140 ^9xto ^[^scall ^a^a ^[(^p)^;^s^]^/^9x(^a>^a|^a; ^a)^;wakeup on channel ^24.3b^].", 141 i, timer.inhibit (i), timer.alarm (i), date_time_string, 142 timer.call (i), unspec (timer.channel (i)), 143 strbuf.segment, strbuf.entryn, 144 timer (i).data_ptr_provided, timer (i).data_ptr, 145 dirname, ename, strbuf.offset, strbuf.compiler); 146 147 if schedule.version >= timer_manager_schedule_version_3 then do; 148 if timer (i).control_point_id ^= get_control_point_id_ () then 149 call ioa_ ("^9xfor control_point ^w", timer.control_point_id); 150 end; 151 152 end; 153 154 returner: 155 call cleaner_up; 156 return; 157 158 cleaner_up: proc; 159 160 if schedule_ptr ^= null then 161 free schedule in (sys_area); 162 end cleaner_up; 163 164 crump: proc (code, reason); 165 166 dcl code fixed bin (35), 167 reason char (*); 168 169 call com_err_ (code, "display_timers", reason); 170 goto returner; 171 end crump; 172 end display_timers; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/14/86 1030.0 display_timers.pl1 >spec>install>1218>display_timers.pl1 78 1 06/11/74 0602.3 interpret_ptr_struc.incl.pl1 >ldd>include>interpret_ptr_struc.incl.pl1 80 2 11/07/86 1550.3 timer_manager_schedule.incl.pl1 >ldd>include>timer_manager_schedule.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 70 ref 117 117 alarm 4(01) based bit(1) array level 4 packed unaligned dcl 2-13 set ref 128 138* call 4(03) based bit(1) array level 4 packed unaligned dcl 2-13 set ref 109 138* channel 6 based fixed bin(71,0) array level 3 dcl 2-13 ref 138 138 cleanup 000174 stack reference condition dcl 76 ref 87 clock builtin function dcl 70 ref 97 97 code parameter fixed bin(35,0) dcl 166 in procedure "crump" set ref 164 169* code 000100 automatic fixed bin(35,0) dcl 33 in procedure "display_timers" set ref 90* 91 91* 110* 113 113* codeptr builtin function dcl 70 ref 110 110 117 117 com_err_ 000014 constant entry external dcl 56 ref 169 compiler 64 000202 automatic char(8) level 2 dcl 1-21 set ref 138* control_point_id 16 based bit(36) array level 3 dcl 2-13 set ref 148 148* cpu 4(02) based bit(1) array level 4 packed unaligned dcl 2-13 ref 130 data_ptr 14 based pointer array level 3 dcl 2-13 set ref 138* data_ptr_provided 4(05) based bit(1) array level 4 packed unaligned dcl 2-13 set ref 107* 138* date_time_ 000016 constant entry external dcl 56 ref 97 128 date_time_string 000101 automatic char(24) unaligned dcl 33 set ref 97* 99* 128* 130* 138* dirname 000107 automatic char(168) unaligned dcl 33 set ref 110* 138* ename 000161 automatic char(32) unaligned dcl 33 set ref 110* 138* entryn 30 000202 automatic char(33) level 2 dcl 1-21 set ref 138* environmentptr builtin function dcl 70 ref 117 117 error_table_$improper_data_format 000010 external static fixed bin(35,0) dcl 50 set ref 123* 134* error_table_$unimplemented_version 000012 external static fixed bin(35,0) dcl 50 set ref 93* flags 4 based structure array level 3 dcl 2-13 get_control_point_id_ 000020 constant entry external dcl 56 ref 148 get_system_free_area_ 000022 constant entry external dcl 56 ref 82 hcs_$fs_get_path_name 000024 constant entry external dcl 56 ref 110 i 000171 automatic fixed bin(17,0) dcl 33 set ref 105* 107 109 110 110 117 117 117 117 123 128 128 130 130 138* 138 138 138 138 138 138 138 148* inhibit 4 based bit(1) array level 4 packed unaligned dcl 2-13 set ref 138* interpret_ptr_ 000026 constant entry external dcl 56 ref 117 ioa_ 000030 constant entry external dcl 56 ref 99 138 148 ioa_$rsnnl 000032 constant entry external dcl 56 ref 130 min builtin function dcl 70 ref 99 99 n_timers 1 based fixed bin(17,0) level 2 dcl 2-13 set ref 99 99 99* 105 148 160 null builtin function dcl 70 ref 42 82 85 160 offset 41 000202 automatic char(6) level 2 dcl 1-21 set ref 138* reason parameter char unaligned dcl 166 set ref 164 169* routine 10 based entry variable array level 3 dcl 2-13 ref 110 110 117 117 117 117 schedule based structure level 1 dcl 2-13 set ref 160 schedule_ptr 000274 automatic pointer dcl 2-33 set ref 85* 90* 93 93 99 99 99 105 107 107 109 110 110 117 117 117 117 123 128 128 130 130 138 138 138 138 138 138 138 147 148 148 160 160 segment 20 000202 automatic char(32) level 2 dcl 1-21 set ref 138* strbuf 000202 automatic structure level 1 dcl 1-21 set ref 117 117 struc based structure level 1 dcl 1-3 sys_area based area dcl 46 ref 160 sys_area_p 000172 automatic pointer initial dcl 42 set ref 42* 82 82* 90* 160 time 2 based fixed bin(71,0) array level 3 dcl 2-13 set ref 128* 130 timer 2 based structure array level 2 dcl 2-13 timer_manager_$get_schedule 000034 constant entry external dcl 56 ref 90 timer_manager_schedule_version_1 constant fixed bin(17,0) initial dcl 2-33 ref 93 timer_manager_schedule_version_2 constant fixed bin(17,0) initial dcl 2-33 ref 107 timer_manager_schedule_version_3 constant fixed bin(17,0) initial dcl 2-33 ref 93 147 unspec builtin function dcl 70 ref 138 138 vclock builtin function dcl 70 ref 99 version based fixed bin(17,0) level 2 dcl 2-13 ref 93 93 107 147 wakeup 4(04) based bit(1) array level 4 packed unaligned dcl 2-13 ref 123 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. N_Timers automatic fixed bin(17,0) dcl 2-33 strp automatic pointer dcl 33 sys_info$max_seg_size external static fixed bin(35,0) dcl 50 NAMES DECLARED BY EXPLICIT CONTEXT. cleaner_up 001121 constant entry internal dcl 158 ref 87 154 crump 001142 constant entry internal dcl 164 ref 91 93 113 123 134 display_timers 000215 constant entry external dcl 22 returner 001113 constant label dcl 154 ref 170 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1426 1464 1232 1436 Length 1714 1232 36 214 173 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_timers 400 external procedure is an external procedure. on unit on line 87 64 on unit cleaner_up 64 internal procedure is called by several nonquick procedures. crump internal procedure shares stack frame of external procedure display_timers. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_timers 000100 code display_timers 000101 date_time_string display_timers 000107 dirname display_timers 000161 ename display_timers 000171 i display_timers 000172 sys_area_p display_timers 000202 strbuf display_timers 000274 schedule_ptr display_timers THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry int_entry op_freen_ clock_mac vclock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ date_time_ get_control_point_id_ get_system_free_area_ hcs_$fs_get_path_name interpret_ptr_ ioa_ ioa_$rsnnl timer_manager_$get_schedule THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$improper_data_format error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000214 42 000222 82 000224 85 000235 87 000237 90 000261 91 000274 93 000304 97 000326 99 000345 105 000420 107 000431 109 000441 110 000450 113 000504 117 000514 121 000540 123 000541 128 000564 130 000614 134 000664 138 000704 147 001034 148 001037 152 001111 154 001113 156 001117 158 001120 160 001126 162 001141 164 001142 169 001153 170 001202 ----------------------------------------------------------- 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