/* BEGIN INCLUDE FILE ... mseg_segment.incl.pl1 */ /* Created: April 1985 by G. Palter from msg_hdr.incl.pl1 */ /* format: style3,linecom */ /* NOTE: This include file references the mseg_wakeup_state structure which is defined separately in mseg_wakeup_state.incl.pl1. Programs which use this include file must also include mseg_wakeup_state.incl.pl1 to prevent compilation errors. */ /* Definition of the structure of a message segment -- A message segment is composed of three sections -- the header, the block map, and the blocks space. In addition to the message ID hash table and the head&tail of the chronological message chain, the message header also contains the state of wakeup acceptance for this segment. In order to maintain compatibility with early version 5 message segments, the wakeup state is maintained in a 64 word area of the header which had been known as the "header message". See mseg_wakeup_state.incl.pl1 for additional information. The entire message segment, including the header and block map, is treated as an array of fixed size blocks. The block map contains a bit for each block in the message which indicates whether that block is in use. (The blocks which overlay the header and block map are always marked as being in use). The size of the block map is based on the maxlength of the message segment in order to provide more free space in very small message segments. When a message is added to a message segment, its content is split into blocks which are allocated in the blocks space. The blocks space starts with the first block after the block map and occupies the remainder of the segment. */ declare 1 mseg_segment aligned based (mseg_ptr), 2 header aligned, 3 lock bit (36) aligned, 3 sentinel bit (36) aligned, /* proves that this segment is a message segment */ 3 reserved bit (72) aligned, /* ... for compatibility with early version 5 segments */ 3 date_time_last_salvaged fixed binary (71), 3 pad (2) bit (36) aligned, 3 message_chain, /* the chronological chain of messages in the segment ... */ 4 first_message /* ... the first (oldest) message */ fixed binary (18) unaligned unsigned, 4 pad1 bit (18) unaligned, 4 last_message /* ... the last (youngest) message */ fixed binary (18) unaligned unsigned, 4 pad2 bit (18) unaligned, 3 n_blocks_allocated /* total # of blocks available in this message segment ... */ fixed binary (18), /* ... including space occupied by the header and block map */ 3 n_blocks_unused fixed binary (18), 3 n_messages fixed binary (18), 3 block_size fixed binary, /* ... in words */ 3 flags, 4 modification_in_progress bit (1) unaligned, 4 salvaged bit (1) unaligned, /* ON => the message segment had been salvaged earlier */ 4 wakeup_state_set bit (1) unaligned, 4 salvage_in_progress bit (1) unaligned, 4 pad bit (32) unaligned, 3 version fixed binary, 3 wakeup_state aligned, 4 state aligned like mseg_wakeup_state, 4 pad (64 - 10) bit (36) aligned, /* ... for compatibility with early version 5 segments */ 3 hash_table aligned, /* ... based on the low order 9 bits of the message ID */ 4 last_message (0:511) fixed binary (18) unaligned unsigned, 2 block_map aligned, /* ON => the block is in use */ 3 map bit (0 refer (mseg_segment.n_blocks_allocated)) unaligned; declare mseg_ptr pointer; declare MSEG_SEGMENT_VERSION_5 /* presently supported version */ fixed binary static options (constant) initial (5); declare MSEG_SEGMENT_SENTINEL bit (36) aligned static options (constant) initial ("252525252525"b3); /* Redefinitions required to access the wakeup_state of the segment in early version 5 message segments */ declare header_msg_access_class bit (72) aligned defined (mseg_segment.reserved); declare header_msg_present bit (1) unaligned defined (mseg_segment.wakeup_state_set); declare header_msg (64) bit (36) aligned based (addr (mseg_segment.wakeup_state)); /* END INCLUDE FILE ... mseg_segment.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 */