COMPILATION LISTING OF SEGMENT mu_de_queue_user 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.8 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) 1976 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 mu_de_queue_user: de_queue_user: proc (open_sw, scope_sw, a_dbc_ptr, this_ul_ptr, code); 19 20 21 /* 22* HISTORY: 23* Written by Oris Friesen July 1977 24* Modifidied by M. Pierret 13 April 1980 to remove priority queue. 25**/ 26 27 /* remove all traces of this user. 28* Remove from 29* -list of open users 30* -list of active or waiting users 31* 32**/ 33 34 dcl ophset bit (18) unal based; /* offset format */ 35 dcl (ouo_ptr, /* ptr to open_users_offset */ 36 this_ul_ptr, /* ptr to the user_list entry which is to be dequeued */ 37 this_fl_ptr, /* ptr to file_list entry to be de-queued */ 38 39 auo_ptr, /* ptr to active_users offset */ 40 wuo_ptr, /* ptr to waiting_users offset */ 41 a_dbc_ptr) ptr; /* ptr to data base control segment */ 42 dcl code fixed bin (35); 43 dcl scope_sw bit (1) unal; /* ON => free the file list for a user */ 44 dcl open_sw bit (1) unal; /* ON => de_queue from open list; OFF => de_queue only from active and waiting and 45* priority lists */ 46 47 dcl null builtin; 48 dcl addr builtin; 49 dcl fixed builtin; 50 dcl rel builtin; 51 dcl sys_info$max_seg_size fixed bin ext; 52 53 dcl mdbm_error_$unknown_proc_id fixed bin (35) ext; 54 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 55 56 2 1 /* BEGIN mdbm_users.incl.pl1 -- odf, 08/10/78 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(86-10-03,Dupuis), approve(86-10-21,MCR7562), audit(86-10-22,Blair), 2 7* install(86-10-23,MR12.0-1199): 2 8* Deleted the DEFAULT_WAIT variable. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 /* HISTORY: 2 13* Written by Oris Friesen August 10, 1978. 2 14* Modified by M. Pierret 13 December 1979, changing wakeup messages. 2 15* Modified by M. Pierret 13 April 1980 (Jason's birthday) to remove priority and wakeup structures 2 16* Modified by M. Pierret 13 August 1980 to group like fields (ids, offsets...) 2 17* Modified by Jim Gray - - 80-11-19, to add fields to fil_list to allow for complete 2 18* r-u-s-m-d scope codes, instead of just r-u. 2 19* 2 20* 80-12-10 Jim Gray : change names of fil_list prevent/permit modes 2 21* store to append_tuple, retreive to read_attr, delete to delete_tuple, modify to modify_attr, 2 22* and pad to mbz for consistency with MRDS access acl modes. 2 23* 2 24* 80-12-12 Jim Gray : Changed DEFAULT_WAIT declaration to fixed bin 35 from 71, 2 25* so that the wait_seconds fb35 overlay would not get 0 and thus never wait. 2 26* This is currently only used in mrds_dsl_set_fscope. 2 27* 2 28* 82-09-22 Davids: addede the opening_id element to the fil_list structure. 2 29* Put it at the end to make the new structure compatable with the old so 2 30* that testing could take place without having to recompile all the modules 2 31* that use the structure. 2 32* 2 33* 82-10-14 Davids: removed the opening_id element and added the rmri_ptr 2 34* element. This was done because set_fscope must be able to open the 2 35* relation if its not yet opened. 2 36* --------------------------------------------------------------------------- 2 37* DESCRIPTION: 2 38* 2 39* The dbc contains the following information in its static area. 2 40* One group of information is composed of structures (user_list) 2 41* threaded 3 ways to form 3 lists. They are the list of active 2 42* scope users, of open users, and of users waiting to set scope. 2 43* The beginning of each of these lists is pointed to by fields 2 44* in the dbc proper. All of these lists share the user_list structures, 2 45* and are completely contained within these structures, i.e., there 2 46* is no extraneous information in some knook in Scottsdale. 2 47* 2 48* Associated with each user_list structure is a linked list of 2 49* fil_list structures. The list is of all of the files (relations) 2 50* included in the user's scope request. Unlike the user_list 2 51* structures which were shared by several different lists, the structures 2 52* in a user's file list are exclusively hers. The entries contain 2 53* information about the scope request and the file name, and have 2 54* no real connection with the actual files in the resultant model. 2 55* --------------------------------------------------------------------------- */ 2 56 2 57 dcl 1 user_list based (ul_ptr), 2 58 2 ids, 2 59 3 group_id char (32), /* group identifier of this user */ 2 60 3 process_id bit (36), /* process identifier of this user */ 2 61 3 db_lock_id bit (36) aligned, /* the unique lock id for this process -- 2 62* used to identify dead processes */ 2 63 3 ev_chn_id fixed bin (71), /* event channel id for this process */ 2 64 3 rdbi_bits bit (72), /* bit string of rdbi_ptr 2 65* to allow concurrent openings by same process */ 2 66 2 flags, 2 67 3 open_mode fixed bin unal, /* the mode of the db. opening -- NORMAL or QUIESCE */ 2 68 3 passive_sw bit (1) unal, /* OFF => -permit update on some file */ 2 69 3 active_sw bit (1) unal, /* ON => user has a scope set */ 2 70 3 waiting_sw bit (1) unal, /* ON => user is waiting for scope to be set */ 2 71 3 priority_high bit (1) unal, /* obsolete */ 2 72 3 event_signal_sw bit (1) unal, /* ON => user has been signalled thru event wait channel */ 2 73 3 dead_proc bit (1) unal, /* ON => this user's process has died and is inactive */ 2 74 3 dead_proc_conflict 2 75 bit (1) unal, /* this user's scope request conflicts with a dead process */ 2 76 3 queue_activ bit (1) unal, /* activated from the waiting queue */ 2 77 3 pad bit (28), /* reserved for future use */ 2 78 2 allowance_count fixed bin, /* obsolete */ 2 79 2 bypass_count fixed bin, /* obsolete */ 2 80 2 offsets, 2 81 3 fil_list_ofs bit (18) unal, /* bit offset to list of files in this user's scope request */ 2 82 3 next_active_ofs bit (18) unal, /* bit offset to next user in this list of active scope users */ 2 83 3 next_waiting_ofs bit (18) unal, /* bit offset to next user in user list waiting to set scope */ 2 84 3 next_open_ofs bit (18) unal, /* bit offset to next user who has data base open in any mode */ 2 85 2 num_filns fixed bin, /* number of files potentially accessible by this user */ 2 86 2 file (num_filns refer (user_list.num_filns)) char (30); 2 87 /* names of files accessible by this user */ 2 88 2 89 dcl 1 fil_list based (fl_ptr), /* of files which a given user has specified for a scope */ 2 90 2 name char (30), /* data model name of the file specified in scope request */ 2 91 2 permits, /* permit codes for scope setting or deleting */ 2 92 3 mbz1 bit (15) unal, 2 93 3 modify_attr bit (1) unal, 2 94 3 delete_tuple bit (1) unal, 2 95 3 append_tuple bit (1) unal, 2 96 3 update bit (1) unal, 2 97 3 read_attr bit (1) unal, 2 98 2 prevents, /* prevent codes for scope setting or deleting */ 2 99 3 update bit (1) unal, 2 100 3 read_attr bit (1) unal, 2 101 3 append_tuple bit (1) unal, 2 102 3 delete_tuple bit (1) unal, 2 103 3 modify_attr bit (1) unal, 2 104 3 mbz2 bit (29) unal, 2 105 2 next_ofs bit (18) unal, /* bit offset to next file entry for this user's scope request */ 2 106 2 rmri_ptr ptr; /* pointer to the relation's rm_rel_info str */ 2 107 /* needed so that the relation can be opened if need be */ 2 108 2 109 dcl ul_ptr ptr init (null ()); 2 110 dcl fl_ptr ptr init (null ()); 2 111 2 112 dcl num_filns fixed bin; /* number of files accessible by a given user */ 2 113 2 114 2 115 dcl WAIT init (0) fixed bin int static options (constant); 2 116 /* the number of later user requests for which a user 2 117* request will wait before it must be honored */ 2 118 dcl NULL_OFS bit (18) init ("111111111111111111"b) unal int static options (constant); 2 119 dcl DQ_OPEN bit (1) unal init ("1"b) int static options (constant); 2 120 /* dequeue from open list */ 2 121 dcl NO_DQ_OPEN bit (1) init ("0"b) int static options (constant); 2 122 /* do not dequeue from open list */ 2 123 dcl CHAR_Q_F char (8) init ("que_free") int static options (constant); 2 124 dcl QUE_FREE fixed bin (71); 2 125 dcl CHAR_ALARM char (8) init ("alarm___") int static options (constant); 2 126 /* wakeup up signal for time-out */ 2 127 dcl ALARM fixed bin (71); 2 128 dcl FIRST_QUEUE bit (1) init ("1"b) int static options (constant); 2 129 /* this is the 1st time process will asleep */ 2 130 dcl QUEUE_AGAIN bit (1) init ("0"b) int static options (constant); 2 131 /* being queued for the 2nd, 3rd ... time */ 2 132 dcl SET bit (1) unal init ("1"b) int static options (constant); 2 133 /* check to see which scopes can be set */ 2 134 dcl DEL bit (1) unal init ("0"b) int static options (constant); 2 135 /* check to see which scopes can be deleted */ 2 136 dcl ALIVE init ("1"b) bit (1) unal int static options (constant); 2 137 /* process is alive */ 2 138 dcl DEAD init ("0"b) bit (1) unal int static options (constant); 2 139 /* process is dead */ 2 140 dcl Q_PRM init (3) fixed bin (35) int static options (constant); 2 141 /* permit retrieve, update */ 2 142 dcl Q_PRV init (3) fixed bin (35) int static options (constant); 2 143 /* prevent retrieve, update */ 2 144 dcl Q_PRM_BITS bit (2) unal init ("11"b) int static options (constant); 2 145 /* permit retrieve, update */ 2 146 dcl Q_PRV_BITS bit (2) unal init ("11"b) int static options (constant); 2 147 /* prevent retrieve, update */ 2 148 dcl REL_SEC bit (2) init ("11"b) int static options (constant); 2 149 /* measure wait time in relative seconds */ 2 150 dcl FREE_FIL_LIST bit (1) unal init ("1"b) int static options (constant); 2 151 /* free this user's file lists */ 2 152 dcl SAVE_FIL_LIST bit (1) unal init ("0"b) int static options (constant); 2 153 /* do not free this user's file lists */ 2 154 2 155 /* END mdbm_users.incl.pl1 */ 2 156 57 58 59 dcl hold_open_mode fixed bin; /* open mode of user being de-queued */ 60 61 /* look at list of open users */ 62 dbc_ptr = a_dbc_ptr; 63 ouo_ptr = addr (dbc.open_users_ofs); 64 auo_ptr = addr (dbc.active_users_ofs); 65 wuo_ptr = addr (dbc.waiting_users_ofs); 66 67 if this_ul_ptr = null 68 then call error (mdbm_error_$unknown_proc_id); 69 else ul_ptr = this_ul_ptr; 70 num_filns = 0; 71 72 if user_list.active_sw 73 then do; 74 75 ul_ptr = convert (dbc_ptr, auo_ptr -> ophset); 76 do while (ul_ptr ^= this_ul_ptr & ul_ptr ^= null); 77 78 auo_ptr = addr (user_list.next_active_ofs); 79 ul_ptr = convert (dbc_ptr, user_list.next_active_ofs); 80 end; 81 82 if ul_ptr = null then call error (mdbm_error_$unknown_proc_id); 83 84 auo_ptr -> ophset = user_list.next_active_ofs; 85 dbc.active_users = dbc.active_users - 1; 86 user_list.next_active_ofs = NULL_OFS; 87 user_list.active_sw = "0"b; 88 user_list.passive_sw = "1"b; 89 end; 90 91 else if user_list.waiting_sw 92 then do; 93 ul_ptr = convert (dbc_ptr, wuo_ptr -> ophset); 94 do while (ul_ptr ^= this_ul_ptr & ul_ptr ^= null); 95 wuo_ptr = addr (user_list.next_waiting_ofs); 96 ul_ptr = convert (dbc_ptr, user_list.next_waiting_ofs); 97 end; 98 99 if ul_ptr = null then call error (mdbm_error_$unknown_proc_id); 100 101 wuo_ptr -> ophset = user_list.next_waiting_ofs; 102 dbc.waiting_users = dbc.waiting_users - 1; 103 user_list.next_waiting_ofs = NULL_OFS; 104 user_list.waiting_sw = "0"b; 105 106 end; 107 108 /* free all files referenced by this user only if the scope_sw is ON */ 109 110 if scope_sw then do; 111 fl_ptr = convert (dbc_ptr, user_list.fil_list_ofs); 112 do while (fl_ptr ^= null); 113 this_fl_ptr = convert (dbc_ptr, fil_list.next_ofs); 114 free fil_list in (dbc.static_area); 115 fl_ptr = this_fl_ptr; 116 end; 117 user_list.fil_list_ofs = NULL_OFS; 118 end; 119 120 if open_sw then do; 121 hold_open_mode = user_list.open_mode; 122 123 ul_ptr = convert (dbc_ptr, ouo_ptr -> ophset); 124 do while (ul_ptr ^= this_ul_ptr & ul_ptr ^= null); 125 ouo_ptr = addr (user_list.next_open_ofs); 126 ul_ptr = convert (dbc_ptr, user_list.next_open_ofs); 127 end; 128 if ul_ptr = null then call error (mdbm_error_$unknown_proc_id); 129 130 ouo_ptr -> ophset = user_list.next_open_ofs; 131 dbc.open_users = dbc.open_users - 1; 132 133 134 free user_list in (dbc.static_area); 135 /* finished */ 136 this_ul_ptr = null; /* return a null pointer to caller */ 137 138 end; 139 exit: 140 return; 141 142 convert: proc (a_ptr, ofs) returns (ptr); 143 144 /* this procedure function converts an offset from "0"b to null 145* or from the offset value to a pointer value within the segment denoted by a_ptr 146**/ 147 148 dcl result ptr; /* the reultant pointer value */ 149 dcl a_ptr ptr; /* ptr to the segment to which the offset refers */ 150 dcl ofs bit (18) unal; /* the bit offset */ 151 152 dcl (null, ptr) builtin; 153 154 if ofs ^= NULL_OFS 155 then result = ptr (a_ptr, ofs); 156 else result = null; 157 158 return (result); 159 160 end convert; 161 162 error: proc (cd); 163 164 dcl cd fixed bin (35); 165 166 code = cd; 167 goto exit; 168 169 end error; 170 171 end mu_de_queue_user; 172 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/23/86 1009.4 mu_de_queue_user.pl1 >spec>install>1199>mu_de_queue_user.pl1 55 1 10/14/83 1609.0 mdbm_dbc.incl.pl1 >ldd>include>mdbm_dbc.incl.pl1 57 2 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 2-118 ref 86 103 117 154 a_dbc_ptr parameter pointer dcl 35 ref 18 18 62 a_ptr parameter pointer dcl 149 ref 142 154 active_sw 16(19) based bit(1) level 3 packed unaligned dcl 2-57 set ref 72 87* active_users 10 based fixed bin(17,0) level 4 dcl 1-14 set ref 85* 85 active_users_ofs 21(18) based bit(18) level 4 packed unaligned dcl 1-14 set ref 64 addr builtin function dcl 48 ref 63 64 65 78 95 125 auo_ptr 000104 automatic pointer dcl 35 set ref 64* 75 78* 84 cd parameter fixed bin(35,0) dcl 164 ref 162 166 code parameter fixed bin(35,0) dcl 42 set ref 18 18 166* dbc based structure level 1 unaligned dcl 1-14 dbc_ptr 000110 automatic pointer initial dcl 1-44 set ref 62* 63 64 65 75* 79* 85 85 93* 96* 102 102 111* 113* 114 123* 126* 131 131 134 1-44* fil_list based structure level 1 unaligned dcl 2-89 set ref 114 fil_list_ofs 22 based bit(18) level 3 packed unaligned dcl 2-57 set ref 111* 117* fl_ptr 000114 automatic pointer initial dcl 2-110 set ref 111* 112 113 114 115* 2-110* flags 16 based structure level 2 packed unaligned dcl 2-57 hold_open_mode 000117 automatic fixed bin(17,0) dcl 59 set ref 121* mdbm_error_$unknown_proc_id 000010 external static fixed bin(35,0) dcl 53 set ref 67* 82* 99* 128* next_active_ofs 22(18) based bit(18) level 3 packed unaligned dcl 2-57 set ref 78 79* 84 86* next_ofs 11 based bit(18) level 2 packed unaligned dcl 2-89 set ref 113* next_open_ofs 23(18) based bit(18) level 3 packed unaligned dcl 2-57 set ref 125 126* 130 next_waiting_ofs 23 based bit(18) level 3 packed unaligned dcl 2-57 set ref 95 96* 101 103* null builtin function dcl 47 in procedure "de_queue_user" ref 67 76 82 94 99 112 124 128 136 1-44 2-109 2-110 null builtin function dcl 152 in procedure "convert" ref 156 num_filns 24 based fixed bin(17,0) level 2 in structure "user_list" dcl 2-57 in procedure "de_queue_user" ref 134 num_filns 000116 automatic fixed bin(17,0) dcl 2-112 in procedure "de_queue_user" set ref 70* offsets 21 based structure level 3 in structure "dbc" packed unaligned dcl 1-14 in procedure "de_queue_user" offsets 22 based structure level 2 in structure "user_list" packed unaligned dcl 2-57 in procedure "de_queue_user" ofs parameter bit(18) unaligned dcl 150 ref 142 154 154 open_mode 16 based fixed bin(17,0) level 3 packed unaligned dcl 2-57 ref 121 open_sw parameter bit(1) unaligned dcl 44 ref 18 18 120 open_users 7 based fixed bin(17,0) level 4 dcl 1-14 set ref 131* 131 open_users_ofs 21 based bit(18) level 4 packed unaligned dcl 1-14 set ref 63 ophset based bit(18) unaligned dcl 34 set ref 75* 84* 93* 101* 123* 130* ouo_ptr 000100 automatic pointer dcl 35 set ref 63* 123 125* 130 passive_sw 16(18) based bit(1) level 3 packed unaligned dcl 2-57 set ref 88* proper based structure level 2 unaligned dcl 1-14 ptr builtin function dcl 152 ref 154 result 000126 automatic pointer dcl 148 set ref 154* 156* 158 scope_sw parameter bit(1) unaligned dcl 43 ref 18 18 110 static_area 30 based area level 2 dcl 1-14 ref 114 134 this_fl_ptr 000102 automatic pointer dcl 35 set ref 113* 115 this_ul_ptr parameter pointer dcl 35 set ref 18 18 67 69 76 94 124 136* ul_ptr 000112 automatic pointer initial dcl 2-109 set ref 69* 72 75* 76 76 78 79* 79 82 84 86 87 88 91 93* 94 94 95 96* 96 99 101 103 104 111 117 121 123* 124 124 125 126* 126 128 130 134 2-109* user_counts 7 based structure level 3 unaligned dcl 1-14 user_list based structure level 1 unaligned dcl 2-57 set ref 134 waiting_sw 16(20) based bit(1) level 3 packed unaligned dcl 2-57 set ref 91 104* waiting_users 11 based fixed bin(17,0) level 4 dcl 1-14 set ref 102* 102 waiting_users_ofs 22 based bit(18) level 4 packed unaligned dcl 1-14 set ref 65 wuo_ptr 000106 automatic pointer dcl 35 set ref 65* 93 95* 101 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALARM automatic fixed bin(71,0) dcl 2-127 ALIVE internal static bit(1) initial unaligned dcl 2-136 CHAR_ALARM internal static char(8) initial unaligned dcl 2-125 CHAR_Q_F internal static char(8) initial unaligned dcl 2-123 DEAD internal static bit(1) initial unaligned dcl 2-138 DEL internal static bit(1) initial unaligned dcl 2-134 DQ_OPEN internal static bit(1) initial unaligned dcl 2-119 FIRST_QUEUE internal static bit(1) initial unaligned dcl 2-128 FREE_FIL_LIST internal static bit(1) initial unaligned dcl 2-150 NO_DQ_OPEN internal static bit(1) initial unaligned dcl 2-121 QUEUE_AGAIN internal static bit(1) initial unaligned dcl 2-130 QUE_FREE automatic fixed bin(71,0) dcl 2-124 Q_PRM internal static fixed bin(35,0) initial dcl 2-140 Q_PRM_BITS internal static bit(2) initial unaligned dcl 2-144 Q_PRV internal static fixed bin(35,0) initial dcl 2-142 Q_PRV_BITS internal static bit(2) initial unaligned dcl 2-146 REL_SEC internal static bit(2) initial unaligned dcl 2-148 SAVE_FIL_LIST internal static bit(1) initial unaligned dcl 2-152 SET internal static bit(1) initial unaligned dcl 2-132 VERSION_NBR internal static fixed bin(17,0) initial dcl 1-46 WAIT internal static fixed bin(17,0) initial dcl 2-115 fixed builtin function dcl 49 rel builtin function dcl 50 sys_info$max_seg_size external static fixed bin(17,0) dcl 51 NAMES DECLARED BY EXPLICIT CONTEXT. convert 000462 constant entry internal dcl 142 ref 75 79 93 96 111 113 123 126 de_queue_user 000022 constant entry external dcl 18 error 000505 constant entry internal dcl 162 ref 67 82 99 128 exit 000461 constant label dcl 139 set ref 167 mu_de_queue_user 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 564 576 515 574 Length 776 515 12 164 47 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME de_queue_user 113 external procedure is an external procedure. convert internal procedure shares stack frame of external procedure de_queue_user. error internal procedure shares stack frame of external procedure de_queue_user. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME de_queue_user 000100 ouo_ptr de_queue_user 000102 this_fl_ptr de_queue_user 000104 auo_ptr de_queue_user 000106 wuo_ptr de_queue_user 000110 dbc_ptr de_queue_user 000112 ul_ptr de_queue_user 000114 fl_ptr de_queue_user 000116 num_filns de_queue_user 000117 hold_open_mode de_queue_user 000126 result convert THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac ext_entry op_freen_ NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mdbm_error_$unknown_proc_id LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 44 000007 2 109 000011 2 110 000012 18 000015 62 000041 63 000045 64 000047 65 000053 67 000055 69 000071 70 000074 72 000075 75 000101 76 000113 78 000125 79 000132 80 000145 82 000146 84 000161 85 000166 86 000171 87 000173 88 000175 89 000177 91 000200 93 000203 94 000215 95 000227 96 000232 97 000245 99 000246 101 000261 102 000266 103 000271 104 000273 110 000275 111 000303 112 000316 113 000322 114 000335 115 000337 116 000341 117 000342 120 000345 121 000353 123 000357 124 000371 125 000403 126 000410 127 000423 128 000424 130 000437 131 000444 134 000447 136 000456 139 000461 142 000462 154 000464 156 000500 158 000502 162 000505 166 000507 167 000512 ----------------------------------------------------------- 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