/* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ /* format: style3,idind25,indcomtxt */ /* Channel Definition Table. This table lists all of the hardware channels (ports) connected to the system, and maintains the attributes of each one. PG 741230 Modified by Mike Grady 5/6/76 to add FNP info. Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. Modified by Robert Coren 6/13/77 to make terminal types be character strings. Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. Modified August 1982 by E. N. Kittlitz for check_acs. Modified January 1983 by Keith Loepere for generic_destination. Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. Modified 831216 by E. N. Kittlitz for required_access_class. Modified 84-04-01 by BIM to finish communications AIM: access class ranges, access_control flags. */ /****^ HISTORY COMMENTS: 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): Add support for answering service to use IOCBs when tty_ cannot be used to service login channels. END HISTORY COMMENTS */ dcl CDT_version_5 fixed bin internal static initial (5) options (constant); dcl CDT_version fixed bin internal static initial (6) options (constant); dcl (cdtp, cdtep, fnpep, mpxep) ptr; dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 2 author like author_dcl.author, /* standard header */ 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 2 current_size fixed bin, /* number of last cdte. */ 2 version fixed bin, 2 freep fixed bin, /* chain of free cdte's */ 2 n_cdtes fixed bin, /* number of used cdte's */ 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 2 cpu_in_dialup fixed bin (71), /* .. */ 2 pf_in_dialup fixed bin, /* .. */ 2 pp_in_dialup fixed bin, /* .. */ 2 entries_to_dialup fixed bin, /* .. */ 2 flags, 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 3 cdt_is_live bit (1) unal, /* cdt is active */ 3 mux_mgr_system_init bit (1) unal, /* mux mgr has loaded top-levels */ 3 pad1 bit (33) unal, 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 2 threads aligned like channel_threads, /* root of non-fnp-top-level-multiplexers */ 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ %page; dcl 1 cdte based (cdtep) aligned, /* a channel */ 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 2 pad1 bit (36) aligned, 2 name char (32), /* ASCII name of channel */ 2 access_class (2) bit (72) aligned, /* access class range */ 2 comment char (48), /* printable message about channel */ 2 charge_type fixed bin (17) unal, /* billing group */ 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 2 pad2 bit (18) unaligned, 2 answerback char (8), /* answerback string expected */ 2 initial_terminal_type char (32) unal, /* as specified in the CMF */ 2 mpx_data unal, /* data used only for multiplexed channels */ 3 mpx_type fixed bin (17), /* type of multiplexing used */ 3 mpx_service fixed bin (17), /* service type, active or inactive */ 2 flags, ( 3 attributes, 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 4 audit_access_error bit (1), /* ON means ck that person auth is inside access class range */ /* this implies that the access_class describes a range of legitimate user auths. */ 4 hardwired bit (1), /* ON means it is */ 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 4 dont_read_answerback bit (1), /* ON means don't try to read answerback */ 4 pada bit (4), 3 access_control unaligned, /* As below */ 4 dial_out bit (1), /* dialing user must be on ACS */ 4 priv_attach bit (1), /* PA_ user must be on ACS */ 4 dial_server bit (1), /* accept_dials process must be on acs */ 4 login bit (1), /* logging in user must be on acs */ 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 4 pado bit (3), 3 options, 4 execute_initial_command bit (1), /* ON means to do it */ 4 attached_by_operator bit (1), /* ON means temporary attachment. */ 4 private_line bit (1), /* ON means private_line sync modem in use */ 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 4 autobaud bit (1), /* ON means auto baud detection this channel */ 4 generic_destination_present bit (1), /* ON means that the initial_command field contains a generic destination to match on dial_out or priv attach */ 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 4 pado bit (9) ) unaligned, 2 initial_command char (64), /* pseudo first input line */ /**** The following variables represent dynamic control info, and are used mostly by dialup_ and asu_ */ 2 event fixed bin (71), /* event call channel for channel events */ 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 2 count fixed bin (17) unal, /* How many login tries he's had. */ 2 dialup_flags unal, /* flag bits for dialup to maintain */ 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ /* 0 = dialup_, 1 = mc_tty_ */ 3 save_arg bit (1) unal, /* -save login arg given */ 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 3 detach_after_hangup bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 3 leave_edited bit (1) unal, /* user control of edited mode */ 3 hold_arg bit (1) unal, /* -hold arg given */ 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 3 immediate_arg bit (1) unal, /* -immediate arg given */ 3 current_access_class_valid bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 3 pad bit (7) unal, 2 twx fixed bin, /* channel device index */ 2 state fixed bin, /* channel state */ 2 tty_id_code char (4), /* channel id (answerback) */ 2 current_terminal_type char (32) unal, /* most recently-set terminal type */ 2 process ptr unal, /* ptr to ATE owning this channel */ 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. We do not yet define multi-class connections, but we will someday. */ 2 disconnected_ate_index fixed bin (17) unal, /* index of ate of disconnected process */ 2 dial_ctl_ring fixed bin (3) unsigned unaligned, /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 2 pad3 bit (14) unaligned, /**** The following variables are kept for metering purposes. */ 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 2 n_logins fixed bin, /* number of login sessions on this channel */ 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 2 dialup_time fixed bin (71), /* time of present dialup */ 2 disconnected_proc_command fixed bin (12) unsigned unal, /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 2 disconnected_proc_number fixed bin (12) unsigned unal, /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 2 n_disconnected_procs fixed bin (12) unsigned unal, /* number of disconnected processes that user has */ 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ /**** really belong in the mpxe, but it is full up, and the cdte ****/ /**** had the space. */ 2 threads aligned like channel_threads, /**** The use name is that of the user who gave the dial or slave ****/ /**** preaccess request. ****/ 2 user_name unaligned, 3 person char (20) unaligned, 3 project char (9) unaligned, 3 pad char (3) unaligned, /* no tag */ 2 iocbp ptr unaligned; /* 104 words */ dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, overlays initial_command field for slave and autocall lines */ %page; dcl 1 fnpe based (fnpep) aligned, /* an FNP */ /* These variables are filled in from the CMF */ 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 2 memory fixed bin, /* amount of memory on this FNP */ 2 nlslas fixed bin, /* number of lslas on this FNP */ 2 nhslas fixed bin, /* number of hslas on this FNP */ 2 service_type fixed bin, /* service type */ 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ /**** The following are used during system operation to remember the state of the FNP */ 2 boot_segp ptr, /* ptr to seg used for bootload */ 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 2 mpxe like mpxe, /* standard multiplexer data */ 2 threads aligned like channel_threads, /* same mpx threads as channel */ 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ /* This structure describes the data necessary to control a multiplexer. For FNP's., a copy appears in the fnpe. For communications lines, it overlays the initial_command field in the cdte. */ dcl 1 mpxe based (mpxep) aligned, 2 state fixed bin, /* current state, up, down, loading */ 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 2 n_bootloads fixed bin, /* count of load attempts */ 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 2 time_load_start fixed bin (71), /* time current load started */ 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 2 flags unal, 3 go bit (1), /* start MPX after it loads */ 3 listening bit (1), /* listen has been done on subchannels */ 3 check bit (1), /* loaded with check option */ 3 retry_load bit (1), /* reload if load fails */ 3 pad1 bit (32), 2 pad2 (2) fixed bin; /* pad to 16 words */ /* These threads define the tree of multiplexers in the cdt. */ /* next_sister and prev_sister link nodes at the same level, ordered */ /* by alpha sort order of the channel name. Daughter points to the */ /* first child of this node, if any. Daughter count is the number */ /* of children, as a consistency check. Mother is a back pointer to */ /* the parent, present in all the children, not just the first. */ /* threads are cdt indexes. If positive, they index the cdt_entry array */ /* in cdt, if negative, they are the negative of an index into the fnp_entry */ /* array. If zero, they refer to the top of the non-fnp mpx tree. */ dcl 1 channel_threads aligned based, 2 next_sister fixed bin unaligned, 2 prev_sister fixed bin unaligned, 2 daughter fixed bin unaligned, 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 2 pad bit (18) unaligned, 2 daughter_count fixed bin unaligned; /* Values for cdte.service_type field */ dcl ( ANS_SERVICE init (1), /* login or dial */ FTP_SERVICE init (2), /* file transfer service */ MC_SERVICE init (3), /* message coordinator */ SLAVE_SERVICE init (4), /* special channel */ DIAL_SERVICE init (5), /* transient state */ DIAL_OUT_SERVICE init (6), /* auto call line */ MPX_SERVICE init (8), /* ring0 demultiplexed line */ TANDD_SERVICE init (9) /* transient state, attached for T & D */ ) fixed bin internal static options (constant); /* Values for service type in both cdte and fnpe */ dcl ( INACTIVE init (7), /* not to be used, even though configured */ ACTIVE init (1) ) /* for FNP only, configured and to be used */ fixed bin internal static options (constant); /* Value for both cdte.in_use and fnpe.state */ dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); /* was not configured at Multics bootload time */ /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ /* Value for cdte.in_use */ dcl CHANNEL_DELETED fixed bin int static init (-2); /* channel deleted by CDT installation */ /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ /* Values for mpxe.state field */ dcl ( FNP_FREE init (0), /* this fnpe is not used */ FNP_UNKNOWN init (1), /* FNP is in some unknown state */ FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ FNP_BOOT init (3), /* FNP has been booted, but no response yet */ FNP_UP init (4) /* FNP is up and running fine */ ) fixed bin internal static options (constant); dcl ( MPX_FREE init (0), /* this mpxe is not used */ MPX_UNKNOWN init (1), /* MPX is in some unknown state */ MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ MPX_BOOT init (3), /* MPX has been booted, but no response yet */ MPX_UP init (4) /* MPX is up and running fine */ ) fixed bin internal static options (constant); %include fnp_types; /* END INCLUDE FILE ... cdt.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 */