COMPILATION LISTING OF SEGMENT define_work_classes Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1744.6 mst Mon 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 define_work_classes: dwc: proc; 12 13 /* Coded RE Mullen Spring 1975 for priority scheduler */ 14 /* Modified 05/01/81, W. Olin Siebrt, for version 3 MGT */ 15 16 dcl linkage_error condition; 1 1 /* BEGIN INCLUDE FILE ... work_class_info.incl.pl1 ... Mod REM 1/76 */ 1 2 1 3 1 4 /* This include file provides the structure used to call 1 5* hphcs_$define_work_classes. The version number should be set by 1 6* the caller to WCI_version_N */ 1 7 1 8 dcl wcip ptr; /* pointer on which work_class_info is based */ 1 9 dcl WCI_version_3 fixed bin int static init (3); /* current version of the structure */ 1 10 1 11 dcl 1 work_class_info aligned based (wcip), 1 12 2 version fixed bin, /* version of this structure */ 1 13 2 switches aligned, /* one word of switches */ 1 14 3 user_wc_defined (16) bit (1) unaligned, /* which user work classes are defined ("1"b = defined) */ 1 15 3 set_system_wc bit (1) unaligned, /* = "1"b if percent of system work class to be changed */ 1 16 3 set_user_wc bit (1) unaligned, /* = "1"b if definitions of user work classes to be changed */ 1 17 3 set_sked_mode bit (1) unal, /* "1"b if setting deadline | percent mode */ 1 18 3 set_max_batch_elig bit (1) unal, /* "1"b if setting max batch elig */ 1 19 3 pad bit (16) unal, /* rest of word */ 1 20 2 system_wc_min_pct fixed bin, /* new percent for system work class */ 1 21 2 user_wc_min_pct (16) fixed bin, /* percents for the normal user work classes */ 1 22 2 error_process_id bit (36) aligned, /* returned if we tried to undefine this process's work class */ 1 23 2 error_work_class fixed bin, /* the work class that had the above process in it */ 1 24 /* Version 1 limit */ 1 25 2 flags aligned, 1 26 3 deadline_mode bit (1) unal, /* = "1"b if virtual deadline for the many */ 1 27 3 realtime (16) bit (1) unaligned, /* which user work classes are realtime */ 1 28 3 governed (16) bit (1) unal, /* which work classes are governed ("1"b = defined)*/ 1 29 3 pad bit (3) unal, 1 30 2 max_batch_elig fixed bin, /* if nonzero is max batch elig */ 1 31 2 resp1 (16) fixed bin (35), /* response time after interaction(micro_sec) */ 1 32 2 quantum1 (16) fixed bin (35), /* first time slice after interaction(micro_sec) */ 1 33 2 resp2 (16) fixed bin (35), /* time between sucessive time slices(micro_sec) */ 1 34 2 quantum2 (16) fixed bin (35), /* second and following time slices(micro_sec) */ 1 35 2 wc_max_elig (0:16) fixed bin (35), /* Added if answering service ever decides to use it */ 1 36 2 io_priority (0:16) fixed bin (35), 1 37 2 pin_weight (0:16) fixed bin (35), 1 38 2 user_wc_max_pct (16) fixed bin; /* max percent of total cpu for governed WC */ 1 39 1 40 /* structure for calling hphcs_$tune_work_class */ 1 41 1 42 dcl WCTI_version_3 fixed bin int static init (3); 1 43 1 44 dcl 1 work_class_tune_info aligned based, 1 45 2 version fixed bin, 1 46 2 wc_number fixed bin (35), /* which workclass is to be changed */ 1 47 2 resp1 fixed bin (71), /* time til quantum after interact(micro_sec) */ 1 48 2 resp2 fixed bin (71), /* time between successive quanta(micro_sec) */ 1 49 2 quantum1 fixed bin (35), /* quantum after interaction(micro_sec) */ 1 50 2 quantum2 fixed bin (35), /* successive quanta(micro_sec) */ 1 51 2 maxel fixed bin (35), /* maxeligible for this workclass */ 1 52 2 set aligned, 1 53 3 resp1 bit (1) unal, 1 54 3 resp2 bit (1) unal, 1 55 3 quantum1 bit (1) unal, 1 56 3 quantum2 bit (1) unal, 1 57 3 maxel bit (1) unal, 1 58 3 purging bit (1) unal, 1 59 3 realtime bit (1) unal, 1 60 3 pin_weight bit (1) unal, 1 61 3 io_priority bit (1) unal, 1 62 3 governed bit (1) unal, 1 63 3 interactive_q bit (1) unal, 1 64 3 pad bit (25) unal, 1 65 2 pin_weight fixed bin (35), 1 66 2 max_percent fixed bin (35), 1 67 2 flags aligned, 1 68 3 io_priority bit (1) unal, 1 69 3 purging bit (1) unal, 1 70 3 realtime bit (1) unal, 1 71 3 interactive_q bit (1) unal, 1 72 3 pad bit (33) unal; 1 73 1 74 1 75 /* END INCLUDE FILE ... work_class_info.incl.pl1 */ 17 2 1 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 2 2 2 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 2 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 2 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 2 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 2 7 2 8 /* At login each user process is placed in that load control group specified in either 2 9* the project's SAT entry or the user's PDT entry. This group is remembered 2 10* in the user table entry for that process (ATE, DUTE, AUTE). 2 11* 2 12* MGT groups map each process into a set of processes called a work_class 2 13* as a function of shift and whether or not the process is absentee -- 2 14* also per group limits on the number of group members are given. 2 15* 2 16* The work_class entries in the MGT specify the configuration 2 17* of the hardcore scheduler on a per shift basis. If a work_class has the 2 18* realtime attribute, member processes will be given precisely specified 2 19* response characteristics. If running in deadline_not_percent mode on 2 20* a given shift then members of other work_classes will be given approximate 2 21* response characteristics; otherwise other work_classes will be given 2 22* percentages of whatever cpu time is unused by realtime processes. 2 23* REM */ 2 24 2 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 2 26 /* versions >= 3 contain deadline info */ 2 27 2 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 2 29 2 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 2 31* and work classes */ 2 32 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 33 2 34 /* the author structure occupies 29 words */ 2 35 2 max_size fixed bin, /* maximum size of table */ 2 36 2 current_size fixed bin, /* current number of entries */ 2 37 2 total_units fixed bin, /* total units allocated */ 2 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 2 39* (the first version of the mgt had no version number) */ 2 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 2 41 2 switches aligned, 2 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 2 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 2 44* be used by the answering service (all processes will be 2 45* put in work class 1 regardless of what the mgt says) */ 2 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 2 47* on the system tape */ 2 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 2 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 2 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 2 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 2 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 2 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 2 54 /* the above variables occupy a total of 24 words */ 2 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 2 56 2 57 2 entry (100), /* array of entries */ 2 58 3 fill (32) fixed bin; /* 32 words each */ 2 59 /* the first 16 are work classes; the rest, load control groups */ 2 60 2 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 2 62 2 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 2 64 2 group_id char (8), /* group name */ 2 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 2 66 2 n_prim fixed bin, /* current number of primary units */ 2 67 2 n_sec fixed bin, /* current number of secondary units */ 2 68 2 n_eo fixed bin, /* current number of edit-only users */ 2 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 2 70 2 minu fixed bin, /* Constant number of units in maxprim */ 2 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 2 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 2 73 2 minamax fixed bin, /* Constant part of abs max */ 2 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 2 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 2 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 2 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 2 78 /* used halfwords to avoid using up all the pad - 2 79* we might need it later */ 2 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 2 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 2 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 2 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 2 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 2 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 2 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 2 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 2 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 2 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 2 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 2 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 2 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 2 93 2 94 dcl 1 work_class based (mgtep) aligned, 2 95 2 wc_name char (8), /* overlays group.group_id, but can only be 2 96* one of the strings "1" through "16" */ 2 97 2 switches aligned, 2 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 2 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 2 100 /* ed_mgt and up_mgt_ enforce consistency between these 2 101* and the group.absentee switches */ 2 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 2 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 2 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 2 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 2 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 2 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 2 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 2 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 2 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 2 111 2 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 18 19 dcl mgtp ptr; 20 dcl 1 wci like work_class_info; 21 dcl i fixed bin; 22 dcl hphcs_$define_work_classes entry (ptr, fixed bin (35)); 23 dcl hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin (1), 24 fixed bin (2), ptr, fixed bin (35)); 25 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 26 dcl (addr, bin, null, unspec) builtin; 27 28 29 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin); 30 dcl al fixed bin; 31 dcl ap ptr; 32 dcl arg char (al) based (ap); 33 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 34 dcl percent fixed bin; 35 dcl cu_$arg_count entry (fixed bin); 36 dcl ac fixed bin; 37 dcl (ioa_, com_err_) entry options (variable); 38 dcl code fixed bin (35); 39 40 /* ---------------------------------------------------------------------- */ 41 42 43 44 unspec (wci) = "0"b; 45 46 47 48 call cu_$arg_count (ac); 49 if ac = 0 | ac > 16 then do; 50 USAGE: 51 call ioa_ ("define_work_classes: Usage:"); 52 call ioa_ ("^-define_work_classes pct_wc_1 pct_wc_2 pct_wc_3 .. pct_wc_n"); 53 call ioa_ ("^-define_work_classes -sys pct_wc_0"); 54 return; 55 end; 56 57 58 59 call cu_$arg_ptr (1, ap, al, code); 60 if arg = "-sys" | arg = "-system" then do; 61 if ac ^= 2 then go to USAGE; 62 wci.set_system_wc = "1"b; 63 i = 2; 64 call cu_$arg_ptr (i, ap, al, code); 65 if code ^= 0 then go to ERR; 66 67 percent = cv_dec_check_ (arg, code); 68 if code ^= 0 then go to PCT_ERR; 69 70 wci.system_wc_min_pct = percent; 71 end; 72 73 else do; 74 wci.set_user_wc = "1"b; /* Must be setting user work classes */ 75 76 do i = 1 to ac; 77 call cu_$arg_ptr (i, ap, al, code); 78 if code ^= 0 then go to ERR; 79 80 percent = cv_dec_check_ (arg, code); 81 if code ^= 0 then go to PCT_ERR; 82 83 if percent > 0 then do; 84 wci.user_wc_defined (i) = "1"b; 85 wci.user_wc_min_pct (i) = percent; 86 end; 87 else if percent < 0 then go to PCT_ERR; 88 /* else percent = 0 => undefined */ 89 end; /* of arg-read & set-pct loop */ 90 /* dont undefine official work classes */ 91 mgtp = null (); 92 call hcs_$initiate (">system_control_1", "mgt", "", 0b, 1b, mgtp, code); 93 if mgtp = null () then do; 94 call com_err_ (bin (0, 35), "define_work_classes", "Unable to initiate mgt."); 95 return; 96 end; 97 if mgt.version_indicator = "VERSION " then do; 98 i = MGT_version_3; /* Cause errmess if wrong vers at compile time */ 99 do i = 1 to 16; 100 if mgt.user_wc_defined (i) then 101 if ^wci.user_wc_defined (i) then do; 102 call com_err_ (bin (0, 35), "define_work_classes", "Work class ^d must exist.", i); 103 call hcs_$terminate_noname (mgtp, code); /* be a good scout */ 104 return; 105 end; 106 end; 107 end; 108 call hcs_$terminate_noname (mgtp, code); /* be a good scout */ 109 end; 110 111 on linkage_error begin; 112 call ioa_ ("define_work_classes: This command requires access to hphcs_."); 113 go to RETURN; 114 end; 115 116 call hphcs_$define_work_classes (addr (wci), code); 117 if code ^= 0 then do; 118 if wci.error_process_id ^= ""b then 119 call com_err_ (code, "define_work_classes", "err_pid = ^w, err_wc = ^d", 120 wci.error_process_id, wci.error_work_class); 121 else go to ERR; 122 end; 123 124 125 return; 126 ERR: 127 call com_err_ (code, "define_work_classes"); 128 return; 129 130 PCT_ERR: 131 /* here if error on input percent */ 132 call com_err_ (bin (0, 35), "define_work_classes", "invalid percent in arg ^d", i); 133 return; 134 135 136 RETURN: return; 137 end define_work_classes; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1526.9 define_work_classes.pl1 >dumps>old>recomp>define_work_classes.pl1 17 1 06/21/82 1202.4 work_class_info.incl.pl1 >ldd>include>work_class_info.incl.pl1 18 2 08/10/81 1843.7 mgt.incl.pl1 >ldd>include>mgt.incl.pl1 2-33 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.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. MGT_version_3 constant fixed bin(17,0) initial dcl 2-25 ref 98 ac 000347 automatic fixed bin(17,0) dcl 36 set ref 48* 49 49 61 76 addr builtin function dcl 26 ref 116 116 al 000343 automatic fixed bin(17,0) dcl 30 set ref 59* 60 60 64* 67 67 77* 80 80 ap 000344 automatic pointer dcl 31 set ref 59* 60 60 64* 67 77* 80 arg based char unaligned dcl 32 set ref 60 60 67* 80* bin builtin function dcl 26 ref 94 94 102 102 130 130 code 000350 automatic fixed bin(35,0) dcl 38 set ref 59* 64* 65 67* 68 77* 78 80* 81 92* 103* 108* 116* 117 118* 126* com_err_ 000026 constant entry external dcl 37 ref 94 102 118 126 130 cu_$arg_count 000022 constant entry external dcl 35 ref 48 cu_$arg_ptr 000020 constant entry external dcl 33 ref 59 64 77 cv_dec_check_ 000016 constant entry external dcl 29 ref 67 80 error_process_id 23 000110 automatic bit(36) level 2 dcl 20 set ref 118 118* error_work_class 24 000110 automatic fixed bin(17,0) level 2 dcl 20 set ref 118* hcs_$initiate 000012 constant entry external dcl 23 ref 92 hcs_$terminate_noname 000014 constant entry external dcl 25 ref 103 108 hphcs_$define_work_classes 000010 constant entry external dcl 22 ref 116 i 000342 automatic fixed bin(17,0) dcl 21 set ref 63* 64* 76* 77* 84 85* 98* 99* 100 100 102* 130* ioa_ 000024 constant entry external dcl 37 ref 50 52 53 112 linkage_error 000100 stack reference condition dcl 16 ref 111 mgt based structure level 1 dcl 2-30 mgtp 000106 automatic pointer dcl 19 set ref 91* 92* 93 97 100 103* 108* null builtin function dcl 26 ref 91 93 percent 000346 automatic fixed bin(17,0) dcl 34 set ref 67* 70 80* 83 85 87 set_system_wc 1(16) 000110 automatic bit(1) level 3 packed unaligned dcl 20 set ref 62* set_user_wc 1(17) 000110 automatic bit(1) level 3 packed unaligned dcl 20 set ref 74* switches 1 000110 automatic structure level 2 dcl 20 system_wc_min_pct 2 000110 automatic fixed bin(17,0) level 2 dcl 20 set ref 70* unspec builtin function dcl 26 set ref 44* user_wc_defined 1 000110 automatic bit(1) array level 3 in structure "wci" packed unaligned dcl 20 in procedure "dwc" set ref 84* 100 user_wc_defined 44 based bit(1) array level 2 in structure "mgt" packed unaligned dcl 2-30 in procedure "dwc" ref 100 user_wc_min_pct 3 000110 automatic fixed bin(17,0) array level 2 dcl 20 set ref 85* version_indicator 40 based char(8) level 2 dcl 2-30 ref 97 wci 000110 automatic structure level 1 unaligned dcl 20 set ref 44* 116 116 work_class_info based structure level 1 dcl 1-11 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. WCI_version_3 internal static fixed bin(17,0) initial dcl 1-9 WCTI_version_3 internal static fixed bin(17,0) initial dcl 1-42 group based structure level 1 dcl 2-63 mgtep automatic pointer dcl 2-61 wcip automatic pointer dcl 1-8 work_class based structure level 1 dcl 2-94 work_class_tune_info based structure level 1 dcl 1-44 NAMES DECLARED BY EXPLICIT CONTEXT. ERR 001025 constant label dcl 126 ref 65 78 118 PCT_ERR 001051 constant label dcl 130 ref 68 81 87 RETURN 001111 constant label dcl 136 ref 113 USAGE 000214 constant label dcl 50 set ref 61 define_work_classes 000172 constant entry external dcl 11 dwc 000163 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 1236 1266 1112 1246 Length 1524 1112 30 221 124 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dwc 304 external procedure is an external procedure. on unit on line 111 86 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dwc 000106 mgtp dwc 000110 wci dwc 000342 i dwc 000343 al dwc 000344 ap dwc 000346 percent dwc 000347 ac dwc 000350 code dwc THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_dec_check_ hcs_$initiate hcs_$terminate_noname hphcs_$define_work_classes ioa_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000162 44 000177 48 000202 49 000210 50 000214 52 000230 53 000244 54 000260 59 000261 60 000300 61 000312 62 000315 63 000317 64 000321 65 000336 67 000340 68 000364 70 000366 71 000370 74 000371 76 000373 77 000402 78 000417 80 000421 81 000445 83 000447 84 000451 85 000455 86 000456 87 000457 89 000460 91 000462 92 000464 93 000535 94 000541 95 000577 97 000600 98 000605 99 000607 100 000614 102 000625 103 000664 104 000675 106 000676 108 000700 111 000711 112 000725 113 000740 116 000743 117 000756 118 000760 125 001024 126 001025 128 001050 130 001051 133 001110 136 001111 ----------------------------------------------------------- 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