/* BEGIN INCLUDE FILE ... ect_structures.incl.pl1 ... Jan 1981 */ /* Modified 1984-10-28 by E. Swenson for new ipc validation and to move event_channel_name declarations from here to event_channel_name.incl.pl1 */ /****^ HISTORY COMMENTS: 1) change(86-08-12,Kissel), approve(86-08-12,MCR7473), audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): Changed to support control point management. These changes were actually done in February 1985 by G. Palter. 2) change(86-08-12,Kissel), approve(86-08-12,MCR7479), audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): Modified to eke out some flag bits by making the type fixed bin (8) in order to support async event channels. END HISTORY COMMENTS */ /* format: style3 */ /* Definition of the Event Channel Table (ECT) header */ dcl 1 ect_header aligned based (ect_ptr), 2 ect_areap ptr, /* pointer to area in which ECT entries are allocated */ 2 ect_area_size fixed bin (19), /* number of words in ECT area */ 2 count (-1:5) fixed bin, /* totals of entries allocated */ /* -1 = waiting control points */ /* 0 = total entries, 1 = wait channels */ /* 2 = call channels, 3 = call channel messages */ /* 4 = ITT messages, 5 = wait channel messages */ 2 entry_list_ptrs (5), /* head and tail of lists in ECT */ /* 1 = wait channels, 2 = call channels */ /* 3 = call channel messages, 4 = ITT messages */ /* 5 = wait channel messages */ 3 firstp ptr, /* head of list */ 3 lastp ptr, /* tail of list */ 2 meters, 3 total_wakeups fixed bin (33), /* total wakeups sent on all channels */ 3 total_wait_wakeups fixed bin (33), /* wakeups sent on wait channels */ 3 total_call_wakeups fixed bin (33), /* wakeups sent on call channels */ 3 ittes_tossed fixed bin (33), /* number invalid ITT messages received, ignored */ 2 seed fixed bin (33), /* used to generate uid portion of channel name */ 2 flags, 3 call_priority bit (1) unal, /* = "0"b if wait chns have priority - default */ /* = "1"b if call chans have priority */ 3 wakeup_control_points /** ON => we must wakeup other control points before */ bit (1) unaligned, /* ... processing any event messages */ 3 unused1 bit (16) unaligned, 3 mask_call_count fixed bin (17) unal, /* number times event call chans masked */ 2 ecit_ptr ptr, /* pointer to the ECIT */ 2 ecit_lth fixed bin (17), /* length of the ECIT (see below) */ 2 r_offset fixed bin (18), /* operand used to encode/decode channel names */ 2 r_factor fixed bin (35), /* operand used to encode/decode channel names */ 2 last_fast_channel_events /** prior fast channel settings */ bit (36) aligned; dcl ect_ptr pointer; dcl TOTAL fixed bin (8) static options (constant) init (0); dcl WAIT fixed bin (8) static options (constant) init (1); dcl CALL fixed bin (8) static options (constant) init (2); dcl EV_CALL_MESSAGE fixed bin (8) static options (constant) init (3); dcl ITT_MESSAGE fixed bin (8) static options (constant) init (4); dcl EV_WAIT_MESSAGE fixed bin (8) static options (constant) init (5); dcl WAITING_CP fixed bin (8) static options (constant) init (-1); /* used to index count and entry_list_ptrs arrays */ /* Definition of the Event Channel Index Table (ECIT) -- Given an event channel name, ipc_validate_$decode_event_channel_name will yield an index into this table which contains a pointer to the definition of the channel (its ECT) */ dcl 1 ecit aligned based (ecit_ptr), 2 ecte_ptr (ecit_lth) pointer unaligned; dcl ecit_ptr pointer; dcl ecit_lth fixed binary (17); /* Definition of an event wait channel */ dcl 1 wait_channel aligned based (ectep), 2 word_0, 3 unused1 fixed bin (17) unal, 3 flags unal, 4 async_call bit (1) unal, /* Only checked for call channels. */ 4 pad bit (8) unal, 3 type fixed bin (8) unal, /* = WAIT */ 2 next_chanp ptr unal, /* pointer to next wait channel */ 2 prev_chanp ptr unal, /* pointer to previous wait channel */ 2 word_3, 3 fast_channel bit (1) unal, /* ON => this is a fast channel */ 3 inhibit_count fixed bin (16) unal, /* number of times message reception has been inhibited */ 3 wakeup_control_points /** ON => wakeup the control points waiting on this channel */ bit (1) unaligned, 3 wakeup_count fixed bin (17) unal unsigned, /* number of wakeups received over this channel */ 2 name bit (72), /* event channel name associated with this channel */ 2 first_ev_msgp ptr unal, /* pointer to first message in queue */ 2 last_ev_msgp ptr unal, /* pointer to last message in queue */ 2 first_wcpp ptr unal, /* pointer to first control point waiting on this channel */ 2 last_wcpp ptr unal, /* pointer to last control point waiting on this channel */ 2 fast_channel_id fixed binary, /* index into ipc_data_$fast_channel_events */ 2 unused2 fixed binary; /* pad to 12 words */ /* Definition of an event call channel */ dcl 1 call_channel aligned based (ectep), 2 word_0, 3 priority fixed bin (17) unal, /* indicated priority relative to other call chns */ 3 flags unal, 4 async_call bit (1) unal, /* Send IPS "wkp_" on wakeup. */ 4 pad bit (8) unal, 3 type fixed bin (8) unal, /* = CALL */ 2 next_chanp ptr unal, /* pointer to next call channel */ 2 prev_chanp ptr unal, /* pointer to prev call channel */ 2 word_3, 3 call_inhibit bit (1) unal, /* = "1"b if call to associated proc in progress */ 3 inhibit_count fixed bin (16) unal, /* number of times message reception has been inhibited */ 3 wakeup_control_points /** ON => wakeup the control point waiting on this channel */ bit (1) unaligned, 3 wakeup_count fixed bin (17) unal unsigned, /* number of wakeups received over this channel */ 2 name bit (72), /* event channel name associated with this channel */ 2 first_ev_msgp ptr unal, /* pointer to first message in queue */ 2 last_ev_msgp ptr unal, /* pointer to last message in queue */ 2 data_ptr ptr unal, /* pointer to associated data base */ 2 procedure_value, /* procedure to call when message arrives */ 3 procedure_ptr ptr unal, /* pointer to entry point */ 3 environment_ptr ptr unal, /* pointer to stack frame */ 2 control_point_id /** ID of control point which "owns" this channel */ bit (36) aligned; dcl ectep pointer; /* Definition of a message for either an event wait or an event call channel */ dcl 1 event_message aligned based, 2 word_0, 3 priority fixed bin (17) unal, /* priority of call channel */ 3 type fixed bin (17) unal, /* = EV_CALL_MESSAGE or EV_WAIT_MESSAGE */ 2 chanp ptr unal, /* pointer to associated event channel */ 2 message_data like event_message_data aligned, /* event message as returned from ipc_$block */ 2 next_ev_msgp ptr unal, /* pointer to next event call/wait channel message */ 2 prev_ev_msgp ptr unal, /* pointer to previous event call/wait channel message */ 2 next_chan_msgp ptr unal, /* pointer to next message for this channel */ 2 prev_chan_msgp ptr unal; /* pointer to previous message for this channel */ /* Definition of an ITT message as returned from ring 0 */ dcl 1 itt_message aligned based, 2 word_0, 3 unused1 fixed bin (17) unal, 3 type fixed bin (17) unal, 2 next_itt_msgp ptr unal, /* pointer to next itt message entry in ECT currently */ 2 message_data like event_message_data aligned, 2 unused2 (4) fixed bin; /* pad to 12 words */ /* Definition of an event message as returned from ring 0 */ dcl 1 event_message_data aligned based, 2 channel_id fixed bin (71), /* event channel name */ 2 message fixed bin (71), /* 72 bit message associated with wakeup */ 2 sender bit (36), /* process ID of sender */ 2 origin, 3 dev_signal bit (18) unal, /* "1"b if device signal */ /* "0"b if user event */ 3 ring fixed bin (17) unal; /* ring of sending process */ /* Definition of a control point which is blocked on a channel */ dcl 1 waiting_control_point aligned based (wcpp), 2 word_0, 3 block_count fixed binary (17) unaligned, /* # of in-progress ipc_$block calls by this control point */ 3 type fixed binary (17) unaligned, /* = WAITING_CP */ 2 control_point_id /** ID of the waiting control point */ bit (36) aligned, 2 chain, 3 next_wcpp pointer, /* pointer to previous waiting control point */ 3 prev_wcpp pointer, /* pointer to next waiting control point */ 2 unused (6) bit (36) aligned; /* pad to 12 words */ dcl wcpp pointer; /* END INCLUDE file ... ect_structures.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 */