COMPILATION LISTING OF SEGMENT task_overseer_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/30/82 1412.8 mst Tue 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 task_overseer_: 12 procedure; 13 14 dcl iox_$user_input ptr ext static; 15 dcl iox_$user_output ptr ext static; 16 dcl iox_$error_output ptr ext static; 17 18 dcl continue_to_signal_ entry (fixed bin (35)); 19 dcl cu_$arg_list_ptr entry returns (ptr); 20 dcl cu_$cp entry (ptr, fixed bin (21), fixed bin (35)); 21 dcl cu_$generate_call entry (entry, ptr); 22 dcl cu_$set_cl_intermediary entry (entry); 23 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 24 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 25 dcl iox_$move_attach entry (ptr, ptr, fixed bin (35)); 26 dcl signal_ entry; 27 28 dcl based_ptr ptr based; 29 30 dcl code fixed bin (35); 31 dcl overseer bit (1) aligned; 32 33 dcl (length, pointer, stackbaseptr) builtin; 34 35 dcl (any_other, finish, task_debug_) condition; 36 37 overseer = "1"b; 38 39 on condition (any_other) system; 40 on condition (finish), condition (task_debug_) 41 begin; 42 dcl code fixed bin (35); 43 dcl 1 ci aligned like condition_info; 44 dcl command char (256) aligned; 45 46 call find_condition_info_ (null (), addr (ci), code); 47 if code = 0 then do; 48 if ci.info_ptr ^= null () then do; 49 if /* case */ ci.condition_name = "finish" then do; 50 if ci.info_ptr -> finish_info.type = "task" then goto abort_task; 51 end; 52 else if ci.condition_name = "task_debug_" then do; 53 command = ci.info_ptr -> task_debug_info.info_string; 54 call cu_$cp (addr (command), length (ci.info_ptr -> task_debug_info.info_string), code) 55 ; 56 goto done_cond; 57 end; 58 end; 59 end; 60 call continue_to_signal_ (code); 61 done_cond: 62 end; 63 64 goto common; 65 66 task_signaller_: 67 entry options (variable); 68 69 overseer = "0"b; 70 71 common: 72 task_data_ptr = pointer (stackbaseptr (), TASK_DP) -> based_ptr; 73 74 call cu_$set_cl_intermediary (task_data.cl_intermediary); 75 call iox_$move_attach (task_data.ui_iocb, iox_$user_input, code); 76 call iox_$move_attach (task_data.uo_iocb, iox_$user_output, code); 77 call iox_$move_attach (task_data.eo_iocb, iox_$error_output, code); 78 call hcs_$set_ips_mask (task_data.ips_mask, (""b)); 79 80 if overseer 81 then call task_data.overseer (task_data.data_ptr); 82 else call cu_$generate_call (signal_, cu_$arg_list_ptr ()); 83 84 abort_task: 85 return; 86 1 1 /* *********************************************************** 1 2* * * 1 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 1 4* * * 1 5* *********************************************************** */ 1 6 /* Begin include file task_data.incl.pl1 */ 1 7 1 8 declare task_data_ptr pointer automatic; 1 9 declare 1 task_data aligned based (task_data_ptr), /* information defining a task */ 1 10 2 sb pointer, /* stack base pointer */ 1 11 2 abort variable label, /* to abort task */ 1 12 2 (elder_sister, younger_sister) pointer, /* threaded list of all tasks */ 1 13 2 (youngest_daughter, mother) pointer, /* our inferiors */ 1 14 2 (ready_next, ready_last) pointer, /* list of ready tasks */ 1 15 2 task_id bit (36) aligned, 1 16 2 state fixed bin, 1 17 2 create_data like task_create_data, 1 18 2 meters, 1 19 3 (tcpu, vcpu) fixed bin (71), 1 20 3 mem fixed bin (71), 1 21 3 pf fixed bin (35), 1 22 2 (ui_iocb, uo_iocb, eo_iocb) ptr, 1 23 2 task_area_ptr ptr, 1 24 2 cl_intermediary entry, 1 25 2 ips_mask bit (36); 1 26 1 27 declare ( 1 28 TASK_DP init (56), 1 29 STOPPED init (1), 1 30 BLOCKED init (2), 1 31 READY init (3), 1 32 DEAD init (4) 1 33 ) static options (constant); 1 34 1 35 /* End include file task_data.incl.pl1 */ 87 2 1 /* *********************************************************** 2 2* * * 2 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 2 4* * * 2 5* *********************************************************** */ 2 6 /* Begin include file task_create_data.incl.pl1 */ 2 7 2 8 declare task_create_data_version_3 fixed bin static init (3) options (constant); 2 9 declare task_create_data_ptr pointer automatic; 2 10 declare 1 task_create_data aligned based (task_create_data_ptr), 2 11 2 version fixed bin, /* this is version 3 */ 2 12 2 overseer variable entry (pointer), 2 13 2 data_ptr pointer, /* pointer to be passed to overseer */ 2 14 2 vcpu_limit fixed bin (71), /* CPU limit if any */ 2 15 2 priority fixed bin, /* for task scheduler */ 2 16 2 comment char (64), /* for humans */ 2 17 /* end of version 2 structure */ 2 18 2 flags, 2 19 3 top_level bit (1) unaligned, /* this is an independent task */ 2 20 3 shared_static bit (1) unaligned; /* shares static with creator */ 2 21 2 22 /* End include file task_create_data.incl.pl1 */ 88 3 1 /* *********************************************************** 3 2* * * 3 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 3 4* * * 3 5* *********************************************************** */ 3 6 /* Begin include file task_condition_info.incl.pl1 */ 3 7 3 8 dcl 1 finish_info aligned based, 3 9 2 header like condition_info_header, 3 10 2 type char (8); 3 11 3 12 dcl 1 task_debug_info aligned based, 3 13 2 header like condition_info_header; 3 14 4 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 4 2 /* format: style2 */ 4 3 4 4 declare condition_info_header_ptr 4 5 pointer; 4 6 declare 1 condition_info_header 4 7 aligned based (condition_info_header_ptr), 4 8 2 length fixed bin, /* length in words of this structure */ 4 9 2 version fixed bin, /* version number of this structure */ 4 10 2 action_flags aligned, /* tell handler how to proceed */ 4 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 4 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 4 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 4 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 4 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 4 16 3 pad bit (32) unaligned, 4 17 2 info_string char (256) varying, /* may contain printable message */ 4 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 4 19 4 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 3 15 3 16 3 17 /* End include file task_condition_info.incl.pl1 */ 89 5 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 5 2 5 3 /* Structure for find_condition_info_. 5 4* 5 5* Written 1-Mar-79 by M. N. Davidoff. 5 6**/ 5 7 5 8 /* automatic */ 5 9 5 10 declare condition_info_ptr pointer; 5 11 5 12 /* based */ 5 13 5 14 declare 1 condition_info aligned based (condition_info_ptr), 5 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 5 16 2 version fixed binary, /* Must be 1 */ 5 17 2 condition_name char (32) varying, /* name of condition */ 5 18 2 info_ptr pointer, /* pointer to the condition data structure */ 5 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 5 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 5 21 2 flags unaligned, 5 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 5 23 3 pad1 bit (35), 5 24 2 pad2 bit (36), 5 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 5 26 2 pad3 (4) bit (36); 5 27 5 28 /* internal static */ 5 29 5 30 declare condition_info_version_1 5 31 fixed binary internal static options (constant) initial (1); 5 32 5 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 90 91 92 end task_overseer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/30/82 1254.0 task_overseer_.pl1 >spec>on>11/30/82>task_overseer_.pl1 87 1 06/16/82 1317.7 task_data.incl.pl1 >ldd>include>task_data.incl.pl1 88 2 06/16/82 1317.8 task_create_data.incl.pl1 >ldd>include>task_create_data.incl.pl1 89 3 06/16/82 1317.7 task_condition_info.incl.pl1 >ldd>include>task_condition_info.incl.pl1 3-15 4 03/24/82 1347.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 90 5 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_info.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. TASK_DP constant fixed bin(17,0) initial dcl 1-27 ref 71 any_other 000102 stack reference condition dcl 35 ref 39 based_ptr based pointer dcl 28 ref 71 ci 000102 automatic structure level 1 dcl 43 set ref 46 46 cl_intermediary 100 based entry variable level 2 dcl 1-9 set ref 74* code 000100 automatic fixed bin(35,0) dcl 30 in procedure "task_overseer_" set ref 75* 76* 77* code 000100 automatic fixed bin(35,0) dcl 42 in on unit on line 40 set ref 46* 47 54* 60* command 000134 automatic char(256) dcl 44 set ref 53* 54 54 condition_info based structure level 1 dcl 5-14 condition_info_header based structure level 1 dcl 4-6 condition_name 3 000102 automatic varying char(32) level 2 dcl 43 set ref 49 52 continue_to_signal_ 000016 constant entry external dcl 18 ref 60 create_data 24 based structure level 2 dcl 1-9 cu_$arg_list_ptr 000020 constant entry external dcl 19 ref 82 82 cu_$cp 000022 constant entry external dcl 20 ref 54 cu_$generate_call 000024 constant entry external dcl 21 ref 82 cu_$set_cl_intermediary 000026 constant entry external dcl 22 ref 74 data_ptr 32 based pointer level 3 dcl 1-9 set ref 80* eo_iocb 74 based pointer level 2 dcl 1-9 set ref 77* find_condition_info_ 000030 constant entry external dcl 23 ref 46 finish 000110 stack reference condition dcl 35 ref 40 finish_info based structure level 1 dcl 3-8 hcs_$set_ips_mask 000032 constant entry external dcl 24 ref 78 header based structure level 2 dcl 3-12 info_ptr 14 000102 automatic pointer level 2 dcl 43 set ref 48 50 53 54 54 info_string 3 based varying char(256) level 3 dcl 3-12 ref 53 54 54 iox_$error_output 000014 external static pointer dcl 16 set ref 77* iox_$move_attach 000034 constant entry external dcl 25 ref 75 76 77 iox_$user_input 000010 external static pointer dcl 14 set ref 75* iox_$user_output 000012 external static pointer dcl 15 set ref 76* ips_mask 104 based bit(36) level 2 dcl 1-9 set ref 78* length builtin function dcl 33 ref 54 54 overseer 000101 automatic bit(1) dcl 31 in procedure "task_overseer_" set ref 37* 69* 80 overseer 26 based entry variable level 3 in structure "task_data" dcl 1-9 in procedure "task_overseer_" ref 80 pointer builtin function dcl 33 ref 71 signal_ 000036 constant entry external dcl 26 ref 82 82 stackbaseptr builtin function dcl 33 ref 71 task_create_data based structure level 1 dcl 2-10 task_data based structure level 1 dcl 1-9 task_data_ptr 000124 automatic pointer dcl 1-8 set ref 71* 74 75 76 77 78 80 80 task_debug_ 000116 stack reference condition dcl 35 ref 40 task_debug_info based structure level 1 dcl 3-12 type 105 based char(8) level 2 dcl 3-8 ref 50 ui_iocb 70 based pointer level 2 dcl 1-9 set ref 75* uo_iocb 72 based pointer level 2 dcl 1-9 set ref 76* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BLOCKED internal static fixed bin(17,0) initial dcl 1-27 DEAD internal static fixed bin(17,0) initial dcl 1-27 READY internal static fixed bin(17,0) initial dcl 1-27 STOPPED internal static fixed bin(17,0) initial dcl 1-27 condition_info_header_ptr automatic pointer dcl 4-4 condition_info_ptr automatic pointer dcl 5-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 5-30 task_create_data_ptr automatic pointer dcl 2-9 task_create_data_version_3 internal static fixed bin(17,0) initial dcl 2-8 NAMES DECLARED BY EXPLICIT CONTEXT. abort_task 000333 constant label dcl 84 ref 50 common 000201 constant label dcl 71 ref 64 done_cond 000163 constant label dcl 61 ref 56 task_overseer_ 000015 constant entry external dcl 11 task_signaller_ 000173 constant entry external dcl 66 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 46 46 54 54 null builtin function ref 46 46 48 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 534 574 336 544 Length 1072 336 40 261 176 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME task_overseer_ 101 external procedure is an external procedure. on unit on line 39 64 on unit on unit on line 40 169 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME on unit on line 40 000100 code on unit on line 40 000102 ci on unit on line 40 000134 command on unit on line 40 task_overseer_ 000100 code task_overseer_ 000101 overseer task_overseer_ 000124 task_data_ptr task_overseer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_var call_ext_out return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ cu_$arg_list_ptr cu_$cp cu_$generate_call cu_$set_cl_intermediary find_condition_info_ hcs_$set_ips_mask iox_$move_attach signal_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$error_output iox_$user_input iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000014 37 000022 39 000024 40 000041 46 000055 47 000073 48 000075 49 000101 50 000106 51 000121 52 000122 53 000127 54 000134 56 000153 60 000154 61 000163 40 000164 64 000171 66 000172 69 000200 71 000201 74 000206 75 000215 76 000231 77 000245 78 000261 80 000275 82 000307 84 000333 ----------------------------------------------------------- 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