COMPILATION LISTING OF SEGMENT process_overseer_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1040.5 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 /* format: style2 */ 11 process_overseer_: 12 procedure (a_pit_ptr, call_listen_, initial_command_line); 13 14 15 /* Completely rewritten as part of the redesign of user ring process initialization 16* and the standard command environment by V. Voydock on November 1, 1970 */ 17 18 /* Modified to be upward compatible with new pit format on January 4, 1970 by R. J. Feiertag */ 19 /* Modified to pass to start_up.ec an argument indicating whether process is interactive or absentee */ 20 /* by E. Stone May 25, 1971 */ 21 /* Modified to not put quotes around homedir in initial command line by V. Voydock 22* in June 1971 */ 23 /* Modified to have option to not restore io attachments after a "start" command, and to 24* reset the mode of user_i/o to the default after a quit or unclaimed signal 25* by V. Voydock in July 1971 */ 26 /* Modified by R. J. Feiertag on February 4, 1972 to add default handlers, saving of IO devices 27* other than syn, and checking the brief and no_startup flags. */ 28 /* Modified by V. Voydock in May 1972 to complete installation of default handlers, and 29* (for efficienty) change program to accept a pointer to the pit as an arg, and 30* to do all its work in internal procedures to minimize permanent stack storage */ 31 /* Modified by E. Stone 5/74 to convert to version 2 */ 32 /* 6/75 by S. Webber to remove code which sets up handlers for "cput" and "alrm" */ 33 /* 3/77 by D. M. Wells to also distinguish interactive and initializer processes */ 34 /* 8/77 by S. Webber to change standard_default_handler_ to default_error_handler_$wall */ 35 /* 11/78 by J. Davis to do MCR3388: handler for mme2 calls debug,. Also remove unused vars */ 36 /* 11/78 by W. Olin Sibert to add call to command_query_$set_cp_escape_enable 37* 4/79 by B. Margulies to search for start_up, flush motd, and generally clean up 38* 12/81 by E. N. Kittlitz to call sus_signal_handler_$reconnect_ec_enable. 39* 12/81 by B. Margulies for new initialize_process_ calling sequence 40* of process overseers; the call_listen_ flag replaces 41* the need to stay on the stack and call listen_. 42**/ 43 44 /* 45* 46*process_overseer_ is the standard process overseer on the system. It has four 47*responsibilities: 48*setting up an unclaimed signal handler, otherwise known as an any_other 49*handler. This handler catched otherwise uncaught conditions. The supplied 50*handler, default_error_handler_$wall prints any message provided for 51*the error condition, establishes a condition wall, and calls the listener to 52*get a new listener level. A condition wall is just another any_other handler; 53*this intercepts conditions that might otherwise be caught by other 54*handlers present on the stack. 55* 56*setting up a static handler for the mme2 condition. The mme2 condition 57*is raised when the mme2 instruction is executed. It is used by debug to 58*establish breakdots. The handler transfers control to debug when 59*the condition is signalled. 60* 61*allowing the ".." excape to command query. This is enabled by calling 62*command_query_$set_cp_excape with the appropriate bits. 63* 64*finding the start_up.ec. It looks in the homedir, projectdir, and finally 65*>sc1 to try to find it. It ends by calling listen_ with "ec start_upName" 66*as the initial command line. 67* 68*The code is written for time rather than space efficiency, so that 69*operations that might look prettier in a do loop are done with inline code. 70**/ 71 72 /* Parameters */ 73 74 dcl initial_command_line char (*) varying; 75 dcl a_pit_ptr ptr; 76 dcl call_listen_ bit (1) aligned; 77 78 79 /* Automatic */ 80 81 dcl code fixed bin (35); 82 dcl bc fixed bin (24); 83 dcl entry_type fixed bin (2); 84 dcl first_process bit (1); 85 86 /* Constants */ 87 88 dcl process_type (0:3) character (12) varying internal static options (constant) 89 initial ("initializer", "interactive", "absentee", "daemon"); 90 dcl down_sc1 char (4) internal static options (constant) init (">sc1"); 91 dcl start_up_dot_ec char (11) internal static options (constant) init ("start_up.ec"); 92 93 /* Entries */ 94 95 dcl condition_ entry (char (*), entry); 96 dcl command_query_$set_cp_escape_enable 97 entry (bit (1) aligned, bit (1) aligned); 98 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), 99 fixed bin (35)); 100 dcl sct_manager_$set entry (fixed bin, ptr, fixed bin (35)); 101 dcl process_overseer_$mme2_fault_handler_ 102 entry (ptr, char (*), ptr, ptr, bit (1)); 103 dcl sus_signal_handler_$reconnect_ec_enable 104 entry; 105 106 /* External variables */ 107 108 dcl iox_$user_output ptr ext; 109 110 /* Builtins */ 111 112 dcl (codeptr, divide, null, rtrim) 113 builtin; 114 1 1 /* BEGIN INCLUDE FILE ... pit.incl.pl1 */ 1 2 1 3 /****^ ******************************************** 1 4* * * 1 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 1 6* * * 1 7* ******************************************** */ 1 8 1 9 /* Requires user_attributes.incl.pl1 */ 1 10 /* Declaration of the Process Inititalization Table (PIT) */ 1 11 1 12 /****^ HISTORY COMMENTS: 1 13* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 1 14* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 1 15* First comment for hcom. Modified 750430 by PG to add terminal_access_class 1 16* Modified 6/20/77 by J. Stern to add term_type_name Modified Feb 1980 by M. 1 17* B. Armstrong to implement multiple rate structures. (UNCA) Modified by R. 1 18* McDonald May 1980 to include page charges, replaces cpu in iod (UNCA) 1 19* Modified by Benson I. Margulies November 1981 do declare pit_$, pit_ptr, 1 20* and unaligned character strings. Modified by E. N. Kittlitz January 1982 1 21* for user_attributes.incl.pl1 changes Modified by E. N. Kittlitz October 1 22* 1982 for request_id. Modified by BIM 1984-09-12 for auth range. The max 1 23* copies the pds, but this is the only home of the min. 1 24* 2) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 1 25* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 1 26* Add the truncate_absout and restarted bits for the 1 27* -truncate .absout SCP 6297, version 3. 1 28* 3) change(86-12-11,GDixon), approve(87-07-16,MCR7741), 1 29* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 30* Changed structure under pit.abs_attributes to use like structure in 1 31* abs_attributes.incl.pl1. This allows the same attributes to be used 1 32* in abs_message_format.incl.pl1 and user_table_entry.incl.pl1 as well as 1 33* this include file. 1 34* 4) change(88-06-03,Parisek), approve(88-06-10,MCR7920), 1 35* audit(88-06-23,Hunter), install(87-07-05,MR12.2-1053): 1 36* Remove "pitmsg" in END comment string. pitmsg.incl.pl1 is no longer a 1 37* name of pit.incl.pl1. 1 38* 5) change(88-07-11,Parisek), approve(88-07-11,MCR7849), 1 39* audit(88-07-03,Lippard), install(88-07-13,MR12.2-1047): 1 40* Removed the ringpad element and added the min_ring & max_ring elements so 1 41* users may access their lowest and/or highest possible login ring value. 1 42* SCP6367. 1 43* END HISTORY COMMENTS */ 1 44 1 45 1 46 /* format: style4 */ 1 47 declare pit_$ bit (36) aligned external static; 1 48 declare pit_ptr pointer; 1 49 1 50 dcl 1 pit aligned based (pit_ptr), 1 51 2 version fixed bin, /* indicates which version of the pit */ 1 52 2 process_type fixed bin, /* initializer, interactive, or absentee process */ 1 53 2 login_responder char (64) unal, /* path name of login responder */ 1 54 1 55 /* All of these are going to be word aligned whether or not they are declared aligned, 1 56* and unaligning them cleans up code in many places */ 1 57 1 58 2 homedir char (64) unal, /* path name of home directory */ 1 59 2 project char (28) unal, /* name of this process' project affiliation */ 1 60 2 account char (32) unal, /* name of account to which this process is charged */ 1 61 2 n_processes fixed bin, /* number of previous processes for this session */ 1 62 2 login_time fixed bin (71), /* clock time at login */ 1 63 2 proc_creation_time fixed bin (71), /* clock time at creation of this process */ 1 64 2 old_proc_cpu fixed bin (71), /* cpu time used by previous processes in this session */ 1 65 2 user_weight fixed bin, /* weight of this process */ 1 66 2 anonymous fixed bin, /* 1 if anonymous user */ 1 67 2 login_name char (28) unal, /* name of user given at login */ 1 68 2 logout_pid bit (36), /* process id of answering service */ 1 69 2 logout_channel fixed bin (71), /* channel for signalling logouts to answering service */ 1 70 2 group char (8) unal, /* party group */ 1 71 2 min_ring fixed bin, /* min ring */ 1 72 2 max_ring fixed bin, /* max ring */ 1 73 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 1 74 2 whox fixed bin, /* this process's index in whotab (or 0) */ 1 75 2 outer_module char (32) unaligned, 1 76 2 pad (2) fixed bin, 1 77 2 dont_call_init_admin bit (1) aligned, /* Call process_overseer_ directly */ 1 78 2 terminal_access_class bit (72) aligned, /* access class of user's terminal */ 1 79 2 dollar_charge float bin, /* Month-to-date expenditure */ 1 80 2 dollar_limit float bin, /* Limit stop on usage */ 1 81 2 shift_limit (0:7) float bin, /* Stops on each shift's usage */ 1 82 2 logins fixed bin, /* Number of logins this month */ 1 83 2 crashes fixed bin, /* Number of sessions crashed */ 1 84 2 interactive (0:7), /* interactive usage by shift */ 1 85 3 charge float bin, /* Total charge */ 1 86 3 xxx fixed bin, 1 87 3 cpu fixed bin (71), /* CPU usage in microseconds */ 1 88 3 core fixed bin (71), /* Memory usage in page-microseconds */ 1 89 3 connect fixed bin (71), /* Connect time in microseconds */ 1 90 3 io_ops fixed bin (71), /* Terminal I/O operations */ 1 91 2 absentee (4), /* Absentee usage by queue */ 1 92 3 charge float bin, /* Total absentee charge */ 1 93 3 jobs fixed bin, /* Number of jobs */ 1 94 3 cpu fixed bin (71), /* CPU usage in microseconds */ 1 95 3 memory fixed bin (71), /* Memory usage in mu */ 1 96 2 iod (4), /* IO Daemon usage, by queue */ 1 97 3 charge float bin, /* Total charge */ 1 98 3 pieces fixed bin, /* Number of requests */ 1 99 3 pad fixed bin (35), 1 100 3 pages fixed bin (35), /* number of pages output */ 1 101 3 lines fixed bin (71), /* Record count */ 1 102 2 devices (16) float bin, /* Usage of attached devices */ 1 103 2 time_last_reset fixed bin (71), /* time last updated the PDT */ 1 104 2 absolute_limit float bin, /* Limit, not reset monthly */ 1 105 2 absolute_spent float bin, /* Spending against this */ 1 106 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 1 107 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 1 108 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0= default rates) */ 1 109 2 pad1a fixed bin (27) unsigned unaligned, /* remainder of word */ 1 110 2 request_id fixed bin (71), /* absentee request id */ 1 111 2 authorization_range (2) bit (72) aligned, 1 112 2 pad1 (73) fixed bin, /* extra space */ 1 113 2 charge_type fixed bin, /* device charge type of console */ 1 114 2 term_type_name char (32) unal, /* terminal type name */ 1 115 2 line_type fixed bin, /* line type of user's console */ 1 116 2 tty_type fixed bin, /* old terminal type (obsolete, kept for compatibility) */ 1 117 2 service_type fixed bin, /* type of service console is performing */ 1 118 2 tty_answerback char (4) unaligned, /* original answerback of user's console */ 1 119 2 old_tty char (6), /* (obsolete) attachment name of user's console */ 1 120 2 standby fixed bin, /* 1 if standby user */ 1 121 2 login_line char (120) unal, /* line typed at login */ 1 122 2 cant_bump_until fixed bin (71), /* cannot be preempted until this time (0 for abs) */ 1 123 2 input_seg char (168) unal, /* path name of absentee input file */ 1 124 2 output_seg char (168) unal, /* path name of absentee output file */ 1 125 2 max_cpu_time fixed bin, /* max number of seconds allowed to this absentee proc */ 1 126 2 abs_queue fixed bin, /* absentee queue if absentee, else -1 */ 1 127 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 1 128 2 arg_info_ptr fixed bin (18) unsigned, /* Relative pointer to information on absentee args. */ 1 129 2 old_proc_core fixed bin (71), /* Memory usage by previous processes in this session */ 1 130 2 old_proc_io_ops fixed bin (71), /* I/O operations from previous processes in this session */ 1 131 2 tty char (32) unaligned, /* Attachment name of users channel */ 1 132 2 start_arg_info fixed bin; /* Put absentee args information here. */ 1 133 1 134 1 135 /* Structure to contain information on absentee arguments */ 1 136 dcl 1 arg_info aligned based, 1 137 2 arg_count fixed bin, /* Number of arguments for replacement in absentee segment */ 1 138 2 ln_args fixed bin, /* Length of string containing arguments. */ 1 139 2 arg_lengths (25 refer (arg_info.arg_count)) fixed bin, /* Array of argument lengths */ 1 140 2 args char (128 refer (arg_info.ln_args)) unal; 1 141 /* Args used for replacement in absentee control segment. */ 1 142 1 143 declare PIT_version_3 fixed bin int static options (constant) init (3); 1 144 1 145 /* END INCLUDE FILE ... pit.incl.pl1 */ 115 2 1 /* BEGIN INCLUDE FILE static_handlers.incl.pl1 */ 2 2 2 3 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 2 4 2 5 /* HISTORY: 2 6*Written by S. H. Webber, 06/20/75. 2 7*Modified: 2 8*12/15/83 by Benson Margulies: added undefined_pointer_sct_index and 2 9* pgt_sct_index. 2 10*06/11/84 by Lee A. Newcomb: added dm_shutdown_warning_sct_index and 2 11* dm_user_shutdown_sct_index for handling of Data Management 2 12* shutdown. 2 13*08/22/84 by R. Michael Tague: Removed dm_shutdown_warning_sct_index and 2 14* dm_user_shutdown_sct_index. Added 2 15* system_shutdown_scheduled_sct_index and 2 16* dm_shutdown_scheduled_sct_index. 2 17**/ 2 18 2 19 2 20 /****^ HISTORY COMMENTS: 2 21* 1) change(85-11-13,Herbst), approve(87-07-21,MCR7697), 2 22* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 2 23* Add system_message_sct_index. 2 24* END HISTORY COMMENTS */ 2 25 2 26 2 27 dcl ( 2 28 shutdown_sct_index init (0), 2 29 store_sct_index init (1), 2 30 mme1_sct_index init (2), 2 31 fault_tag_1_sct_index init (3), 2 32 timer_runout_sct_index init (4), 2 33 command_sct_index init (5), 2 34 derail_sct_index init (6), 2 35 lockup_sct_index init (7), 2 36 connect_sct_index init (8), 2 37 parity_sct_index init (9), 2 38 illegal_procedure_sct_index init (10), 2 39 op_not_complete_sct_index init (11), 2 40 startup_sct_index init (12), 2 41 ovrflo_sct_index init (13), 2 42 zerodivide_sct_index init (14), 2 43 execute_sct_index init (15), 2 44 seg_fault_error_sct_index init (16), 2 45 page_fault_error_sct_index init (17), 2 46 directed_fault_2_sct_index init (18), 2 47 directed_fault_3_sct_index init (19), 2 48 accessviolation_sct_index init (20), 2 49 mme2_sct_index init (21), 2 50 mme3_sct_index init (22), 2 51 mme4_sct_index init (23), 2 52 linkage_error_sct_index init (24), 2 53 fault_tag_3_sct_index init (25), 2 54 undefined_fault_sct_index init (26), 2 55 trouble_sct_index init (31), 2 56 illegal_opcode_sct_index init (32), 2 57 simfault_000000_sct_index init (33), 2 58 illegal_modifier_sct_index init (34), 2 59 illegal_ring_order_sct_index init (35), 2 60 not_in_execute_bracket_sct_index init (36), 2 61 no_execute_permission_sct_index init (37), 2 62 not_in_read_bracket_sct_index init (38), 2 63 no_read_permission_sct_index init (39), 2 64 not_in_write_bracket_sct_index init (40), 2 65 no_write_permission_sct_index init (41), 2 66 not_a_gate_sct_index init (42), 2 67 not_in_call_bracket_sct_index init (43), 2 68 outward_call_sct_index init (44), 2 69 bad_outward_call_sct_index init (45), 2 70 inward_return_sct_index init (46), 2 71 cross_ring_transfer_sct_index init (47), 2 72 ring_alarm_fault_sct_index init (48), 2 73 am_fault_sct_index init (49), 2 74 out_of_bounds_sct_index init (50), 2 75 fixedoverflow_sct_index init (51), 2 76 overflow_sct_index init (52), 2 77 underflow_sct_index init (53), 2 78 stringsize_sct_index init (54), 2 79 other_illegal_proc_sct_index init (55), 2 80 storage_sct_index init (56), 2 81 packed_pointer_fault_sct_index init (57), 2 82 lot_fault_sct_index init (58), 2 83 isot_fault_sct_index init (59), 2 84 system_packed_pointer_sct_index init (60), 2 85 quit_sct_index init (61), 2 86 alrm_sct_index init (62), 2 87 cput_sct_index init (63), 2 88 record_quota_overflow_sct_index init (64), 2 89 size_sct_index init (65), 2 90 neti_sct_index init (66), 2 91 other_command_sct_index init (67), 2 92 susp_sct_index init (68), 2 93 term_sct_index init (69), 2 94 wkp_sct_index init (70), 2 95 undefined_pointer_sct_index init (71), 2 96 pgt_sct_index init (72), 2 97 system_shutdown_scheduled_sct_index 2 98 init (73), 2 99 dm_shutdown_scheduled_sct_index init (74), 2 100 system_message_sct_index init (75) 2 101 ) fixed bin (17) int static options (constant); 2 102 2 103 /* END INCLUDE FILE static_handlers.incl.pl1 */ 116 3 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 3 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 3 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 3 8* attribute switches. 3 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 3 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 3 12* be deleted. 3 13* B) Add constants identifying attributes that can be changed by user at 3 14* login, etc. 3 15* END HISTORY COMMENTS */ 3 16 3 17 3 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 3 19 3 20 /* format: style4 */ 3 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 3 22 (2 administrator bit (1), /* 1 system administrator privileges */ 3 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 3 24 2 nobump bit (1), /* 2 user cannot be bumped */ 3 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 3 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 3 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 3 28* . of same project (distinct from "nobump") */ 3 29 2 nolist bit (1), /* 7 don't list user on "who" */ 3 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 3 31 2 multip bit (1), /* 9 user may have several processes */ 3 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 3 33 2 brief bit (1), /* 11 no login or logout message */ 3 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 3 35 2 vhomedir bit (1), /* 13 user may change homedir */ 3 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 3 37 2 sb_ok bit (1), /* 15 user may be standby */ 3 38 2 pm_ok bit (1), /* 16 user may be primary */ 3 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 3 40 2 daemon bit (1), /* 18 user may login as daemon */ 3 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 3 42 2 no_warning bit (1), /* 20 no warning message */ 3 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 3 44* . in PDT: this user has an individual load control group */ 3 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 3 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 3 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 3 48 2 pad bit (12)) unaligned; 3 49 3 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 3 51 ("none", /* 0 */ 3 52 "administrator", /* 1 */ 3 53 "primary_line", /* 2 */ 3 54 "nobump", /* 3 */ 3 55 "guaranteed_login", /* 4 */ 3 56 "anonymous", /* 5 */ 3 57 "nopreempt", /* 6 */ 3 58 "nolist", /* 7 */ 3 59 "dialok", /* 8 */ 3 60 "multip", /* 9 */ 3 61 "bumping", /* 10 */ 3 62 "brief", /* 11 */ 3 63 "vinitproc", /* 12 */ 3 64 "vhomedir", /* 13 */ 3 65 "nostartup", /* 14 */ 3 66 "no_secondary", /* 15 */ 3 67 "no_prime", /* 16 */ 3 68 "no_eo", /* 17 */ 3 69 "daemon", /* 18 */ 3 70 "", /* 19 vdim OBSOLETE */ 3 71 "no_warning", /* 20 */ 3 72 "igroup", /* 21 */ 3 73 "save_pdir", /* 22 */ 3 74 "disconnect_ok", /* 23 */ 3 75 "save_on_disconnect"); /* 24 */ 3 76 3 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 3 78 ("null", /* 0 */ 3 79 "admin", /* 1 */ 3 80 "", "", /* 2 - 3 */ 3 81 "guar", /* 4 */ 3 82 "anon", /* 5 */ 3 83 "", "", /* 6 - 7 */ 3 84 "dial", /* 8 */ 3 85 "multi_login", /* 9 */ 3 86 "preempting", /* 10 */ 3 87 "", /* 11 */ 3 88 "v_process_overseer", /* 12 */ 3 89 "v_home_dir", /* 13 */ 3 90 "no_start_up", /* 14 */ 3 91 "no_sec", /* 15 */ 3 92 "no_primary", /* 16 */ 3 93 "no_edit_only", /* 17 */ 3 94 "op_login", /* 18 */ 3 95 "", /* 19 */ 3 96 "nowarn", /* 20 */ 3 97 "", "", "", /* 21 - 23 */ 3 98 "save"); /* 24 */ 3 99 3 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 3 101 options(constant) init("000000000010000000010000000000000000"b); 3 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 3 103 3 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 3 105 options(constant) init("000000000010000000010000000000000000"b); 3 106 /* PDT value for (brief, no_warning) is default */ 3 107 3 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 3 109 options(constant) init("000100000110010000010000000000000000"b); 3 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 3 111 4 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 4 2 4 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 4 /* */ 4 5 /* This include file describes the attributes of an absentee job. It is */ 4 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 4 7 /* and PIT.incl.pl1. */ 4 8 /* */ 4 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 10 4 11 /****^ HISTORY COMMENTS: 4 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 4 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 14* Separated abs_attributes from the request structure 4 15* (abs_message_format.incl.pl1) so that the identical structure could be 4 16* used in the ute structure (user_table_entry.incl.pl1). 4 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 4 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 19* Added ABS_ATTRIBUTE_NAMES array. 4 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 4 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 4 22* Added the no_start_up flag. SCP6367 4 23* END HISTORY COMMENTS */ 4 24 4 25 dcl 1 user_abs_attributes aligned based, 4 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 4 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 4 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 4 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 4 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 4 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 4 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 4 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 4 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 4 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 4 36 2 attributes_pad bit (26) unaligned; 4 37 4 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 4 39 "restartable", 4 40 "user_deferred_until_time", 4 41 "proxy", 4 42 "set_bit_cnt", 4 43 "time_in_gmt", 4 44 "user_deferred_indefinitely", 4 45 "secondary_ok", 4 46 "truncate_absout", 4 47 "restarted", 4 48 "no_start_up"); 4 49 4 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 4 51 3 112 3 113 3 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 117 118 119 pit_ptr = a_pit_ptr; 120 initial_command_line = ""; /* turn on ".." */ 121 122 call command_query_$set_cp_escape_enable ("1"b, (""b)); 123 124 first_process = (pit_ptr -> pit.n_processes = 1); /* see if new_proc or login */ 125 126 if ^pit_ptr -> pit.at.nostartup 127 then do; /* start_up is allowed */ 128 initial_command_line = "exec_com "; 129 130 /* First try homedir */ 131 132 call hcs_$status_minf (pit.homedir, start_up_dot_ec, 1, entry_type, bc, code); 133 134 /* note that we assume any error is cause to look elsewhere to give best chance 135* of success */ 136 137 if code = 0 & entry_type = 1 138 then initial_command_line = initial_command_line || rtrim (pit_ptr -> pit.homedir); 139 140 /* now try projectdir */ 141 142 else do; 143 call hcs_$status_minf (">udd>" || rtrim (pit_ptr -> pit.project), start_up_dot_ec, 1, 144 entry_type, bc, code); 145 146 if code = 0 & entry_type = 1 147 then initial_command_line = 148 initial_command_line || ">udd>" || rtrim (pit_ptr -> pit.project); 149 else do; 150 call hcs_$status_minf (down_sc1, start_up_dot_ec, 1, entry_type, bc, code); 151 if code = 0 & entry_type = 1 152 then initial_command_line = initial_command_line || down_sc1; 153 else goto no_start_up; 154 end; 155 end; 156 157 initial_command_line = initial_command_line || ">"; 158 initial_command_line = initial_command_line || start_up_dot_ec; 159 /* the piecemeal assemble makes faster code */ 160 161 if first_process 162 then initial_command_line = initial_command_line || " login "; 163 else initial_command_line = initial_command_line || " new_proc "; 164 165 initial_command_line = initial_command_line || process_type (pit_ptr -> pit.process_type); 166 end; /* the block that checked pit.nostart*/ 167 168 no_start_up: /* set up the mme2 handler */ 169 /* this is done here rather than in initialize_process_ so that process 170* overseers for limited subsystems can leave it out */ 171 call sct_manager_$set (mme2_sct_index, codeptr (process_overseer_$mme2_fault_handler_), code); 172 call sus_signal_handler_$reconnect_ec_enable; 173 174 call_listen_ = "1"b; /* let initialize_process_ do the work */ 175 176 return; 177 178 179 mme2_fault_handler_: 180 entry (mcp, cname, cop, infop, cont); 181 dcl ( 182 mcp ptr, /* to machine conditions */ 183 cname char (*), /* name of condition being signalled */ 184 cop ptr, 185 infop ptr, 186 cont bit (1) 187 ) parameter; 188 189 dcl debug$mme2_fault entry (ptr); 190 191 call debug$mme2_fault (mcp); 192 cont = "0"b; /* do not continue searching for handlers */ 193 return; 194 end process_overseer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0935.4 process_overseer_.pl1 >special_ldd>install>MR12.2-1047>process_overseer_.pl1 115 1 07/13/88 0930.5 pit.incl.pl1 >special_ldd>install>MR12.2-1047>pit.incl.pl1 116 2 08/06/87 0913.5 static_handlers.incl.pl1 >ldd>include>static_handlers.incl.pl1 117 3 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 3-112 4 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.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_pit_ptr parameter pointer dcl 75 ref 11 119 at 110 based structure level 2 dcl 1-50 bc 000101 automatic fixed bin(24,0) dcl 82 set ref 132* 143* 150* call_listen_ parameter bit(1) dcl 76 set ref 11 174* cname parameter char packed unaligned dcl 181 ref 179 code 000100 automatic fixed bin(35,0) dcl 81 set ref 132* 137 143* 146 150* 151 168* codeptr builtin function dcl 112 ref 168 168 command_query_$set_cp_escape_enable 000010 constant entry external dcl 96 ref 122 cont parameter bit(1) packed unaligned dcl 181 set ref 179 192* cop parameter pointer dcl 181 ref 179 debug$mme2_fault 000022 constant entry external dcl 189 ref 191 down_sc1 000004 constant char(4) initial packed unaligned dcl 90 set ref 150* 151 entry_type 000102 automatic fixed bin(2,0) dcl 83 set ref 132* 137 143* 146 150* 151 first_process 000103 automatic bit(1) packed unaligned dcl 84 set ref 124* 161 hcs_$status_minf 000012 constant entry external dcl 98 ref 132 143 150 homedir 22 based char(64) level 2 packed packed unaligned dcl 1-50 set ref 132* 137 infop parameter pointer dcl 181 ref 179 initial_command_line parameter varying char dcl 74 set ref 11 120* 128* 137* 137 146* 146 151* 151 157* 157 158* 158 161* 161 163* 163 165* 165 mcp parameter pointer dcl 181 set ref 179 191* mme2_sct_index 000000 constant fixed bin(17,0) initial dcl 2-27 set ref 168* n_processes 61 based fixed bin(17,0) level 2 dcl 1-50 ref 124 nostartup 110(13) based bit(1) level 3 packed packed unaligned dcl 1-50 ref 126 pit based structure level 1 dcl 1-50 pit_ptr 000104 automatic pointer dcl 1-48 set ref 119* 124 126 132 137 143 146 165 process_overseer_$mme2_fault_handler_ 000016 constant entry external dcl 101 ref 168 168 process_type 000005 constant varying char(12) initial array dcl 88 in procedure "process_overseer_" ref 165 process_type 1 based fixed bin(17,0) level 2 in structure "pit" dcl 1-50 in procedure "process_overseer_" ref 165 project 42 based char(28) level 2 packed packed unaligned dcl 1-50 ref 143 146 rtrim builtin function dcl 112 ref 137 143 146 sct_manager_$set 000014 constant entry external dcl 100 ref 168 start_up_dot_ec 000001 constant char(11) initial packed unaligned dcl 91 set ref 132* 143* 150* 158 sus_signal_handler_$reconnect_ec_enable 000020 constant entry external dcl 103 ref 172 user_abs_attributes based structure level 1 dcl 4-25 user_attributes based structure level 1 dcl 3-21 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 4-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 3-77 PIT_version_3 internal static fixed bin(17,0) initial dcl 1-143 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 3-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 3-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 3-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 3-50 accessviolation_sct_index internal static fixed bin(17,0) initial dcl 2-27 alrm_sct_index internal static fixed bin(17,0) initial dcl 2-27 am_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 arg_info based structure level 1 dcl 1-136 bad_outward_call_sct_index internal static fixed bin(17,0) initial dcl 2-27 command_sct_index internal static fixed bin(17,0) initial dcl 2-27 condition_ 000000 constant entry external dcl 95 connect_sct_index internal static fixed bin(17,0) initial dcl 2-27 cput_sct_index internal static fixed bin(17,0) initial dcl 2-27 cross_ring_transfer_sct_index internal static fixed bin(17,0) initial dcl 2-27 derail_sct_index internal static fixed bin(17,0) initial dcl 2-27 directed_fault_2_sct_index internal static fixed bin(17,0) initial dcl 2-27 directed_fault_3_sct_index internal static fixed bin(17,0) initial dcl 2-27 divide builtin function dcl 112 dm_shutdown_scheduled_sct_index internal static fixed bin(17,0) initial dcl 2-27 execute_sct_index internal static fixed bin(17,0) initial dcl 2-27 fault_tag_1_sct_index internal static fixed bin(17,0) initial dcl 2-27 fault_tag_3_sct_index internal static fixed bin(17,0) initial dcl 2-27 fixedoverflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_modifier_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_opcode_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_procedure_sct_index internal static fixed bin(17,0) initial dcl 2-27 illegal_ring_order_sct_index internal static fixed bin(17,0) initial dcl 2-27 inward_return_sct_index internal static fixed bin(17,0) initial dcl 2-27 iox_$user_output external static pointer dcl 108 isot_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 linkage_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 lockup_sct_index internal static fixed bin(17,0) initial dcl 2-27 lot_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme1_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme3_sct_index internal static fixed bin(17,0) initial dcl 2-27 mme4_sct_index internal static fixed bin(17,0) initial dcl 2-27 neti_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_execute_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_read_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 no_write_permission_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_a_gate_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_call_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_execute_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_read_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 not_in_write_bracket_sct_index internal static fixed bin(17,0) initial dcl 2-27 null builtin function dcl 112 op_not_complete_sct_index internal static fixed bin(17,0) initial dcl 2-27 other_command_sct_index internal static fixed bin(17,0) initial dcl 2-27 other_illegal_proc_sct_index internal static fixed bin(17,0) initial dcl 2-27 out_of_bounds_sct_index internal static fixed bin(17,0) initial dcl 2-27 outward_call_sct_index internal static fixed bin(17,0) initial dcl 2-27 overflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 ovrflo_sct_index internal static fixed bin(17,0) initial dcl 2-27 packed_pointer_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 page_fault_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 parity_sct_index internal static fixed bin(17,0) initial dcl 2-27 pgt_sct_index internal static fixed bin(17,0) initial dcl 2-27 pit_$ external static bit(36) dcl 1-47 quit_sct_index internal static fixed bin(17,0) initial dcl 2-27 record_quota_overflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 ring_alarm_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 seg_fault_error_sct_index internal static fixed bin(17,0) initial dcl 2-27 shutdown_sct_index internal static fixed bin(17,0) initial dcl 2-27 simfault_000000_sct_index internal static fixed bin(17,0) initial dcl 2-27 size_sct_index internal static fixed bin(17,0) initial dcl 2-27 startup_sct_index internal static fixed bin(17,0) initial dcl 2-27 storage_sct_index internal static fixed bin(17,0) initial dcl 2-27 store_sct_index internal static fixed bin(17,0) initial dcl 2-27 stringsize_sct_index internal static fixed bin(17,0) initial dcl 2-27 susp_sct_index internal static fixed bin(17,0) initial dcl 2-27 system_message_sct_index internal static fixed bin(17,0) initial dcl 2-27 system_packed_pointer_sct_index internal static fixed bin(17,0) initial dcl 2-27 system_shutdown_scheduled_sct_index internal static fixed bin(17,0) initial dcl 2-27 term_sct_index internal static fixed bin(17,0) initial dcl 2-27 timer_runout_sct_index internal static fixed bin(17,0) initial dcl 2-27 trouble_sct_index internal static fixed bin(17,0) initial dcl 2-27 undefined_fault_sct_index internal static fixed bin(17,0) initial dcl 2-27 undefined_pointer_sct_index internal static fixed bin(17,0) initial dcl 2-27 underflow_sct_index internal static fixed bin(17,0) initial dcl 2-27 wkp_sct_index internal static fixed bin(17,0) initial dcl 2-27 zerodivide_sct_index internal static fixed bin(17,0) initial dcl 2-27 NAMES DECLARED BY EXPLICIT CONTEXT. mme2_fault_handler_ 000606 constant entry external dcl 179 no_start_up 000553 constant label dcl 168 ref 151 process_overseer_ 000060 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 764 1010 640 774 Length 1274 640 24 250 123 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME process_overseer_ 109 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME process_overseer_ 000100 code process_overseer_ 000101 bc process_overseer_ 000102 entry_type process_overseer_ 000103 first_process process_overseer_ 000104 pit_ptr process_overseer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. command_query_$set_cp_escape_enable debug$mme2_fault hcs_$status_minf process_overseer_$mme2_fault_handler_ sct_manager_$set sus_signal_handler_$reconnect_ec_enable NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000054 119 000073 120 000077 122 000101 124 000115 126 000122 128 000125 132 000137 137 000176 143 000233 146 000321 149 000401 150 000402 151 000441 157 000462 158 000473 161 000505 163 000522 165 000534 168 000553 172 000570 174 000575 176 000600 179 000601 191 000621 192 000631 193 000636 ----------------------------------------------------------- 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