COMPILATION LISTING OF SEGMENT mu_check_conflict Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/23/86 1012.4 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 mu_check_conflict: check_conflict: procedure (set_or_del_scope, input_fil_list_ptr, 19 permit_requests_ptr, prevent_requests_ptr, conflict_detail_ptr, conflict_sw); 20 21 /* 22* DESCRIPTION: 23* This procedure checks to see if there is a conflict between the scope 24* being requested for a given file and the scope currently in force for 25* each user of the file 26* 27* It also checks to see if the scope to be deleted is a proper subset 28* of the scope which the user currently has in force 29* 30* --------------------------------------------------------------------------- 31* 32* HISTORY: 33* 34* Originally coded by Oris Friesen in July 1977 35* Modified 24 July 1980 by M Pierret to make permit/prevent ops be 2 bits 36* called bits instead of one for mod,del,store.. Also to do indexing on bits 37* directly instead of whole structure, since garbage in fillers were causing 38* incorrect results. 39* 40* 80-12-10 Jim Gray : completely rewritten to 41* 1) change from r-u to r-s-m-d type scope modes 42* 2) provide a common include file for passing 43* scope mode request parameter information 44* 3) add a parameter containg the details of 45* exactly what conflict resulted in setting the switch. 46* 4) document the module more completely 47* 48**/ 49 50 /* PARAMETERS: 51* 52* set_or_del_scope - - (input) bit (1), indicates whether this is a call 53* from set_scope(ON), or delete_scope(OFF), so that the type 54* of conflict to be checked for can be known. 55* 56* input_fil_list_ptr - - (input) ptr, points to the particular entry 57* in the databsae control segment about which conflict is to be checked. 58* This file/relation entry contains what scope other users already 59* have had set. 60* 61* permit_requests_ptr - - (input) ptr, points to an overlay of the fixed bin 62* encoding of the requested permit ops given to set/dl_scope. 63* 64* prevent_requests_ptr - - (input) ptr, same as above, but for prevent ops. 65* 66* conflict_detail_ptr - - (input) ptr, pointer to a structure which will be filled 67* in giving the details of what the actual conflict was, that may have caused 68* setting of the conflcit_sw. 69* 70* conflict_sw - - (output) bit(1), this will be ON if a scope conflict 71* has been detected, else OFF. 72* 73**/ 74 75 /* set up local variables and initialize */ 76 77 fl_ptr = input_fil_list_ptr; /* use local variable */ 78 unspec (conflict_detail) = "0"b; /* initialize */ 79 80 if set_or_del_scope = SET then do; 81 82 /* this is a set_scope request, thus we must make sure that the requested 83* permit modes are not being prevented by some other user. 84* Also, the requested prevent modes must not already be in effect by 85* some other user on the relation/file under consideration */ 86 87 conflict_detail.permits.read_attr = (permit_requests.read_attr & fil_list.prevents.read_attr); 88 conflict_detail.permits.modify_attr = (permit_requests.modify_attr & fil_list.prevents.modify_attr); 89 conflict_detail.permits.append_tuple = (permit_requests.append_tuple & fil_list.prevents.append_tuple); 90 conflict_detail.permits.delete_tuple = (permit_requests.delete_tuple & fil_list.prevents.delete_tuple); 91 92 conflict_detail.prevents.read_attr = (prevent_requests.read_attr & fil_list.permits.read_attr); 93 conflict_detail.prevents.modify_attr = (prevent_requests.modify_attr & fil_list.permits.modify_attr); 94 conflict_detail.prevents.append_tuple = (prevent_requests.append_tuple & fil_list.permits.append_tuple); 95 conflict_detail.prevents.delete_tuple = (prevent_requests.delete_tuple & fil_list.permits.delete_tuple); 96 97 end; 98 99 else do; 100 101 /* the requested operation is a del_scope, 102* thus we must check that the given permit and prevent modes 103* given do in fact exist as already set on this file/relation */ 104 105 conflict_detail.permits.read_attr = (permit_requests.read_attr & ^(fil_list.permits.read_attr)); 106 conflict_detail.permits.modify_attr = (permit_requests.modify_attr & ^(fil_list.permits.modify_attr)); 107 conflict_detail.permits.append_tuple = (permit_requests.append_tuple & ^(fil_list.permits.append_tuple)); 108 conflict_detail.permits.delete_tuple = (permit_requests.delete_tuple & ^(fil_list.permits.delete_tuple)); 109 110 conflict_detail.prevents.read_attr = (prevent_requests.read_attr & ^(fil_list.prevents.read_attr)); 111 conflict_detail.prevents.modify_attr = (prevent_requests.modify_attr & ^(fil_list.prevents.modify_attr)); 112 conflict_detail.prevents.append_tuple = (prevent_requests.append_tuple & ^(fil_list.prevents.append_tuple)); 113 conflict_detail.prevents.delete_tuple = (prevent_requests.delete_tuple & ^(fil_list.prevents.delete_tuple)); 114 115 116 end; 117 118 /* now we can set the conflict switch, since all the details are known */ 119 120 conflict_sw = ^((string (conflict_detail.permits) = "0"b) & (string (conflict_detail.prevents) = "0"b)); 121 122 return; 123 124 125 dcl input_fil_list_ptr ptr parm; 126 127 dcl null builtin; 128 dcl string builtin; 129 dcl unspec builtin; 130 131 dcl conflict_sw bit (1) unal; /* ON => a conflict in scope requested has been detected */ 132 dcl set_or_del_scope bit (1) unal; /* ON => set_scope request; OFF => dl_scope request */ 133 1 1 /* BEGIN mdbm_users.incl.pl1 -- odf, 08/10/78 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-10-03,Dupuis), approve(86-10-21,MCR7562), audit(86-10-22,Blair), 1 7* install(86-10-23,MR12.0-1199): 1 8* Deleted the DEFAULT_WAIT variable. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 /* HISTORY: 1 13* Written by Oris Friesen August 10, 1978. 1 14* Modified by M. Pierret 13 December 1979, changing wakeup messages. 1 15* Modified by M. Pierret 13 April 1980 (Jason's birthday) to remove priority and wakeup structures 1 16* Modified by M. Pierret 13 August 1980 to group like fields (ids, offsets...) 1 17* Modified by Jim Gray - - 80-11-19, to add fields to fil_list to allow for complete 1 18* r-u-s-m-d scope codes, instead of just r-u. 1 19* 1 20* 80-12-10 Jim Gray : change names of fil_list prevent/permit modes 1 21* store to append_tuple, retreive to read_attr, delete to delete_tuple, modify to modify_attr, 1 22* and pad to mbz for consistency with MRDS access acl modes. 1 23* 1 24* 80-12-12 Jim Gray : Changed DEFAULT_WAIT declaration to fixed bin 35 from 71, 1 25* so that the wait_seconds fb35 overlay would not get 0 and thus never wait. 1 26* This is currently only used in mrds_dsl_set_fscope. 1 27* 1 28* 82-09-22 Davids: addede the opening_id element to the fil_list structure. 1 29* Put it at the end to make the new structure compatable with the old so 1 30* that testing could take place without having to recompile all the modules 1 31* that use the structure. 1 32* 1 33* 82-10-14 Davids: removed the opening_id element and added the rmri_ptr 1 34* element. This was done because set_fscope must be able to open the 1 35* relation if its not yet opened. 1 36* --------------------------------------------------------------------------- 1 37* DESCRIPTION: 1 38* 1 39* The dbc contains the following information in its static area. 1 40* One group of information is composed of structures (user_list) 1 41* threaded 3 ways to form 3 lists. They are the list of active 1 42* scope users, of open users, and of users waiting to set scope. 1 43* The beginning of each of these lists is pointed to by fields 1 44* in the dbc proper. All of these lists share the user_list structures, 1 45* and are completely contained within these structures, i.e., there 1 46* is no extraneous information in some knook in Scottsdale. 1 47* 1 48* Associated with each user_list structure is a linked list of 1 49* fil_list structures. The list is of all of the files (relations) 1 50* included in the user's scope request. Unlike the user_list 1 51* structures which were shared by several different lists, the structures 1 52* in a user's file list are exclusively hers. The entries contain 1 53* information about the scope request and the file name, and have 1 54* no real connection with the actual files in the resultant model. 1 55* --------------------------------------------------------------------------- */ 1 56 1 57 dcl 1 user_list based (ul_ptr), 1 58 2 ids, 1 59 3 group_id char (32), /* group identifier of this user */ 1 60 3 process_id bit (36), /* process identifier of this user */ 1 61 3 db_lock_id bit (36) aligned, /* the unique lock id for this process -- 1 62* used to identify dead processes */ 1 63 3 ev_chn_id fixed bin (71), /* event channel id for this process */ 1 64 3 rdbi_bits bit (72), /* bit string of rdbi_ptr 1 65* to allow concurrent openings by same process */ 1 66 2 flags, 1 67 3 open_mode fixed bin unal, /* the mode of the db. opening -- NORMAL or QUIESCE */ 1 68 3 passive_sw bit (1) unal, /* OFF => -permit update on some file */ 1 69 3 active_sw bit (1) unal, /* ON => user has a scope set */ 1 70 3 waiting_sw bit (1) unal, /* ON => user is waiting for scope to be set */ 1 71 3 priority_high bit (1) unal, /* obsolete */ 1 72 3 event_signal_sw bit (1) unal, /* ON => user has been signalled thru event wait channel */ 1 73 3 dead_proc bit (1) unal, /* ON => this user's process has died and is inactive */ 1 74 3 dead_proc_conflict 1 75 bit (1) unal, /* this user's scope request conflicts with a dead process */ 1 76 3 queue_activ bit (1) unal, /* activated from the waiting queue */ 1 77 3 pad bit (28), /* reserved for future use */ 1 78 2 allowance_count fixed bin, /* obsolete */ 1 79 2 bypass_count fixed bin, /* obsolete */ 1 80 2 offsets, 1 81 3 fil_list_ofs bit (18) unal, /* bit offset to list of files in this user's scope request */ 1 82 3 next_active_ofs bit (18) unal, /* bit offset to next user in this list of active scope users */ 1 83 3 next_waiting_ofs bit (18) unal, /* bit offset to next user in user list waiting to set scope */ 1 84 3 next_open_ofs bit (18) unal, /* bit offset to next user who has data base open in any mode */ 1 85 2 num_filns fixed bin, /* number of files potentially accessible by this user */ 1 86 2 file (num_filns refer (user_list.num_filns)) char (30); 1 87 /* names of files accessible by this user */ 1 88 1 89 dcl 1 fil_list based (fl_ptr), /* of files which a given user has specified for a scope */ 1 90 2 name char (30), /* data model name of the file specified in scope request */ 1 91 2 permits, /* permit codes for scope setting or deleting */ 1 92 3 mbz1 bit (15) unal, 1 93 3 modify_attr bit (1) unal, 1 94 3 delete_tuple bit (1) unal, 1 95 3 append_tuple bit (1) unal, 1 96 3 update bit (1) unal, 1 97 3 read_attr bit (1) unal, 1 98 2 prevents, /* prevent codes for scope setting or deleting */ 1 99 3 update bit (1) unal, 1 100 3 read_attr bit (1) unal, 1 101 3 append_tuple bit (1) unal, 1 102 3 delete_tuple bit (1) unal, 1 103 3 modify_attr bit (1) unal, 1 104 3 mbz2 bit (29) unal, 1 105 2 next_ofs bit (18) unal, /* bit offset to next file entry for this user's scope request */ 1 106 2 rmri_ptr ptr; /* pointer to the relation's rm_rel_info str */ 1 107 /* needed so that the relation can be opened if need be */ 1 108 1 109 dcl ul_ptr ptr init (null ()); 1 110 dcl fl_ptr ptr init (null ()); 1 111 1 112 dcl num_filns fixed bin; /* number of files accessible by a given user */ 1 113 1 114 1 115 dcl WAIT init (0) fixed bin int static options (constant); 1 116 /* the number of later user requests for which a user 1 117* request will wait before it must be honored */ 1 118 dcl NULL_OFS bit (18) init ("111111111111111111"b) unal int static options (constant); 1 119 dcl DQ_OPEN bit (1) unal init ("1"b) int static options (constant); 1 120 /* dequeue from open list */ 1 121 dcl NO_DQ_OPEN bit (1) init ("0"b) int static options (constant); 1 122 /* do not dequeue from open list */ 1 123 dcl CHAR_Q_F char (8) init ("que_free") int static options (constant); 1 124 dcl QUE_FREE fixed bin (71); 1 125 dcl CHAR_ALARM char (8) init ("alarm___") int static options (constant); 1 126 /* wakeup up signal for time-out */ 1 127 dcl ALARM fixed bin (71); 1 128 dcl FIRST_QUEUE bit (1) init ("1"b) int static options (constant); 1 129 /* this is the 1st time process will asleep */ 1 130 dcl QUEUE_AGAIN bit (1) init ("0"b) int static options (constant); 1 131 /* being queued for the 2nd, 3rd ... time */ 1 132 dcl SET bit (1) unal init ("1"b) int static options (constant); 1 133 /* check to see which scopes can be set */ 1 134 dcl DEL bit (1) unal init ("0"b) int static options (constant); 1 135 /* check to see which scopes can be deleted */ 1 136 dcl ALIVE init ("1"b) bit (1) unal int static options (constant); 1 137 /* process is alive */ 1 138 dcl DEAD init ("0"b) bit (1) unal int static options (constant); 1 139 /* process is dead */ 1 140 dcl Q_PRM init (3) fixed bin (35) int static options (constant); 1 141 /* permit retrieve, update */ 1 142 dcl Q_PRV init (3) fixed bin (35) int static options (constant); 1 143 /* prevent retrieve, update */ 1 144 dcl Q_PRM_BITS bit (2) unal init ("11"b) int static options (constant); 1 145 /* permit retrieve, update */ 1 146 dcl Q_PRV_BITS bit (2) unal init ("11"b) int static options (constant); 1 147 /* prevent retrieve, update */ 1 148 dcl REL_SEC bit (2) init ("11"b) int static options (constant); 1 149 /* measure wait time in relative seconds */ 1 150 dcl FREE_FIL_LIST bit (1) unal init ("1"b) int static options (constant); 1 151 /* free this user's file lists */ 1 152 dcl SAVE_FIL_LIST bit (1) unal init ("0"b) int static options (constant); 1 153 /* do not free this user's file lists */ 1 154 1 155 /* END mdbm_users.incl.pl1 */ 1 156 134 2 1 /* BEGIN INCLUDE FILE mdbm_scope_requests.incl.pl1 - - Jim Gray 80-12-10 */ 2 2 2 3 /* this include file contains overlays for the fixed bin (17) 2 4* permit/prevent scope mode encoding that set/dl_fscope and all lower 2 5* routines use in interface communications. 2 6* Note that is fixed bin(17) aligned, as recieved from 2 7* mrds_dsl_set_scope, thus the overlay is for a full 36 bit word. 2 8* The scope modes are encoded as a sum of the individual permissions, 2 9* with 1 => read_attr, 2 => append_tuple, 4 => delete_tuple, 8 => modify_attr, 2 10* thus individual bits in the fixed bin word can be used for each mode 2 11* These were known as r-s-m-d modes by old mrds users. */ 2 12 2 13 declare 1 common based, /* common layout of bits for scope modes */ 2 14 2 mbz1 bit (32) unal, /* unused upper part of word */ 2 15 2 modify_attr bit (1) unal, /* mode sum has an 8 */ 2 16 2 delete_tuple bit (1) unal, /* mode sum has a 4 */ 2 17 2 append_tuple bit (1) unal, /* mode sum has a 2 */ 2 18 2 read_attr bit (1) unal ; /* mode sum has a 1 */ 2 19 2 20 declare 1 permit_requests like common based (permit_requests_ptr) ; /* permit modes in scope call */ 2 21 2 22 declare 1 prevent_requests like common based (prevent_requests_ptr) ; /* prevent modes in scope call */ 2 23 2 24 declare (permit_requests_ptr, prevent_requests_ptr) ptr ; 2 25 2 26 /* the following structure is used to describe in detail, 2 27* what scope conflict existed between a users requested 2 28* permit/prevent modes in a set/dl_scope call and the 2 29* actual usage of a file/relation currently with active scope in the database 2 30* Note that for delete_scope, the conflict check is that the requested deletion 2 31* be a subset of the users currently set scope. 2 32* For set_scope, the conflict check is that a permit does not conflict with 2 33* another users prevent, and that the requested prevent does not 2 34* conflict with an existing other users permit already granted. */ 2 35 2 36 declare 1 conflict_detail based (conflict_detail_ptr), 2 37 2 permits like common, /* conflicts in permit part of requests */ 2 38 2 prevents like common ; /* conflicts in prevent part of requests */ 2 39 2 40 declare conflict_detail_ptr ptr ; 2 41 2 42 /* END INCLUDE FILE mdbm_scope_requests.incl.pl1 */ 135 136 137 end mu_check_conflict; 138 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/23/86 1009.3 mu_check_conflict.pl1 >spec>install>1199>mu_check_conflict.pl1 134 1 10/23/86 1006.0 mdbm_users.incl.pl1 >spec>install>1199>mdbm_users.incl.pl1 135 2 10/14/83 1608.7 mdbm_scope_requests.incl.pl1 >ldd>include>mdbm_scope_requests.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. SET 000437 constant bit(1) initial unaligned dcl 1-132 ref 80 append_tuple 0(34) based bit(1) level 2 in structure "prevent_requests" packed unaligned dcl 2-22 in procedure "check_conflict" ref 94 112 append_tuple 0(34) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 89* 107* append_tuple 7(35) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 94 107 append_tuple 0(34) based bit(1) level 2 in structure "permit_requests" packed unaligned dcl 2-20 in procedure "check_conflict" ref 89 107 append_tuple 10(04) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 89 112 append_tuple 1(34) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 94* 112* common based structure level 1 packed unaligned dcl 2-13 conflict_detail based structure level 1 packed unaligned dcl 2-36 set ref 78* conflict_detail_ptr parameter pointer dcl 2-40 ref 18 18 78 87 88 89 90 92 93 94 95 105 106 107 108 110 111 112 113 120 120 conflict_sw parameter bit(1) unaligned dcl 131 set ref 18 18 120* delete_tuple 0(33) based bit(1) level 2 in structure "permit_requests" packed unaligned dcl 2-20 in procedure "check_conflict" ref 90 108 delete_tuple 1(33) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 95* 113* delete_tuple 0(33) based bit(1) level 2 in structure "prevent_requests" packed unaligned dcl 2-22 in procedure "check_conflict" ref 95 113 delete_tuple 10(05) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 90 113 delete_tuple 0(33) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 90* 108* delete_tuple 7(34) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 95 108 fil_list based structure level 1 unaligned dcl 1-89 fl_ptr 000102 automatic pointer initial dcl 1-110 set ref 77* 87 88 89 90 92 93 94 95 105 106 107 108 110 111 112 113 1-110* input_fil_list_ptr parameter pointer dcl 125 ref 18 18 77 modify_attr 0(32) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 88* 106* modify_attr 7(33) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 93 106 modify_attr 10(06) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 88 111 modify_attr 0(32) based bit(1) level 2 in structure "prevent_requests" packed unaligned dcl 2-22 in procedure "check_conflict" ref 93 111 modify_attr 0(32) based bit(1) level 2 in structure "permit_requests" packed unaligned dcl 2-20 in procedure "check_conflict" ref 88 106 modify_attr 1(32) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 93* 111* null builtin function dcl 127 ref 1-109 1-110 permit_requests based structure level 1 packed unaligned dcl 2-20 permit_requests_ptr parameter pointer dcl 2-24 ref 18 18 87 88 89 90 105 106 107 108 permits based structure level 2 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 120 permits 7(18) based structure level 2 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" prevent_requests based structure level 1 packed unaligned dcl 2-22 prevent_requests_ptr parameter pointer dcl 2-24 ref 18 18 92 93 94 95 110 111 112 113 prevents 1 based structure level 2 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 120 prevents 10(02) based structure level 2 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" read_attr 0(35) based bit(1) level 2 in structure "permit_requests" packed unaligned dcl 2-20 in procedure "check_conflict" ref 87 105 read_attr 10(03) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 87 110 read_attr 0(35) based bit(1) level 2 in structure "prevent_requests" packed unaligned dcl 2-22 in procedure "check_conflict" ref 92 110 read_attr 0(35) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 87* 105* read_attr 1(35) based bit(1) level 3 in structure "conflict_detail" packed unaligned dcl 2-36 in procedure "check_conflict" set ref 92* 110* read_attr 10(01) based bit(1) level 3 in structure "fil_list" packed unaligned dcl 1-89 in procedure "check_conflict" ref 92 105 set_or_del_scope parameter bit(1) unaligned dcl 132 ref 18 18 80 string builtin function dcl 128 ref 120 120 ul_ptr 000100 automatic pointer initial dcl 1-109 set ref 1-109* unspec builtin function dcl 129 set ref 78* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALARM automatic fixed bin(71,0) dcl 1-127 ALIVE internal static bit(1) initial unaligned dcl 1-136 CHAR_ALARM internal static char(8) initial unaligned dcl 1-125 CHAR_Q_F internal static char(8) initial unaligned dcl 1-123 DEAD internal static bit(1) initial unaligned dcl 1-138 DEL internal static bit(1) initial unaligned dcl 1-134 DQ_OPEN internal static bit(1) initial unaligned dcl 1-119 FIRST_QUEUE internal static bit(1) initial unaligned dcl 1-128 FREE_FIL_LIST internal static bit(1) initial unaligned dcl 1-150 NO_DQ_OPEN internal static bit(1) initial unaligned dcl 1-121 NULL_OFS internal static bit(18) initial unaligned dcl 1-118 QUEUE_AGAIN internal static bit(1) initial unaligned dcl 1-130 QUE_FREE automatic fixed bin(71,0) dcl 1-124 Q_PRM internal static fixed bin(35,0) initial dcl 1-140 Q_PRM_BITS internal static bit(2) initial unaligned dcl 1-144 Q_PRV internal static fixed bin(35,0) initial dcl 1-142 Q_PRV_BITS internal static bit(2) initial unaligned dcl 1-146 REL_SEC internal static bit(2) initial unaligned dcl 1-148 SAVE_FIL_LIST internal static bit(1) initial unaligned dcl 1-152 WAIT internal static fixed bin(17,0) initial dcl 1-115 num_filns automatic fixed bin(17,0) dcl 1-112 user_list based structure level 1 unaligned dcl 1-57 NAMES DECLARED BY EXPLICIT CONTEXT. check_conflict 000022 constant entry external dcl 18 mu_check_conflict 000033 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 476 506 440 506 Length 710 440 10 165 35 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME check_conflict 70 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_conflict 000100 ul_ptr check_conflict 000102 fl_ptr check_conflict THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as return_mac ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 109 000007 1 110 000011 18 000014 77 000041 78 000045 80 000052 87 000057 88 000076 89 000113 90 000130 92 000145 93 000164 94 000201 95 000215 97 000232 105 000233 106 000253 107 000271 108 000306 110 000324 111 000344 112 000362 113 000400 120 000416 122 000436 ----------------------------------------------------------- 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