COMPILATION LISTING OF SEGMENT mu_check_scope 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.5 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_scope: check_scope: procedure (dbc_p, fle_ptr, this_ul_ptr, permit_requests_ptr, prevent_requests_ptr, 19 conflict_detail_ptr, conflict_sw, conflict_ul_ptr); 20 21 /* this procedure checks to see if a requested scope can be granted to the user */ 22 23 /* HISTORY: 24* 25* Originally written by O Friesen in July 1977 26* Modified by M. Pierret 17 April 1980 to remove priority queue checking. 27* 28* 80-12-10 Jim Gray : changed to use of mdbm_scope_requests include file 29* to supprot change from r-u to r-s-m-d type scope modes. 30* Also added conflict_detail_ptr parameter. 31**/ 32 33 /* first check the active scopes in force for this file */ 34 35 dbc_ptr = dbc_p; /* use local variable */ 36 num_filns = 0; 37 conflict_ul_ptr = null; 38 ul_ptr = this_ul_ptr; 39 this_user_id = user_list.process_id; 40 41 ul_ptr = convert (dbc_ptr, dbc.active_users_ofs); 42 43 conflict_sw = "0"b; 44 45 46 do while (ul_ptr ^= null); 47 48 call check_files_scopes; 49 /* conflict_sw and conflict_ul_ptr will be set by 50* check_files_scopes if necessary */ 51 52 ul_ptr = convert (dbc_ptr, user_list.next_active_ofs); /* look at next active user */ 53 54 end; 55 56 /* must also examine all waiting processes whose event_signal_sw is ON, and 57* * processes who are high priority waiters. To avoid deadlocks, if the process 58* * requesting scope is a high priority user, then high priority waiters are not 59* * checked */ 60 61 if ^conflict_sw then do; 62 ul_ptr = convert (dbc_ptr, dbc.waiting_users_ofs); 63 64 do while (ul_ptr ^= null); 65 if user_list.event_signal_sw 66 then call check_files_scopes; 67 else if ^(this_ul_ptr -> user_list.priority_high) 68 & user_list.priority_high 69 then call check_files_scopes; 70 else ; 71 72 ul_ptr = convert (dbc_ptr, user_list.next_waiting_ofs); 73 end; 74 75 end; 76 77 return; 78 79 check_files_scopes: proc; 80 81 fl_ptr = convert (dbc_ptr, user_list.fil_list_ofs); /* look at each list of files for each active user */ 82 do while (fl_ptr ^= null & ^conflict_sw); 83 84 if fil_name = fil_list.name 85 then if ul_ptr ^= this_ul_ptr 86 then call mu_check_conflict (SET, fl_ptr, permit_requests_ptr, prevent_requests_ptr, 87 conflict_detail_ptr, conflict_sw); 88 if conflict_sw then conflict_ul_ptr = ul_ptr; 89 fl_ptr = convert (dbc_ptr, fil_list.next_ofs); /* look at next file in this user's list */ 90 end; 91 92 end check_files_scopes; 93 94 convert: proc (a_ptr, ofs) returns (ptr); 95 96 /* this procedure function converts an offset from "0"b to null 97* or from the offset value to a pointer value within the segment denoted by a_ptr 98**/ 99 100 dcl result ptr; /* the reultant pointer value */ 101 dcl a_ptr ptr; /* ptr to the segment to which the offset refers */ 102 dcl ofs bit (18) unal; /* the bit offset */ 103 104 105 if ofs ^= NULL_OFS 106 then result = ptr (a_ptr, ofs); 107 else result = null; 108 109 return (result); 110 111 end convert; 112 113 114 dcl dbc_p ptr parm; 115 116 117 dcl fil_name char (30) based (fle_ptr); /* name of file whose scope is being checked */ 118 119 dcl fle_ptr ptr; /* ptr to name of file whose scope is being checked */ 120 dcl conflict_ul_ptr ptr; /* pointer to a user causing a conflict with a scope request */ 121 dcl this_ul_ptr ptr; /* parameter ptr to user_list */ 122 123 dcl this_user_id bit (36); /* process id of this user */ 124 125 dcl conflict_sw bit (1) unal; /* ON => a scope conflict */ 126 127 dcl addr builtin; 128 dcl fixed builtin; 129 dcl null builtin; 130 dcl ptr builtin; 131 dcl rel builtin; 132 133 dcl mu_check_conflict entry (bit (1), ptr, ptr, ptr, ptr, bit (1)); 134 135 136 137 dcl sys_info$max_seg_size fixed bin ext; 138 1 1 /* BEGIN INCLUDE FILE mdbm_dbc.incl.pl1 08/23/78 odf */ 1 2 1 3 /* HISTORY: 1 4* 1 5* Modified by odf for new version data bases in August 1978 1 6* Modified by Al Kepner, March 8, 1979 to add new flags for quiescing 1 7* Modified by M. Pierret, 8 April 1980 to look prettier, add pads 1 8* Modified by M. Pierret, 22 August 1980, grouping like fields (flags, offsets..) 1 9* 1 10* 80-11-19 Jim Gray : modified to change version number from 4 to 5 to allow 1 11* automatic update of dbc structures to new r-s-m-d-u scope codes from r-u. 1 12**/ 1 13 1 14 dcl 1 dbc based (dbc_ptr), /* data base control segment description */ 1 15 2 proper, 1 16 3 version fixed bin, /* version number of this structure */ 1 17 3 dtd_mrds fixed bin (71), /* date time dumped by mrds utility */ 1 18 3 flags, 1 19 4 trouble_switch bit (1) unal, /* ON => ungraceful termination of a user process */ 1 20 4 dead_proc_flag bit (1) unal, /* ON => dead process has access to part of data base */ 1 21 4 quiesce_sw bit (1) unal, /* ON => db is quiesced for a administrative user */ 1 22 4 quiesce_db bit (1) unal, /* ON => The entire data base is being quiesced. */ 1 23 4 quiesce_files bit (1) unal, /* ON => A selected set of files is being quiesced. */ 1 24 4 pad bit (31) unal, /* reserved for future use */ 1 25 3 quiesce_lock bit (36) aligned, /* lock word for quiescing data base */ 1 26 3 wakeup_waiters fixed bin, /* nbr users who have been sent a wakeup signal but have not yet 1 27* received it */ 1 28 3 user_counts, 1 29 4 open_users fixed bin, /* nbr of users with data base open in any mode */ 1 30 4 active_users fixed bin, /* nbr of users currently having a scope set */ 1 31 4 waiting_users fixed bin, /* nbr of users waiting to set scope */ 1 32 3 open_lock bit (36) aligned, /* lock word for opening data base */ 1 33 3 scope_lock bit (36) aligned, /* lock word for setting and deleting scope */ 1 34 3 sa_size fixed bin (35), /* size in words of static area */ 1 35 3 pad2 bit (144), 1 36 3 offsets, 1 37 4 open_users_ofs bit (18) unal, /* bit offset to list of users with data base currently open */ 1 38 4 active_users_ofs bit (18) unal, /* bit offset to list of active users in shared mode */ 1 39 4 waiting_users_ofs bit (18) unal, /* bit offset to list of waiting users in shared mode */ 1 40 4 obsolete bit (36) unal, /* obsolete */ 1 41 3 pad3 bit (144), 1 42 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (dbc.static_area))) + 1); 1 43 1 44 dcl dbc_ptr ptr init (null ()); 1 45 1 46 dcl VERSION_NBR fixed bin init (5) static internal options (constant); 1 47 1 48 1 49 /* END mdbm_dcb.incl.pl1 */ 1 50 1 51 139 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 */ 140 141 3 1 /* BEGIN mdbm_users.incl.pl1 -- odf, 08/10/78 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(86-10-03,Dupuis), approve(86-10-21,MCR7562), audit(86-10-22,Blair), 3 7* install(86-10-23,MR12.0-1199): 3 8* Deleted the DEFAULT_WAIT variable. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 /* HISTORY: 3 13* Written by Oris Friesen August 10, 1978. 3 14* Modified by M. Pierret 13 December 1979, changing wakeup messages. 3 15* Modified by M. Pierret 13 April 1980 (Jason's birthday) to remove priority and wakeup structures 3 16* Modified by M. Pierret 13 August 1980 to group like fields (ids, offsets...) 3 17* Modified by Jim Gray - - 80-11-19, to add fields to fil_list to allow for complete 3 18* r-u-s-m-d scope codes, instead of just r-u. 3 19* 3 20* 80-12-10 Jim Gray : change names of fil_list prevent/permit modes 3 21* store to append_tuple, retreive to read_attr, delete to delete_tuple, modify to modify_attr, 3 22* and pad to mbz for consistency with MRDS access acl modes. 3 23* 3 24* 80-12-12 Jim Gray : Changed DEFAULT_WAIT declaration to fixed bin 35 from 71, 3 25* so that the wait_seconds fb35 overlay would not get 0 and thus never wait. 3 26* This is currently only used in mrds_dsl_set_fscope. 3 27* 3 28* 82-09-22 Davids: addede the opening_id element to the fil_list structure. 3 29* Put it at the end to make the new structure compatable with the old so 3 30* that testing could take place without having to recompile all the modules 3 31* that use the structure. 3 32* 3 33* 82-10-14 Davids: removed the opening_id element and added the rmri_ptr 3 34* element. This was done because set_fscope must be able to open the 3 35* relation if its not yet opened. 3 36* --------------------------------------------------------------------------- 3 37* DESCRIPTION: 3 38* 3 39* The dbc contains the following information in its static area. 3 40* One group of information is composed of structures (user_list) 3 41* threaded 3 ways to form 3 lists. They are the list of active 3 42* scope users, of open users, and of users waiting to set scope. 3 43* The beginning of each of these lists is pointed to by fields 3 44* in the dbc proper. All of these lists share the user_list structures, 3 45* and are completely contained within these structures, i.e., there 3 46* is no extraneous information in some knook in Scottsdale. 3 47* 3 48* Associated with each user_list structure is a linked list of 3 49* fil_list structures. The list is of all of the files (relations) 3 50* included in the user's scope request. Unlike the user_list 3 51* structures which were shared by several different lists, the structures 3 52* in a user's file list are exclusively hers. The entries contain 3 53* information about the scope request and the file name, and have 3 54* no real connection with the actual files in the resultant model. 3 55* --------------------------------------------------------------------------- */ 3 56 3 57 dcl 1 user_list based (ul_ptr), 3 58 2 ids, 3 59 3 group_id char (32), /* group identifier of this user */ 3 60 3 process_id bit (36), /* process identifier of this user */ 3 61 3 db_lock_id bit (36) aligned, /* the unique lock id for this process -- 3 62* used to identify dead processes */ 3 63 3 ev_chn_id fixed bin (71), /* event channel id for this process */ 3 64 3 rdbi_bits bit (72), /* bit string of rdbi_ptr 3 65* to allow concurrent openings by same process */ 3 66 2 flags, 3 67 3 open_mode fixed bin unal, /* the mode of the db. opening -- NORMAL or QUIESCE */ 3 68 3 passive_sw bit (1) unal, /* OFF => -permit update on some file */ 3 69 3 active_sw bit (1) unal, /* ON => user has a scope set */ 3 70 3 waiting_sw bit (1) unal, /* ON => user is waiting for scope to be set */ 3 71 3 priority_high bit (1) unal, /* obsolete */ 3 72 3 event_signal_sw bit (1) unal, /* ON => user has been signalled thru event wait channel */ 3 73 3 dead_proc bit (1) unal, /* ON => this user's process has died and is inactive */ 3 74 3 dead_proc_conflict 3 75 bit (1) unal, /* this user's scope request conflicts with a dead process */ 3 76 3 queue_activ bit (1) unal, /* activated from the waiting queue */ 3 77 3 pad bit (28), /* reserved for future use */ 3 78 2 allowance_count fixed bin, /* obsolete */ 3 79 2 bypass_count fixed bin, /* obsolete */ 3 80 2 offsets, 3 81 3 fil_list_ofs bit (18) unal, /* bit offset to list of files in this user's scope request */ 3 82 3 next_active_ofs bit (18) unal, /* bit offset to next user in this list of active scope users */ 3 83 3 next_waiting_ofs bit (18) unal, /* bit offset to next user in user list waiting to set scope */ 3 84 3 next_open_ofs bit (18) unal, /* bit offset to next user who has data base open in any mode */ 3 85 2 num_filns fixed bin, /* number of files potentially accessible by this user */ 3 86 2 file (num_filns refer (user_list.num_filns)) char (30); 3 87 /* names of files accessible by this user */ 3 88 3 89 dcl 1 fil_list based (fl_ptr), /* of files which a given user has specified for a scope */ 3 90 2 name char (30), /* data model name of the file specified in scope request */ 3 91 2 permits, /* permit codes for scope setting or deleting */ 3 92 3 mbz1 bit (15) unal, 3 93 3 modify_attr bit (1) unal, 3 94 3 delete_tuple bit (1) unal, 3 95 3 append_tuple bit (1) unal, 3 96 3 update bit (1) unal, 3 97 3 read_attr bit (1) unal, 3 98 2 prevents, /* prevent codes for scope setting or deleting */ 3 99 3 update bit (1) unal, 3 100 3 read_attr bit (1) unal, 3 101 3 append_tuple bit (1) unal, 3 102 3 delete_tuple bit (1) unal, 3 103 3 modify_attr bit (1) unal, 3 104 3 mbz2 bit (29) unal, 3 105 2 next_ofs bit (18) unal, /* bit offset to next file entry for this user's scope request */ 3 106 2 rmri_ptr ptr; /* pointer to the relation's rm_rel_info str */ 3 107 /* needed so that the relation can be opened if need be */ 3 108 3 109 dcl ul_ptr ptr init (null ()); 3 110 dcl fl_ptr ptr init (null ()); 3 111 3 112 dcl num_filns fixed bin; /* number of files accessible by a given user */ 3 113 3 114 3 115 dcl WAIT init (0) fixed bin int static options (constant); 3 116 /* the number of later user requests for which a user 3 117* request will wait before it must be honored */ 3 118 dcl NULL_OFS bit (18) init ("111111111111111111"b) unal int static options (constant); 3 119 dcl DQ_OPEN bit (1) unal init ("1"b) int static options (constant); 3 120 /* dequeue from open list */ 3 121 dcl NO_DQ_OPEN bit (1) init ("0"b) int static options (constant); 3 122 /* do not dequeue from open list */ 3 123 dcl CHAR_Q_F char (8) init ("que_free") int static options (constant); 3 124 dcl QUE_FREE fixed bin (71); 3 125 dcl CHAR_ALARM char (8) init ("alarm___") int static options (constant); 3 126 /* wakeup up signal for time-out */ 3 127 dcl ALARM fixed bin (71); 3 128 dcl FIRST_QUEUE bit (1) init ("1"b) int static options (constant); 3 129 /* this is the 1st time process will asleep */ 3 130 dcl QUEUE_AGAIN bit (1) init ("0"b) int static options (constant); 3 131 /* being queued for the 2nd, 3rd ... time */ 3 132 dcl SET bit (1) unal init ("1"b) int static options (constant); 3 133 /* check to see which scopes can be set */ 3 134 dcl DEL bit (1) unal init ("0"b) int static options (constant); 3 135 /* check to see which scopes can be deleted */ 3 136 dcl ALIVE init ("1"b) bit (1) unal int static options (constant); 3 137 /* process is alive */ 3 138 dcl DEAD init ("0"b) bit (1) unal int static options (constant); 3 139 /* process is dead */ 3 140 dcl Q_PRM init (3) fixed bin (35) int static options (constant); 3 141 /* permit retrieve, update */ 3 142 dcl Q_PRV init (3) fixed bin (35) int static options (constant); 3 143 /* prevent retrieve, update */ 3 144 dcl Q_PRM_BITS bit (2) unal init ("11"b) int static options (constant); 3 145 /* permit retrieve, update */ 3 146 dcl Q_PRV_BITS bit (2) unal init ("11"b) int static options (constant); 3 147 /* prevent retrieve, update */ 3 148 dcl REL_SEC bit (2) init ("11"b) int static options (constant); 3 149 /* measure wait time in relative seconds */ 3 150 dcl FREE_FIL_LIST bit (1) unal init ("1"b) int static options (constant); 3 151 /* free this user's file lists */ 3 152 dcl SAVE_FIL_LIST bit (1) unal init ("0"b) int static options (constant); 3 153 /* do not free this user's file lists */ 3 154 3 155 /* END mdbm_users.incl.pl1 */ 3 156 142 143 144 end mu_check_scope; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/23/86 1009.3 mu_check_scope.pl1 >spec>install>1199>mu_check_scope.pl1 139 1 10/14/83 1609.0 mdbm_dbc.incl.pl1 >ldd>include>mdbm_dbc.incl.pl1 140 2 10/14/83 1608.7 mdbm_scope_requests.incl.pl1 >ldd>include>mdbm_scope_requests.incl.pl1 142 3 10/23/86 1006.0 mdbm_users.incl.pl1 >spec>install>1199>mdbm_users.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. NULL_OFS constant bit(18) initial unaligned dcl 3-118 ref 105 SET 000000 constant bit(1) initial unaligned dcl 3-132 set ref 84* a_ptr parameter pointer dcl 101 ref 94 105 active_users_ofs 21(18) based bit(18) level 4 packed unaligned dcl 1-14 set ref 41* common based structure level 1 packed unaligned dcl 2-13 conflict_detail_ptr parameter pointer dcl 2-40 set ref 18 18 84* conflict_sw parameter bit(1) unaligned dcl 125 set ref 18 18 43* 61 82 84* 88 conflict_ul_ptr parameter pointer dcl 120 set ref 18 18 37* 88* dbc based structure level 1 unaligned dcl 1-14 dbc_p parameter pointer dcl 114 ref 18 18 35 dbc_ptr 000102 automatic pointer initial dcl 1-44 set ref 35* 41* 41 52* 62* 62 72* 1-44* 81* 89* event_signal_sw 16(22) based bit(1) level 3 packed unaligned dcl 3-57 ref 65 fil_list based structure level 1 unaligned dcl 3-89 fil_list_ofs 22 based bit(18) level 3 packed unaligned dcl 3-57 set ref 81* fil_name based char(30) unaligned dcl 117 ref 84 fl_ptr 000106 automatic pointer initial dcl 3-110 set ref 3-110* 81* 82 84 84* 89* 89 flags 16 based structure level 2 packed unaligned dcl 3-57 fle_ptr parameter pointer dcl 119 ref 18 18 84 ids based structure level 2 unaligned dcl 3-57 mu_check_conflict 000010 constant entry external dcl 133 ref 84 name based char(30) level 2 packed unaligned dcl 3-89 ref 84 next_active_ofs 22(18) based bit(18) level 3 packed unaligned dcl 3-57 set ref 52* next_ofs 11 based bit(18) level 2 packed unaligned dcl 3-89 set ref 89* next_waiting_ofs 23 based bit(18) level 3 packed unaligned dcl 3-57 set ref 72* null builtin function dcl 129 ref 37 46 64 1-44 3-109 3-110 82 107 num_filns 000110 automatic fixed bin(17,0) dcl 3-112 set ref 36* offsets 22 based structure level 2 in structure "user_list" packed unaligned dcl 3-57 in procedure "check_scope" offsets 21 based structure level 3 in structure "dbc" packed unaligned dcl 1-14 in procedure "check_scope" ofs parameter bit(18) unaligned dcl 102 ref 94 105 105 permit_requests_ptr parameter pointer dcl 2-24 set ref 18 18 84* prevent_requests_ptr parameter pointer dcl 2-24 set ref 18 18 84* priority_high 16(21) based bit(1) level 3 packed unaligned dcl 3-57 ref 67 67 process_id 10 based bit(36) level 3 packed unaligned dcl 3-57 ref 39 proper based structure level 2 unaligned dcl 1-14 ptr builtin function dcl 130 ref 105 result 000126 automatic pointer dcl 100 set ref 105* 107* 109 this_ul_ptr parameter pointer dcl 121 ref 18 18 38 67 84 this_user_id 000100 automatic bit(36) unaligned dcl 123 set ref 39* ul_ptr 000104 automatic pointer initial dcl 3-109 set ref 38* 39 41* 46 52* 52 62* 64 65 67 72* 72 3-109* 81 84 88 user_list based structure level 1 unaligned dcl 3-57 waiting_users_ofs 22 based bit(18) level 4 packed unaligned dcl 1-14 set ref 62* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALARM automatic fixed bin(71,0) dcl 3-127 ALIVE internal static bit(1) initial unaligned dcl 3-136 CHAR_ALARM internal static char(8) initial unaligned dcl 3-125 CHAR_Q_F internal static char(8) initial unaligned dcl 3-123 DEAD internal static bit(1) initial unaligned dcl 3-138 DEL internal static bit(1) initial unaligned dcl 3-134 DQ_OPEN internal static bit(1) initial unaligned dcl 3-119 FIRST_QUEUE internal static bit(1) initial unaligned dcl 3-128 FREE_FIL_LIST internal static bit(1) initial unaligned dcl 3-150 NO_DQ_OPEN internal static bit(1) initial unaligned dcl 3-121 QUEUE_AGAIN internal static bit(1) initial unaligned dcl 3-130 QUE_FREE automatic fixed bin(71,0) dcl 3-124 Q_PRM internal static fixed bin(35,0) initial dcl 3-140 Q_PRM_BITS internal static bit(2) initial unaligned dcl 3-144 Q_PRV internal static fixed bin(35,0) initial dcl 3-142 Q_PRV_BITS internal static bit(2) initial unaligned dcl 3-146 REL_SEC internal static bit(2) initial unaligned dcl 3-148 SAVE_FIL_LIST internal static bit(1) initial unaligned dcl 3-152 VERSION_NBR internal static fixed bin(17,0) initial dcl 1-46 WAIT internal static fixed bin(17,0) initial dcl 3-115 addr builtin function dcl 127 conflict_detail based structure level 1 packed unaligned dcl 2-36 fixed builtin function dcl 128 permit_requests based structure level 1 packed unaligned dcl 2-20 prevent_requests based structure level 1 packed unaligned dcl 2-22 rel builtin function dcl 131 sys_info$max_seg_size external static fixed bin(17,0) dcl 137 NAMES DECLARED BY EXPLICIT CONTEXT. check_files_scopes 000205 constant entry internal dcl 79 ref 48 65 67 check_scope 000024 constant entry external dcl 18 convert 000315 constant entry internal dcl 94 ref 41 52 62 72 81 89 mu_check_scope 000035 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 404 416 340 414 Length 634 340 12 202 43 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME check_scope 125 external procedure is an external procedure. check_files_scopes internal procedure shares stack frame of external procedure check_scope. convert internal procedure shares stack frame of external procedure check_scope. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME check_scope 000100 this_user_id check_scope 000102 dbc_ptr check_scope 000104 ul_ptr check_scope 000106 fl_ptr check_scope 000110 num_filns check_scope 000126 result convert THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. mu_check_conflict NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 44 000007 3 109 000011 3 110 000012 18 000015 35 000043 36 000047 37 000050 38 000052 39 000055 41 000057 43 000073 46 000100 48 000104 52 000105 54 000122 61 000123 62 000131 64 000144 65 000150 67 000156 72 000170 73 000203 77 000204 79 000205 81 000206 82 000221 84 000234 88 000270 89 000300 90 000313 92 000314 94 000315 105 000317 107 000333 109 000335 ----------------------------------------------------------- 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