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 */