COMPILATION LISTING OF SEGMENT !BBBJQzmkcJnMBG Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/04/86 1550.1 mst Tue Options: table map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 4* * * 5* *********************************************************** */ 6 7 /* format: off */ 8 9 /* Control Point Manager constants and static data */ 10 11 /* HISTORY COMMENTS: 12* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 13* audit(86-10-20,Fawcett), install(86-11-03,MR12.0-1206): 14* Written to support control point management in March 1985 by G. Palter 15* based on C. Hornig's task_init_. 16* END HISTORY COMMENTS */ 17 18 /* format: style3,linecom */ 19 20 cpm_data_: 21 procedure () options (variable); 22 23 dcl 1 cds_arguments like cds_args aligned; 24 dcl code fixed binary (35); 25 26 dcl CPM_DATA_ character (32) static options (constant) initial ("cpm_data_"); 27 28 dcl com_err_ entry () options (variable); 29 dcl create_data_segment_ 30 entry (pointer, fixed binary (35)); 31 32 dcl (addr, currentsize, null, string, unspec) 33 builtin; 34 35 36 /* Constants (see cpm_internal_data.incl.pl1 for explanations) */ 37 38 dcl 1 cpm_constants aligned, 39 2 subsystem_name character (32) unaligned; 40 41 42 /* Static data (see cpm_internal_data.incl.pl1 for explanations) */ 43 44 dcl 1 cpm_static aligned, 45 2 root_control_point_data 46 like control_point_data aligned, 47 2 n_control_points 48 fixed binary, 49 2 gc_control_points 50 bit (1) aligned, 51 2 saved_cl_intermediary 52 entry (bit (36) aligned) variable, 53 2 preferred_control_point 54 pointer, 55 2 preferred_control_point_stack 56 aligned, 57 3 stack_depth fixed binary, 58 3 pad bit (36) aligned, 59 3 cpd_ptr_stack (16) pointer, 60 2 ready_queue aligned, 61 3 first pointer, 62 3 last pointer, 63 2 previous_control_point 64 pointer, 65 2 valid_control_points 66 aligned, 67 3 map (0:4095) bit (1) unaligned, 68 2 global_meters aligned, 69 3 overhead like control_point_data.meters, 70 3 last_meters like control_point_data.meters; 71 72 /* Define the constants */ 73 74 cpm_constants.subsystem_name = "Control point manager"; 75 76 77 /* Initialize the static data as best as possible */ 78 79 unspec (cpm_static) = ""b; /* cpm_initialize_ will actually set this stuff up */ 80 cpm_static.n_control_points = 1; /* ... except this value should always be valid */ 81 82 83 /* Invoke create_data_segment_ */ 84 85 cds_arguments.sections (1).p = addr (cpm_constants); 86 cds_arguments.sections (1).len = currentsize (cpm_constants); 87 cds_arguments.sections (1).struct_name = "cpm_constants"; 88 89 cds_arguments.sections (2).p = addr (cpm_static); 90 cds_arguments.sections (2).len = currentsize (cpm_static); 91 cds_arguments.sections (2).struct_name = "cpm_static"; 92 93 cds_arguments.seg_name = CPM_DATA_; 94 95 cds_arguments.num_exclude_names = 0; 96 cds_arguments.exclude_array_ptr = null (); 97 98 string (cds_arguments.switches) = ""b; 99 cds_arguments.have_text = "1"b; 100 cds_arguments.have_static = "1"b; 101 102 call create_data_segment_ (addr (cds_arguments), code); 103 if code ^= 0 104 then call com_err_ (code, CPM_DATA_); 105 106 return; 107 108 /* format: off */ 109 /* BEGIN INCLUDE FILE ... cpm_control_point_data.incl.pl1 */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 1 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 1 6* Written to support control point management in March 1985 by G. Palter. 1 7* END HISTORY COMMENTS */ 1 8 1 9 /* format: style3,linecom,idind22 */ 1 10 1 11 /* NOTE: This include file references structures contained in the following independent include files -- 1 12* cpm_ctrl_pt_meters.incl.pl1 process_usage.incl.pl1 */ 1 13 1 14 1 15 /* Definition of a single control point in the process */ 1 16 1 17 dcl 1 control_point_data aligned based (cpd_ptr), 1 18 2 id bit (36) aligned, /* unique ID of this control point */ 1 19 2 group_id bit (36) aligned, /* unique ID of containing group of control points */ 1 20 2 state fixed binary, /* scheduling state (see below) */ 1 21 2 flags, 1 22 3 preferred bit (1) unaligned, /* ON => this is the preferred task (infinite priority) */ 1 23 3 swapped_switches /* ON => this control point's switches were swapped ... */ 1 24 bit (1) unaligned, /* ... with the root's during an unclaimed signal */ 1 25 3 pad bit (34) unaligned, 1 26 2 priority fixed binary, /* scheduling priority */ 1 27 2 pad bit (36) aligned, 1 28 2 stack_ptr pointer, /* -> the stack used by this control point */ 1 29 2 last_frame_ptr pointer, /* -> last frame in said stack where control is to resume */ 1 30 2 destroy label, /* transferring to this label will kill the control point */ 1 31 2 parent pointer, /* -> defintion of this control point's parent */ 1 32 2 peers, /* linked list of this control point's peers */ 1 33 3 prev_peer pointer, 1 34 3 next_peer pointer, 1 35 2 children, /* linked list of this control point's children */ 1 36 3 first_child pointer, 1 37 3 last_child pointer, 1 38 2 ready_queue, /* ordered list of control points in the ready state */ 1 39 3 prev_ready pointer, 1 40 3 next_ready pointer, 1 41 2 user_cl_intermediary /* procedure to be called by cpm_overseer_$cl_intermediary */ 1 42 entry (bit (1) aligned), 1 43 2 comment character (64), /* a description of this control point */ 1 44 2 saved_environment, /* data saved when the control point stops running ... */ 1 45 3 ips_mask bit (36) aligned, /* ... IPS mask when it stopped running */ 1 46 3 privileges bit (36) aligned, /* ... system privileges */ 1 47 3 cl_intermediary entry (bit (36) aligned), /* ... CL intermediary */ 1 48 3 io_switches, /* ... standard I/O switches */ 1 49 4 user_io pointer, 1 50 4 user_input pointer, 1 51 4 user_output pointer, 1 52 4 error_output pointer, 1 53 2 meters like control_point_meters; /* per control point metering data */ 1 54 1 55 dcl cpd_ptr pointer; 1 56 1 57 1 58 /* Scheduler states for a control point */ 1 59 1 60 dcl ( 1 61 CPM_DESTROYED initial (0), /* waiting to be deleted */ 1 62 CPM_STOPPED initial (1), /* can not run without an explicit cpm_$start */ 1 63 CPM_BLOCKED initial (2), /* blocked on an IPC event channel */ 1 64 CPM_READY initial (3) /* eligible to run on next call to cpm_$scheduler */ 1 65 ) fixed binary static options (constant); 1 66 1 67 /* END INCLUDE FILE ... cpm_control_point_data.incl.pl1 */ 109 2 1 /* BEGIN INCLUDE FILE ... cpm_ctrl_pt_meters.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), 2 5* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 2 6* Written to support control point management in March 1985 by G. Palter. 2 7* END HISTORY COMMENTS */ 2 8 2 9 /* format: style3,linecom */ 2 10 2 11 /* NOTE: The include file references structures contained in the following independent include file -- 2 12* process_usage.incl.pl1 */ 2 13 2 14 2 15 /* Definition of control point metering data -- A set of metering data is kept independently for each control point which 2 16* provides usage statistics for that control point. In addition, another set of metering data is kept to record the 2 17* overhead involved in the control point scheduler */ 2 18 2 19 dcl 1 control_point_meters 2 20 aligned based (cpm_ptr), 2 21 2 n_schedules fixed binary, /* # of times the control point has been run or 2 22* # of times the scheduler has been invoked */ 2 23 2 pad fixed binary, 2 24 2 real_time fixed binary (71), /* ... real time used by the control point or scheduler */ 2 25 2 usage like process_usage; /* ... CPU, memory, etc. */ 2 26 2 27 dcl cpm_ptr pointer; 2 28 2 29 2 30 /* Definition of the structure used in calls to cpm_$get_control_point_meters and cpm_$get_scheduler_meters */ 2 31 2 32 dcl 1 control_point_meters_argument 2 33 aligned based (cpma_ptr), 2 34 2 version character (8) unaligned, 2 35 2 meters like control_point_meters; 2 36 2 37 dcl CONTROL_POINT_METERS_ARGUMENT_VERSION_1 2 38 character (8) static options (constant) initial ("cpma_001"); 2 39 2 40 dcl MAX_NUMBER_OF_METERS 2 41 fixed bin internal static options (constant) init (9); 2 42 2 43 dcl cpma_ptr pointer; 2 44 2 45 /* END INCLUDE FILE ... cpm_ctrl_pt_meters.incl.pl1 */ 110 3 1 /* BEGIN INCLUDE FILE process_usage.incl.pl1 WRITTEN 09/17/76 BY Richard Bratt */ 3 2 3 3 declare 3 4 process_usage_pointer pointer, 3 5 1 process_usage based (process_usage_pointer), 3 6 2 number_wanted fixed bin, /* max number of entries to be returned */ 3 7 2 number_can_return fixed bin, /* the number of entries currently returnable */ 3 8 2 cpu_time fixed bin (71), 3 9 2 paging_measure fixed bin (71), 3 10 2 page_faults fixed bin (34), 3 11 2 pd_faults fixed bin (34), 3 12 2 virtual_cpu_time fixed bin (71), 3 13 2 segment_faults fixed bin (34), 3 14 2 bounds_faults fixed bin (34), 3 15 2 vtoc_reads fixed bin (34), 3 16 2 vtoc_writes fixed bin (34); 3 17 3 18 /* END INCLUDE FILE process_usage.incl.pl1 */ 111 112 /* BEGIN INCLUDE FILE cds_args.incl.pl1 */ 4 2 4 3 dcl 1 cds_args based aligned, 4 4 2 sections (2), 4 5 3 p ptr, /* pointer to data for text/static section */ 4 6 3 len fixed bin (18), /* size of text/static section */ 4 7 3 struct_name char (32), /* name of declared structure for this section */ 4 8 2 seg_name char (32), /* name to create segment by */ 4 9 2 num_exclude_names fixed bin, /* number of names in exclude array */ 4 10 2 exclude_array_ptr ptr, /* pointer to array of exclude names */ 4 11 2 switches, /* control switches */ 4 12 3 defs_in_link bit (1) unal, /* says put defs in linkage */ 4 13 3 separate_static bit (1) unal, /* says separate static section is wanted */ 4 14 3 have_text bit (1) unal, /* ON if text section given */ 4 15 3 have_static bit (1) unal, /* ON if static section given */ 4 16 3 pad bit (32) unal; 4 17 4 18 dcl exclude_names (1) char (32) based; /* pointed to be cds_args.exclude_array_ptr */ 4 19 4 20 /* END INCLUDE FILE cds_args.incl.pl1 */ 112 113 /* format: on */ 114 115 end cpm_data_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/86 1031.4 !BBBJQzmkcJnMBG.pl1 >special_ldd>install>MR12.0-1206>cpm_data_.cds 109 1 11/03/86 1112.9 cpm_control_point_data.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_control_point_data.incl.pl1 110 2 11/03/86 1114.7 cpm_ctrl_pt_meters.incl.pl1 >special_ldd>install>MR12.0-1206>cpm_ctrl_pt_meters.incl.pl1 111 3 10/26/76 1333.6 process_usage.incl.pl1 >ldd>include>process_usage.incl.pl1 112 4 04/01/76 2209.5 cds_args.incl.pl1 >ldd>include>cds_args.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. CPM_DATA_ 000000 constant char(32) initial unaligned dcl 26 set ref 93 103* addr builtin function dcl 32 ref 85 89 102 102 cds_args based structure level 1 dcl 4-3 cds_arguments 000100 automatic structure level 1 dcl 23 set ref 102 102 code 000145 automatic fixed bin(35,0) dcl 24 set ref 102* 103 103* com_err_ 000012 constant entry external dcl 28 ref 103 control_point_data based structure level 1 dcl 1-17 control_point_meters based structure level 1 dcl 2-19 cpd_ptr 000604 automatic pointer dcl 1-55 ref 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 1-17 cpm_constants 000146 automatic structure level 1 dcl 38 set ref 85 86 cpm_ptr 000606 automatic pointer dcl 2-27 ref 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 2-19 cpm_static 000156 automatic structure level 1 dcl 44 set ref 79* 89 90 create_data_segment_ 000014 constant entry external dcl 29 ref 102 currentsize builtin function dcl 32 ref 86 90 exclude_array_ptr 42 000100 automatic pointer level 2 dcl 23 set ref 96* have_static 44(03) 000100 automatic bit(1) level 3 packed unaligned dcl 23 set ref 100* have_text 44(02) 000100 automatic bit(1) level 3 packed unaligned dcl 23 set ref 99* len 2 000100 automatic fixed bin(18,0) array level 3 dcl 23 set ref 86* 90* meters 76 000156 automatic structure level 3 in structure "cpm_static" dcl 44 in procedure "cpm_data_" meters 76 based structure level 2 in structure "control_point_data" dcl 1-17 in procedure "cpm_data_" n_control_points 120 000156 automatic fixed bin(17,0) level 2 dcl 44 set ref 80* null builtin function dcl 32 ref 96 num_exclude_names 40 000100 automatic fixed bin(17,0) level 2 dcl 23 set ref 95* p 000100 automatic pointer array level 3 dcl 23 set ref 85* 89* process_usage based structure level 1 unaligned dcl 3-3 process_usage_pointer 000612 automatic pointer dcl 3-3 ref 3-3 3-3 3-3 3-3 3-3 3-3 3-3 3-3 3-3 3-3 3-3 3-3 sections 000100 automatic structure array level 2 dcl 23 seg_name 30 000100 automatic char(32) level 2 dcl 23 set ref 93* string builtin function dcl 32 set ref 98* struct_name 3 000100 automatic char(32) array level 3 dcl 23 set ref 87* 91* subsystem_name 000146 automatic char(32) level 2 packed unaligned dcl 38 set ref 74* switches 44 000100 automatic structure level 2 dcl 23 set ref 98* unspec builtin function dcl 32 set ref 79* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CONTROL_POINT_METERS_ARGUMENT_VERSION_1 constant char(8) initial unaligned dcl 2-37 CPM_BLOCKED constant fixed bin(17,0) initial dcl 1-60 CPM_DESTROYED constant fixed bin(17,0) initial dcl 1-60 CPM_READY constant fixed bin(17,0) initial dcl 1-60 CPM_STOPPED constant fixed bin(17,0) initial dcl 1-60 MAX_NUMBER_OF_METERS constant fixed bin(17,0) initial dcl 2-40 control_point_meters_argument based structure level 1 dcl 2-32 cpma_ptr 000610 automatic pointer dcl 2-43 exclude_names based char(32) array unaligned dcl 4-18 NAME DECLARED BY EXPLICIT CONTEXT. cpm_data_ 000032 constant entry external dcl 20 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 204 222 132 214 Length 4022 132 16 3564 52 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cpm_data_ 414 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cpm_data_ 000100 cds_arguments cpm_data_ 000145 code cpm_data_ 000146 cpm_constants cpm_data_ 000156 cpm_static cpm_data_ 000604 cpd_ptr cpm_data_ 000606 cpm_ptr cpm_data_ 000610 cpma_ptr cpm_data_ 000612 process_usage_pointer cpm_data_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ create_data_segment_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000031 74 000037 79 000042 80 000045 85 000047 86 000051 87 000053 89 000056 90 000060 91 000062 93 000065 95 000070 96 000071 98 000073 99 000074 100 000076 102 000100 103 000112 106 000131 Object Segment >special_ldd>install>MR12.0-1206>cpm_data_ Created on 11/04/86 1550.3 mst Tue by GJohnson.SysMaint.a using create_data_segment_, Version II of Tuesday, November 04, 1986 Object Text Defs Link Symb Static Start 0 0 10 164 622 174 Length 1107 10 154 436 251 426 13 Definitions: segname: cpm_data_ link|131 gc_control_points link|372 global_meters link|130 n_control_points link|136 preferred_control_point link|140 preferred_control_point_stack link|206 previous_control_point link|202 ready_queue link|10 root_control_point_data link|132 saved_cl_intermediary text|0 subsystem_name symb|0 symbol_table link|210 valid_control_points No Links. ----------------------------------------------------------- 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