1 /* BEGIN INCLUDE FILE...iodd_static.incl.pl1 */ 2 3 4 /****^ HISTORY COMMENTS: 5 1) change(85-02-14,Homan), approve(87-04-06,MCR7656), 6 audit(87-06-13,Beattie), install(87-08-06,MR12.1-1068): 7 Add support for logout_on_hangup option. 8 2) change(88-02-18,Brunelle), approve(88-08-31,MCR7911), 9 audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 10 Add head/tail_sheet entry variables and paper_type variable. 11 END HISTORY COMMENTS */ 12 13 /* format: style4 */ 14 15 dcl stat_p int static ptr; 16 17 dcl 1 iodd_static based (stat_p) aligned, 18 19 /* The first part is set only once for a device driver */ 20 21 2 ithp ptr, /* pointer to iod tables header */ 22 2 ltp ptr, /* pointer to line table */ 23 2 idtp ptr, /* pointer to device tab */ 24 2 mdtp ptr, /* pointer to minor device table */ 25 2 qgtp ptr, /* pointer to q_group table */ 26 2 dev_class_ptr ptr, /* pointer to device class table */ 27 2 text_strings_ptr ptr, /* pointer to iod tables text strings */ 28 2 driver_list_ptr ptr, /* pointer to list of driver status seg pointers */ 29 2 chan_list_ptr ptr, /* pointer to list of event channels for blocking */ 30 2 sys_dir_ptr ptr, /* ptr to 168 char string defining sys_dir */ 31 2 coord_proc_id bit (36), /* process id of coordinator for wakeups */ 32 2 driver_proc_id bit (36), /* process id of driver for locking */ 33 2 re_init_label label, /* where to go after "re_init" or "slave_logout" */ 34 2 no_coord_label label, /* where to go for a no_coord condition */ 35 2 log_stream char (32), /* stream name used for log output */ 36 2 master_input char (32), /* master console input stream for commands */ 37 2 master_output char (32), /* master console output stream for messages */ 38 2 master_out ptr, /* master output iocbp */ 39 2 master_in ptr, /* master input iocbp */ 40 2 log_iocbp ptr, /* log output iocbp */ 41 2 error_io ptr, /* error i/o iocbp */ 42 2 dev_io_stream char (32), /* stream used to attach the major device */ 43 2 dev_in_stream char (32), /* input stream if different from dev_io_stream */ 44 2 dev_out_stream char (32), /* output stream if different from dev_io_stream */ 45 2 device_dim char (32), /* dim which drives the major device */ 46 2 attach_name char (32), /* channel or dial id for attaching major device */ 47 2 attach_type fixed bin, /* what previous is: 1 = iom, 2 = tty, 3 = dial, 4 = variable line */ 48 2 dev_dial_id char (8), /* non null if device is to be dialed to driver */ 49 2 line_tab_idx fixed bin, /* for attach type 4, this is the entry index, else 0 */ 50 2 dial_ev_chan fixed bin (71), /* IPC chan for dial control */ 51 2 major_device char (32), /* name of the major device */ 52 2 major_args unaligned like text_offset, /* descriptive string for the major device */ 53 2 coord_cmd_chan fixed bin (71), /* IPC chan to send commands to coord through coord_comm.ms */ 54 2 cmd_ack_chan fixed bin (71), /* IPC chan for coord to return command status code */ 55 2 timer_chan fixed bin (71), /* IPC chan for unblocking if nothing happens */ 56 2 io_daemon_version char (8), /* current version number of the io daemon driver */ 57 2 extra_static (8) fixed bin (35), /* unused space - non_dynamic */ 58 2 dummy_ptr ptr, /* a dummy pointer for the driver module */ 59 60 /* driver module entrypoints are defined by the following entry variables */ 61 62 2 driver_init entry variable options (variable), 63 2 driver_request entry variable options (variable), 64 2 driver_command entry variable options (variable), 65 2 driver_default_handler entry variable options (variable), 66 67 /* entrypoints for head/tail_sheet_ entries */ 68 2 print_head_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 69 2 print_head_separator entry (ptr, ptr, char (*), fixed bin (35)) variable, 70 2 print_tail_sheet entry (ptr, ptr, ptr, fixed bin (35)) variable, 71 72 2 paper_type fixed bin, /* type of paper being used */ 73 /* 1 = single sheet */ 74 /* 2 = continuous forms */ 75 76 /* The remainder of the data may be dynamic during the device driver's existence */ 77 78 2 extra_dynamic (14) fixed bin (35), /* unused space - dynamic */ 79 2 auto_logout_interval fixed bin, /* minutes to wait for inactivity logout */ 80 2 requests_til_cmd fixed bin, /* number of requests to go before returning to cmd level */ 81 2 assigned_devices fixed bin, /* number of minor devices assigned to major device */ 82 2 current_devices fixed bin, /* number of devices currently active in process */ 83 2 output_device char (32), /* name of minor device currently in use */ 84 2 wakeup_time fixed bin (71), /* time interval between timer wakeups */ 85 2 auto_start_delay fixed bin (71), /* time to wait before performing an auto-start after quit */ 86 2 driver_ptr ptr, /* pointer to driver status seg currently in use */ 87 2 segptr ptr, /* ptr to current user segment being processed */ 88 2 flags, /* control flags */ 89 3 initialized bit (1) unal, /* all driver data bases are initialized */ 90 3 test_entry bit (1) unal, /* driver test entry was called */ 91 3 request_in_progress bit (1) unal, /* driver executing a request */ 92 3 recursion_flag bit (1) unal, /* recursive unclaimed signal */ 93 3 no_coord_flag bit (1) unal, /* process is ready to accept a no_coord signal */ 94 3 logout_pending bit (1) unal, /* logout after all pending requests are done */ 95 3 master_hold bit (1) unal, /* master_hold at command level */ 96 3 slave_hold bit (1) unal, /* slave hold at command level */ 97 3 step bit (1) unal, /* run in step mode */ 98 3 quit_during_request bit (1) unal, /* a quit occured, don't wait for wakeup */ 99 3 runout_requests bit (1) unal, /* hold after all pending requests are done */ 100 3 re_init_in_progress bit (1) unal, /* driver processing a re_init signal */ 101 3 quit_signaled bit (1) unal, /* set to "1"b by quit handler for anyone who is curious */ 102 3 auto_logout_pending bit (1) unal, /* inactivity limit exceeded, logout after next wakeup */ 103 3 logout_on_hangup bit (1) unal, /* logout instead of reinit if set */ 104 3 pad bit (21) unal, /* unused space */ 105 2 slave, /* slave control device data (ctl term or remote reader) */ 106 3 slave_input char (32), /* slave input stream name */ 107 3 slave_output char (32), /* slave output stream name */ 108 3 slave_pad fixed bin, /* allocation breakage */ 109 3 slave_in ptr, /* slave input iocbp */ 110 3 slave_out ptr, /* slave output iocbp */ 111 3 slave_ev_chan fixed bin (71), /* event channel the slave device blocks on */ 112 3 active bit (1) unal, /* on if there is a slave */ 113 3 accept_input bit (1) unal, /* on if commands may come from the slave */ 114 3 allow_quits bit (1) unal, /* on if we allow slave to send quits */ 115 3 print_errors bit (1) unal, /* on if errors will be sent to the slave */ 116 3 log_msg bit (1) unal, /* on if log messages are to be sent to the slave */ 117 3 priv1 bit (1) unal, /* driver_module defined slave privileges */ 118 3 priv2 bit (1) unal, 119 3 priv3 bit (1) unal, 120 3 echo_cmd bit (1) unal, /* on if each slave cmd should be written back */ 121 3 slave_bit_pad bit (27) unal, /* unused space */ 122 2 ctl_term, /* control terminal data */ 123 3 ctl_attach_name char (32), /* dial id, tty chan, or mrd_ device */ 124 3 ctl_attach_type fixed bin, /* attach name meaning: 1=line, 2=dial, 3=mrd_source */ 125 3 ctl_pad fixed bin, /* allocation breakage */ 126 3 ctl_dial_chan fixed bin (71), /* ipc event channel for dial comm */ 127 3 ctl_input char (32), /* ctl input stream name */ 128 3 ctl_output char (32), /* ctl output stream name */ 129 3 ctl_io char (32), /* ctl i/o stream name */ 130 3 ctl_dev_dim char (32), /* ctl_io attached with this dim */ 131 3 ctl_ev_chan fixed bin (71), /* IPC event chan ctl term blocks on */ 132 3 ctl_device char (32), /* ctl terminal device name */ 133 3 form_type char (16), /* format type if printing forms */ 134 3 attached bit (1) unal, /* ctl term attached to process */ 135 3 forms bit (1) unal, /* on if printing forms */ 136 3 pad bit (34) unal, 137 2 admin_ec_name char (32), /* name of the ec to use with the "x" command */ 138 2 expansion_space (100) fixed bin; /* reserved space...use at your own risk */ 139 140 /* END INCLUDE FILE ... iodd_static.incl.pl1 */