/* BEGIN mdbm_users.incl.pl1 -- odf, 08/10/78 */ /****^ HISTORY COMMENTS: 1) change(86-10-03,Dupuis), approve(86-10-21,MCR7562), audit(86-10-22,Blair), install(86-10-23,MR12.0-1199): Deleted the DEFAULT_WAIT variable. END HISTORY COMMENTS */ /* HISTORY: Written by Oris Friesen August 10, 1978. Modified by M. Pierret 13 December 1979, changing wakeup messages. Modified by M. Pierret 13 April 1980 (Jason's birthday) to remove priority and wakeup structures Modified by M. Pierret 13 August 1980 to group like fields (ids, offsets...) Modified by Jim Gray - - 80-11-19, to add fields to fil_list to allow for complete r-u-s-m-d scope codes, instead of just r-u. 80-12-10 Jim Gray : change names of fil_list prevent/permit modes store to append_tuple, retreive to read_attr, delete to delete_tuple, modify to modify_attr, and pad to mbz for consistency with MRDS access acl modes. 80-12-12 Jim Gray : Changed DEFAULT_WAIT declaration to fixed bin 35 from 71, so that the wait_seconds fb35 overlay would not get 0 and thus never wait. This is currently only used in mrds_dsl_set_fscope. 82-09-22 Davids: addede the opening_id element to the fil_list structure. Put it at the end to make the new structure compatable with the old so that testing could take place without having to recompile all the modules that use the structure. 82-10-14 Davids: removed the opening_id element and added the rmri_ptr element. This was done because set_fscope must be able to open the relation if its not yet opened. --------------------------------------------------------------------------- DESCRIPTION: The dbc contains the following information in its static area. One group of information is composed of structures (user_list) threaded 3 ways to form 3 lists. They are the list of active scope users, of open users, and of users waiting to set scope. The beginning of each of these lists is pointed to by fields in the dbc proper. All of these lists share the user_list structures, and are completely contained within these structures, i.e., there is no extraneous information in some knook in Scottsdale. Associated with each user_list structure is a linked list of fil_list structures. The list is of all of the files (relations) included in the user's scope request. Unlike the user_list structures which were shared by several different lists, the structures in a user's file list are exclusively hers. The entries contain information about the scope request and the file name, and have no real connection with the actual files in the resultant model. --------------------------------------------------------------------------- */ dcl 1 user_list based (ul_ptr), 2 ids, 3 group_id char (32), /* group identifier of this user */ 3 process_id bit (36), /* process identifier of this user */ 3 db_lock_id bit (36) aligned, /* the unique lock id for this process -- used to identify dead processes */ 3 ev_chn_id fixed bin (71), /* event channel id for this process */ 3 rdbi_bits bit (72), /* bit string of rdbi_ptr to allow concurrent openings by same process */ 2 flags, 3 open_mode fixed bin unal, /* the mode of the db. opening -- NORMAL or QUIESCE */ 3 passive_sw bit (1) unal, /* OFF => -permit update on some file */ 3 active_sw bit (1) unal, /* ON => user has a scope set */ 3 waiting_sw bit (1) unal, /* ON => user is waiting for scope to be set */ 3 priority_high bit (1) unal, /* obsolete */ 3 event_signal_sw bit (1) unal, /* ON => user has been signalled thru event wait channel */ 3 dead_proc bit (1) unal, /* ON => this user's process has died and is inactive */ 3 dead_proc_conflict bit (1) unal, /* this user's scope request conflicts with a dead process */ 3 queue_activ bit (1) unal, /* activated from the waiting queue */ 3 pad bit (28), /* reserved for future use */ 2 allowance_count fixed bin, /* obsolete */ 2 bypass_count fixed bin, /* obsolete */ 2 offsets, 3 fil_list_ofs bit (18) unal, /* bit offset to list of files in this user's scope request */ 3 next_active_ofs bit (18) unal, /* bit offset to next user in this list of active scope users */ 3 next_waiting_ofs bit (18) unal, /* bit offset to next user in user list waiting to set scope */ 3 next_open_ofs bit (18) unal, /* bit offset to next user who has data base open in any mode */ 2 num_filns fixed bin, /* number of files potentially accessible by this user */ 2 file (num_filns refer (user_list.num_filns)) char (30); /* names of files accessible by this user */ dcl 1 fil_list based (fl_ptr), /* of files which a given user has specified for a scope */ 2 name char (30), /* data model name of the file specified in scope request */ 2 permits, /* permit codes for scope setting or deleting */ 3 mbz1 bit (15) unal, 3 modify_attr bit (1) unal, 3 delete_tuple bit (1) unal, 3 append_tuple bit (1) unal, 3 update bit (1) unal, 3 read_attr bit (1) unal, 2 prevents, /* prevent codes for scope setting or deleting */ 3 update bit (1) unal, 3 read_attr bit (1) unal, 3 append_tuple bit (1) unal, 3 delete_tuple bit (1) unal, 3 modify_attr bit (1) unal, 3 mbz2 bit (29) unal, 2 next_ofs bit (18) unal, /* bit offset to next file entry for this user's scope request */ 2 rmri_ptr ptr; /* pointer to the relation's rm_rel_info str */ /* needed so that the relation can be opened if need be */ dcl ul_ptr ptr init (null ()); dcl fl_ptr ptr init (null ()); dcl num_filns fixed bin; /* number of files accessible by a given user */ dcl WAIT init (0) fixed bin int static options (constant); /* the number of later user requests for which a user request will wait before it must be honored */ dcl NULL_OFS bit (18) init ("111111111111111111"b) unal int static options (constant); dcl DQ_OPEN bit (1) unal init ("1"b) int static options (constant); /* dequeue from open list */ dcl NO_DQ_OPEN bit (1) init ("0"b) int static options (constant); /* do not dequeue from open list */ dcl CHAR_Q_F char (8) init ("que_free") int static options (constant); dcl QUE_FREE fixed bin (71); dcl CHAR_ALARM char (8) init ("alarm___") int static options (constant); /* wakeup up signal for time-out */ dcl ALARM fixed bin (71); dcl FIRST_QUEUE bit (1) init ("1"b) int static options (constant); /* this is the 1st time process will asleep */ dcl QUEUE_AGAIN bit (1) init ("0"b) int static options (constant); /* being queued for the 2nd, 3rd ... time */ dcl SET bit (1) unal init ("1"b) int static options (constant); /* check to see which scopes can be set */ dcl DEL bit (1) unal init ("0"b) int static options (constant); /* check to see which scopes can be deleted */ dcl ALIVE init ("1"b) bit (1) unal int static options (constant); /* process is alive */ dcl DEAD init ("0"b) bit (1) unal int static options (constant); /* process is dead */ dcl Q_PRM init (3) fixed bin (35) int static options (constant); /* permit retrieve, update */ dcl Q_PRV init (3) fixed bin (35) int static options (constant); /* prevent retrieve, update */ dcl Q_PRM_BITS bit (2) unal init ("11"b) int static options (constant); /* permit retrieve, update */ dcl Q_PRV_BITS bit (2) unal init ("11"b) int static options (constant); /* prevent retrieve, update */ dcl REL_SEC bit (2) init ("11"b) int static options (constant); /* measure wait time in relative seconds */ dcl FREE_FIL_LIST bit (1) unal init ("1"b) int static options (constant); /* free this user's file lists */ dcl SAVE_FIL_LIST bit (1) unal init ("0"b) int static options (constant); /* do not free this user's file lists */ /* END mdbm_users.incl.pl1 */ */ ----------------------------------------------------------- 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 */