Print this page
10530 Convert prnio(7I) to mandoc

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man7i/prnio.7i
          +++ new/usr/src/man/man7i/prnio.7i
   1      -'\" te
   2    1  .\"  Copyright (c) 20002 Sun Microsystems, Inc.
   3    2  .\"  All Rights Reserved.
   4      -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   5      -.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
   6      -.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
   7      -.TH PRNIO 7I "Jan 2, 2002"
   8      -.SH NAME
   9      -prnio \- generic printer interface
  10      -.SH SYNOPSIS
  11      -.nf
  12      -\fB#include <sys/prnio.h>\fR
  13      -.fi
  14      -
  15      -.SH DESCRIPTION
  16      -The \fBprnio\fR generic printer interface defines ioctl commands and data
        3 +.\"  Copyright 2018, Joyent, Inc.
        4 +.\" The contents of this file are subject to the terms of the
        5 +.\" Common Development and Distribution License (the "License").
        6 +.\" You may not use this file except in compliance with the License.
        7 +.\"
        8 +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
        9 +.\" or http://www.opensolaris.org/os/licensing.
       10 +.\" See the License for the specific language governing permissions
       11 +.\" and limitations under the License.
       12 +.\"
       13 +.\" When distributing Covered Code, include this CDDL HEADER in each
       14 +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
       15 +.\" If applicable, add the following below this CDDL HEADER, with the
       16 +.\" fields enclosed by brackets "[]" replaced with your own identifying
       17 +.\" information: Portions Copyright [yyyy] [name of copyright owner]
       18 +.Dd August 31, 2018
       19 +.Dt PRNIO 7I
       20 +.Os
       21 +.Sh NAME
       22 +.Nm prnio
       23 +.Nd generic printer interface
       24 +.Sh SYNOPSIS
       25 +.In sys/prnio.h
       26 +.Sh DESCRIPTION
       27 +The
       28 +.Nm
       29 +generic printer interface defines ioctl commands and data
  17   30  structures for printer device drivers.
  18      -.sp
  19      -.LP
  20      -\fBprnio\fR defines and provides facilities for five basic phases of the
  21      -printing process:
  22      -.RS +4
  23      -.TP
  24      -.ie t \(bu
  25      -.el o
       31 +.Pp
       32 +.Nm
       33 +defines and provides facilities for five basic phases of the printing process:
       34 +.Bl -bullet -offset indent
       35 +.It
  26   36  Identification \(em Retrieve device information/attributes
  27      -.RE
  28      -.RS +4
  29      -.TP
  30      -.ie t \(bu
  31      -.el o
       37 +.It
  32   38  Setup \(em Set device attributes
  33      -.RE
  34      -.RS +4
  35      -.TP
  36      -.ie t \(bu
  37      -.el o
       39 +.It
  38   40  Transfer \(em Transfer data to or from the device
  39      -.RE
  40      -.RS +4
  41      -.TP
  42      -.ie t \(bu
  43      -.el o
       41 +.It
  44   42  Cleanup \(em Transfer phase conclusion
  45      -.RE
  46      -.RS +4
  47      -.TP
  48      -.ie t \(bu
  49      -.el o
       43 +.It
  50   44  Abort \(em Transfer phase interruption
  51      -.RE
  52      -.sp
  53      -.LP
       45 +.El
       46 +.Pp
  54   47  During the Identification phase, the application retrieves a set of device
  55      -capabilities and additional information using the \fBPRNIOC_GET_IFCAP\fR,
  56      -\fBPRNIOC_GET_STATUS\fR, \fBPRNIOC_GET_TIMEOUTS\fR, \fBPRNIOC_GET_IFINFO\fR and
  57      -\fBPRNIOC_GET_1284_DEVID\fR commands.
  58      -.sp
  59      -.LP
       48 +capabilities and additional information using the
       49 +.Dv PRNIOC_GET_IFCAP ,
       50 +.Dv PRNIOC_GET_STATUS ,
       51 +.Dv PRNIOC_GET_TIMEOUTS ,
       52 +.Dv PRNIOC_GET_IFINFO ,
       53 +and
       54 +.Dv PRNIOC_GET_1284_DEVID
       55 +commands.
       56 +.Pp
  60   57  During the Setup phase the application sets some interface attributes and
  61      -probably resets the printer as described in the \fBPRNIOC_SET_IFCAP\fR,
  62      -\fBPRNIOC_SET_TIMEOUTS\fR and \fBPRNIOC_RESET\fR sections.
  63      -.sp
  64      -.LP
       58 +probably resets the printer as described in the
       59 +.Dv PRNIOC_SET_IFCAP ,
       60 +.Dv PRNIOC_SET_TIMEOUTS ,
       61 +and
       62 +.Dv PRNIOC_RESET
       63 +sections.
       64 +.Pp
  65   65  During the Transfer phase, data is transferred in a forward (host to
  66      -peripheral) or reverse direction (peripheral to host). Transfer is accomplished
  67      -using \fBwrite\fR(2) and \fBread\fR(2) system calls. For \fBprnio\fR compliant
       66 +peripheral) or reverse direction (peripheral to host).
       67 +Transfer is accomplished
       68 +using
       69 +.Xr write 2
       70 +and
       71 +.Xr read 2
       72 +system calls.
       73 +For
       74 +.Nm
       75 +compliant
  68   76  printer drivers, forward transfer support is mandatory, while reverse transfer
  69      -support is optional. Applications can also use \fBPRNIOC_GET_STATUS\fR and
  70      -\fBPRNIOC_GET_1284_STATUS\fR commands during the transfer to monitor the device
  71      -state.
  72      -.sp
  73      -.LP
  74      -The Cleanup phase is accomplished by closing the device using \fBclose\fR(2).
  75      -Device drivers supporting \fBprnio\fR may set non-zero error code as
  76      -appropriate. Applications should explicitly \fBclose\fR(2) a device before
  77      -exiting and check \fBerrno\fR value.
  78      -.sp
  79      -.LP
  80      -The Abort phase is accomplished by interrupting the \fBwrite\fR(2) and
  81      -\fBread\fR(2) system calls. The application can perform some additional cleanup
  82      -during the Abort phase as described in \fBPRNIOC_GET_IFCAP\fR section.
  83      -.SH IOCTLS
  84      -.ne 2
  85      -.na
  86      -\fB\fBPRNIOC_GET_IFCAP\fR\fR
  87      -.ad
  88      -.RS 21n
  89      -Application can retrieve printer interface capabilities using this command. The
  90      -\fBioctl\fR(2) argument is a pointer to \fBuint_t\fR, a bit field representing
  91      -a set of properties and services provided by a printer driver. Set bit means
  92      -supported capability. The following values are defined:
  93      -.br
  94      -.in +2
  95      -\fBPRN_BIDI\fR - When this bit is set,  the interface operates in a
  96      -bidirectional mode,  instead of forward-only mode.
  97      -.in -2
  98      -.br
  99      -.in +2
 100      -\fBPRN_HOTPLUG\fR - If this bit is set, the interface allows device
 101      -hot-plugging.
 102      -.in -2
 103      -.br
 104      -.in +2
 105      -\fBPRN_1284_DEVID\fR - If this bit is set, the device is capable of returning
 106      -\fI1284\fR device ID (see \fBPRNIOC_GET_1284_DEVID\fR.)
 107      -.in -2
 108      -.br
 109      -.in +2
 110      -\fBPRN_1284_STATUS\fR - If this bit is set, the device driver can return device
 111      -status lines (see \fBPRNIOC_GET_1284_STATUS\fR). Some devices support this
       77 +support is optional.
       78 +Applications can also use
       79 +.Dv PRNIOC_GET_STATUS
       80 +and
       81 +.Dv PRNIOC_GET_1284_STATUS
       82 +commands during the transfer to monitor the device state.
       83 +.Pp
       84 +The Cleanup phase is accomplished by closing the device using
       85 +.Xr close 2 .
       86 +Device drivers supporting
       87 +.Nm
       88 +may set non-zero error code as appropriate.
       89 +Applications should explicitly
       90 +.Xr close 2
       91 +a device before
       92 +exiting and check
       93 +.Va errno
       94 +value.
       95 +.Pp
       96 +The Abort phase is accomplished by interrupting the
       97 +.Xr write 2
       98 +and
       99 +.Xr read 2
      100 +system calls.
      101 +The application can perform some additional cleanup
      102 +during the Abort phase as described in
      103 +.Dv PRNIOC_GET_IFCAP
      104 +section.
      105 +.Sh IOCTLS
      106 +.Bl -tag -width PRNIOC_GET_IFINFO
      107 +.It Dv PRNIOC_GET_IFCAP
      108 +Application can retrieve printer interface capabilities using this command.
      109 +The
      110 +.Xr ioctl 2
      111 +argument is a pointer to
      112 +.Vt uint_t ,
      113 +a bit field representing
      114 +a set of properties and services provided by a printer driver.
      115 +Set bit means supported capability.
      116 +The following values are defined:
      117 +.Bl -tag -width PRN_1284_STATUS
      118 +.It Dv PRN_BIDI
      119 +When this bit is set, the interface operates in a
      120 +bidirectional mode, instead of forward-only mode.
      121 +.It Dv PRN_HOTPLUG
      122 +If this bit is set, the interface allows device hot-plugging.
      123 +.It Dv PRN_1284_DEVID
      124 +If this bit is set, the device is capable of returning
      125 +.Em 1284
      126 +device ID (see
      127 +.Dv PRNIOC_GET_1284_DEVID ) .
      128 +.It Dv PRN_1284_STATUS
      129 +If this bit is set, the device driver can return device
      130 +status lines (see
      131 +.Dv PRNIOC_GET_1284_STATUS ) .
      132 +Some devices support this
 112  133  ioctl in unidirectional mode only.
 113      -.in -2
 114      -.br
 115      -.in +2
 116      -\fBPRN_TIMEOUTS\fR - If this bit is set the peripheral may stall during the
 117      -transfer phase and the driver can timeout and return from the \fBwrite\fR(2)
 118      -and \fBread\fR(2) returning the number of bytes that have been transferred. If
 119      -\fBPRN_TIMEOUTS\fR is set, the driver supports this functionality and the
 120      -timeout values can be retrieved and modified via the \fBPRNIOC_GET_TIMEOUTS\fR
 121      -and \fBPRNIOC_SET_TIMEOUTS\fR ioctls. Otherwise, applications can implement
      134 +.It Dv PRN_TIMEOUTS
      135 +If this bit is set the peripheral may stall during the
      136 +transfer phase and the driver can timeout and return from the
      137 +.Xr write 2
      138 +and
      139 +.Xr read 2
      140 +returning the number of bytes that have been transferred.
      141 +If
      142 +.Dv PRN_TIMEOUTS
      143 +is set, the driver supports this functionality and the
      144 +timeout values can be retrieved and modified via the
      145 +.Dv PRNIOC_GET_TIMEOUTS
      146 +and
      147 +.Dv PRNIOC_SET_TIMEOUTS
      148 +ioctls.
      149 +Otherwise, applications can implement
 122  150  their own timeouts and abort phase.
 123      -.in -2
 124      -.br
 125      -.in +2
 126      -\fBPRN_STREAMS\fR - This bit impacts the application abort phase behaviour. If
 127      -the device claimed \fBPRN_STREAMS\fR capability, the application must issue an
 128      -\fBI_FLUSH\fR \fBioctl\fR(2) before \fBclose\fR(2) to dismiss the untransferred
 129      -data. Only STREAMS drivers can support this capability.
 130      -.in -2
 131      -.RE
 132      -
 133      -.sp
 134      -.ne 2
 135      -.na
 136      -\fBPRNIOC_SET_IFCAP\fR
 137      -.ad
 138      -.RS 21n
 139      -This ioctl can be used to change interface capabilities. The argument is a
 140      -pointer to \fBuint_t\fR bit field that is described in detail in the
 141      -\fBPRNIOC_GET_IFCAP\fR section. Capabilities should be set one at a time;
 142      -otherwise the command will return \fBEINVAL\fR. The following capabilities can
 143      -be changed by this ioctl:
 144      -.br
 145      -.in +2
 146      -\fBPRN_BIDI\fR - When this capability is set, the interface operates in a
 147      -bidirectional mode, instead of forward-only mode. Devices that support only one
 148      -mode will not return error; applications should use \fBPRNIOC_GET_IFCAP\fR to
 149      -check if the mode was successfully changed. Because some capabilities may be
      151 +.It Dv PRN_STREAMS
      152 +This bit impacts the application abort phase behaviour.
      153 +If the device claimed
      154 +.Dv PRN_STREAMS
      155 +capability, the application must issue an
      156 +.Dv I_FLUSH
      157 +.Xr ioctl 2
      158 +before
      159 +.Xr close 2
      160 +to dismiss the untransferred
      161 +data.
      162 +Only STREAMS drivers can support this capability.
      163 +.El
      164 +.It Dv PRNIOC_SET_IFCAP
      165 +This ioctl can be used to change interface capabilities.
      166 +The argument is a pointer to
      167 +.Vt uint_t
      168 +bit field that is described in detail in the
      169 +.Dv PRNIOC_GET_IFCAP
      170 +section.
      171 +Capabilities should be set one at a time;
      172 +otherwise the command will return
      173 +.Er EINVAL .
      174 +The following capabilities can be changed by this ioctl:
      175 +.Bl -tag -width PRN_BIDI
      176 +.It Dv PRN_BIDI
      177 +When this capability is set, the interface operates in a
      178 +bidirectional mode, instead of forward-only mode.
      179 +Devices that support only one
      180 +mode will not return error; applications should use
      181 +.Dv PRNIOC_GET_IFCAP
      182 +to check if the mode was successfully changed.
      183 +Because some capabilities may be
 150  184  altered as a side effect of changing other capabilities, this command should be
 151      -followed by \fBPRNIOC_GET_IFCAP\fR.
 152      -.in -2
 153      -.RE
 154      -
 155      -.sp
 156      -.ne 2
 157      -.na
 158      -\fBPRNIOC_GET_IFINFO\fR
 159      -.ad
 160      -.RS 21n
      185 +followed by
      186 +.Dv PRNIOC_GET_IFCAP .
      187 +.El
      188 +.It Dv PRNIOC_GET_IFINFO
 161  189  This command can be used to retrieve printer interface info string, which is an
 162      -arbitrary format string usually describing the bus type. The argument is a
 163      -pointer to \fBstruct prn_interface_info\fR as described below.
 164      -.RE
 165      -
 166      -.sp
 167      -.in +2
 168      -.nf
      190 +arbitrary format string usually describing the bus type.
      191 +The argument is a
      192 +pointer to
      193 +.Vt struct prn_interface_info
      194 +as described below.
      195 +.Bd -literal -offset 2n
 169  196  struct prn_interface_info {
 170  197    uint_t          if_len;   /* length of buffer */
 171  198    uint_t          if_rlen;  /* actual info length */
 172      -  char   *if_data;  /* buffer address */
      199 +  char   *if_data;          /* buffer address */
 173  200  };
 174      -.fi
 175      -.in -2
 176      -
 177      -.sp
 178      -.LP
 179      -The application allocates a buffer and sets \fBif_data\fR and \fBif_len\fR
 180      -values to its address and length, respectively. The driver returns the string
 181      -to this buffer and sets  \fBif_len\fR to its length. If   \fBif_len\fR is less
 182      -that \fBif_rlen\fR, the driver must return the first \fBif_len\fR bytes of the
 183      -string. The application  may then repeat the command with a bigger buffer.
 184      -.sp
 185      -.LP
 186      -Although \fBprnio\fR does not limit the contents of the interface info string,
 187      -some values are recommended and defined in <\fBsys/prnio.h\fR> by the following
 188      -macros:
 189      -.br
 190      -.in +2
 191      -\fBPRN_PARALLEL\fR - Centronics or \fIIEEE 1284\fR compatible devices
 192      -.in -2
 193      -.br
 194      -.in +2
 195      -\fBPRN_SERIAL\fR - EIA-232/EIA-485 serial ports
 196      -.in -2
 197      -.br
 198      -.in +2
 199      -\fBPRN_USB\fR - Universal Serial Bus printers
 200      -.in -2
 201      -.br
 202      -.in +2
 203      -\fBPRN_1394\fR - \fIIEEE 1394\fR peripherals
 204      -.in -2
 205      -.br
 206      -.in +2
      201 +.Ed
      202 +.Pp
      203 +The application allocates a buffer and sets
      204 +.Fa if_data
      205 +and
      206 +.Fa if_len
      207 +values to its address and length, respectively.
      208 +The driver returns the string
      209 +to this buffer and sets
      210 +.Fa if_len
      211 +to its length.
      212 +If
      213 +.Fa if_len
      214 +is less
      215 +than
      216 +.Fa if_rlen ,
      217 +the driver must return the first
      218 +.Fa if_len
      219 +bytes of the string.
      220 +The application may then repeat the command with a bigger buffer.
      221 +.Pp
      222 +Although
      223 +.Nm
      224 +does not limit the contents of the interface info string,
      225 +some values are recommended and defined in
      226 +.In sys/prnio.h
      227 +by the following macros:
      228 +.Pp
      229 +.Bl -tag -width PRN_PARALLEL -compact
      230 +.It Dv PRN_PARALLEL
      231 +Centronics or
      232 +.Em IEEE 1284
      233 +compatible devices
      234 +.It Dv PRN_SERIAL
      235 +EIA-232/EIA-485 serial ports
      236 +.It Dv PRN_USB
      237 +Universal Serial Bus printers
      238 +.It Dv PRN_1394
      239 +.Em IEEE 1394
      240 +peripherals
      241 +.El
      242 +.Pp
 207  243  Printer interface info string is for information only: no implications should
 208  244  be made from its value.
 209      -.in -2
 210      -.sp
 211      -.ne 2
 212      -.na
 213      -\fBPRNIOC_RESET\fR
 214      -.ad
 215      -.RS 25n
      245 +.It Dv PRNIOC_RESET
 216  246  Some applications may want to reset the printer state during Setup and/or
 217      -Cleanup phase using \fBPRNIOC_RESET\fR command. Reset semantics are
      247 +Cleanup phase using
      248 +.Dv PRNIOC_RESET
      249 +command.
      250 +Reset semantics are
 218  251  device-specific, and in general, applications using this command should be
 219  252  aware of the printer type.
 220      -.sp
 221      -Each \fBprnio\fR compliant driver is required to accept this request, although
 222      -performed actions are completely driver-dependent. More information on the
 223      -\fBPRNIOC_RESET\fR implementation for the particular driver is available in the
      253 +.Pp
      254 +Each
      255 +.Nm
      256 +compliant driver is required to accept this request, although
      257 +performed actions are completely driver-dependent.
      258 +More information on the
      259 +.Dv PRNIOC_RESET
      260 +implementation for the particular driver is available in the
 224  261  corresponding man page and printer manual.
 225      -.RE
 226      -
 227      -.sp
 228      -.ne 2
 229      -.na
 230      -\fBPRNIOC_GET_1284_DEVID\fR
 231      -.ad
 232      -.RS 25n
 233      -This command can be used to retrieve printer device ID as defined by \fIIEEE
 234      -1284-1994\fR.The \fBioctl\fR(2) argument is a pointer to \fBstruct
 235      -prn_1284_device_id\fR as described below.
 236      -.RE
 237      -
 238      -.sp
 239      -.in +2
 240      -.nf
      262 +.It Dv PRNIOC_GET_1284_DEVID
      263 +This command can be used to retrieve printer device ID as defined by
      264 +.Em IEEE 1284-1994 .
      265 +The
      266 +.Xr ioctl 2
      267 +argument is a pointer to
      268 +.Vt struct prn_1284_device_id
      269 +as described below.
      270 +.Bd -literal -offset 2n
 241  271  struct prn_1284_device_id {
 242  272     uint_t         id_len;   /* length of buffer */
 243  273     uint_t         id_rlen;  /* actual ID length */
 244      -   char      *id_data;  /* buffer address */
      274 +   char           *id_data; /* buffer address */
 245  275  };
 246      -.fi
 247      -.in -2
 248      -
 249      -.sp
 250      -.LP
      276 +.Ed
      277 +.Pp
 251  278  For convenience, the two-byte length field is not considered part of device ID
 252      -string and is not returned in the user buffer. Instead, \fBid_rlen\fR  value
 253      -shall be set to (length - 2) by the driver, where length is the ID length field
 254      -value. If buffer length is less than \fBid_rlen\fR, the driver returns the
 255      -first \fBid_len\fR bytes of the ID.
 256      -.sp
 257      -.LP
      279 +string and is not returned in the user buffer.
      280 +Instead,
      281 +.Fa id_rlen
      282 +value shall be set to (length - 2) by the driver, where length is the ID
      283 +length field value.
      284 +If buffer length is less than
      285 +.Fa id_rlen ,
      286 +the driver returns the first
      287 +.Fa id_len
      288 +bytes of the ID.
      289 +.Pp
 258  290  The printer driver must return the most up-to-date value of the device ID.
 259      -.sp
 260      -.ne 2
 261      -.na
 262      -\fBPRNIOC_GET_STATUS\fR
 263      -.ad
 264      -.RS 21n
 265      -This command can be used by applications to retrieve current device status. The
 266      -argument is a pointer to \fBuint_t\fR, where the status word is returned.
      291 +.It Dv PRNIOC_GET_STATUS
      292 +This command can be used by applications to retrieve current device status.
      293 +The argument is a pointer to
      294 +.Vt uint_t ,
      295 +where the status word is returned.
 267  296  Status is a combination of the following bits:
 268      -.RE
 269      -
 270      -.in +2
 271      -\fBPRN_ONLINE\fR - For devices that support \fBPRN_HOTPLUG\fR capability,
 272      -this bit is set when the device is online, otherwise the device is offline.
 273      -Devices without \fBPRN_HOTPLUG\fR support should always have this bit set.
 274      -.in -2
 275      -.br
 276      -.in +2
 277      -\fBPRN_READY\fR - This bit indicates if the device is ready to receive/send
 278      -data. Applications may use this bit for an outbound flow control
 279      -.in -2
 280      -.sp
 281      -.ne 2
 282      -.na
 283      -\fB\fBPRNIOC_GET_1284_STATUS\fR\fR
 284      -.ad
 285      -.RS 26n
 286      -Devices that support \fBPRN_1284_STATUS\fR capability accept this ioctl to
 287      -retrieve the device status lines defined in \fIIEEE 1284\fR for use in
 288      -Compatibility mode. The following bits may be set by the driver:
 289      -.br
 290      -.in +2
 291      -\fBPRN_1284_NOFAULT\fR - Device is not in error state
 292      -.in -2
 293      -.br
 294      -.in +2
 295      -\fBPRN_1284_SELECT\fR - Device is selected
 296      -.in -2
 297      -.br
 298      -.in +2
 299      -\fBPRN_1284_PE\fR - Paper error
 300      -.in -2
 301      -.br
 302      -.in +2
 303      -\fBPRN_1284_BUSY\fR - Device is busy
 304      -.in -2
 305      -.RE
 306      -
 307      -.sp
 308      -.ne 2
 309      -.na
 310      -\fB\fBPRNIOC_GET_TIMEOUTS\fR\fR
 311      -.ad
 312      -.RS 26n
 313      -This command  retrieves current transfer timeout values for  the driver. The
 314      -argument is  a pointer to \fBstruct prn_timeouts\fR as described below.
 315      -.RE
 316      -
 317      -.sp
 318      -.in +2
 319      -.nf
      297 +.Bl -tag -width PRN_ONLINE
      298 +.It Dv PRN_ONLINE
      299 +For devices that support
      300 +.Dv PRN_HOTPLUG
      301 +capability, this bit is set when the device is online, otherwise the device is
      302 +offline.
      303 +Devices without
      304 +.Dv PRN_HOTPLUG
      305 +support should always have this bit set.
      306 +.It Dv PRN_READY
      307 +This bit indicates if the device is ready to receive/send data.
      308 +Applications may use this bit for an outbound flow control.
      309 +.El
      310 +.It Dv PRNIOC_GET_1284_STATUS
      311 +Devices that support
      312 +.Dv PRN_1284_STATUS
      313 +capability accept this ioctl to
      314 +retrieve the device status lines defined in
      315 +.Em IEEE 1284
      316 +for use in Compatibility mode.
      317 +The following bits may be set by the driver:
      318 +.Pp
      319 +.Bl -tag -width PRN_1284_NOFAULT -compact
      320 +.It Dv PRN_1284_NOFAULT
      321 +Device is not in error state
      322 +.It Dv PRN_1284_SELECT
      323 +Device is selected
      324 +.It Dv PRN_1284_PE
      325 +Paper error
      326 +.It Dv PRN_1284_BUSY
      327 +Device is busy
      328 +.El
      329 +.It Dv PRNIOC_GET_TIMEOUTS
      330 +This command retrieves current transfer timeout values for the driver.
      331 +The argument is a pointer to
      332 +.Vt struct prn_timeouts
      333 +as described below.
      334 +.Bd -literal -offset 2n
 320  335  struct prn_timeouts {
 321      -  uint_t        tmo_forward;  /* forward transfer timeout */
 322      -  uint_t        tmo_reverse;  /* reverse transfer timeout */
 323      -        };
 324      -.fi
 325      -.in -2
 326      -
 327      -.sp
 328      -.LP
 329      -\fBtmo_forward\fR and \fBtmo_reverse\fR define forward and reverse transfer
 330      -timeouts in seconds. This command is only valid for drivers that support
 331      -\fBPRN_TIMEOUTS\fR capability.
 332      -.sp
 333      -.ne 2
 334      -.na
 335      -\fB\fBPRNIOC_SET_TIMEOUTS\fR\fR
 336      -.ad
 337      -.RS 23n
 338      -This command sets current transfer  timeout values for the driver. The
 339      -argument is  a pointer to \fBstruct prn_timeouts\fR. See
 340      -\fBPRNIOC_GET_TIMEOUTS\fR for description of  this structure. This  command is
 341      -only valid for drivers that support \fBPRN_TIMEOUTS\fR capability.
 342      -.RE
 343      -
 344      -.SH ATTRIBUTES
 345      -See \fBattributes\fR(5) for descriptions of the following attributes:
 346      -.sp
 347      -
 348      -.sp
 349      -.TS
 350      -box;
 351      -c | c
 352      -l | l .
 353      -ATTRIBUTE TYPE  ATTRIBUTE VALUE
 354      -_
 355      -Architecture     SPARC, IA
 356      -_
 357      -Interface Stability     Evolving
 358      -.TE
 359      -
 360      -.SH SEE ALSO
 361      -\fBclose\fR(2), \fBioctl\fR(2), \fBread\fR(2), \fBwrite\fR(2),
 362      -\fBattributes\fR(5), \fBecpp\fR(7D), \fBusbprn\fR(7D), \fBlp\fR(7D)
 363      -.sp
 364      -.LP
 365      -\fIIEEE Std 1284-1994\fR
      336 +    uint_t tmo_forward; /* forward transfer timeout */
      337 +    uint_t tmo_reverse; /* reverse transfer timeout */
      338 +};
      339 +.Ed
      340 +.Pp
      341 +.Fa tmo_forward
      342 +and
      343 +.Fa tmo_reverse
      344 +define forward and reverse transfer timeouts in seconds.
      345 +This command is only valid for drivers that support
      346 +.Dv PRN_TIMEOUTS
      347 +capability.
      348 +.It Dv PRNIOC_SET_TIMEOUTS
      349 +This command sets current transfer timeout values for the driver.
      350 +The argument is a pointer to
      351 +.Vt struct prn_timeouts .
      352 +See
      353 +.Sx PRNIOC_GET_TIMEOUTS
      354 +for description of this structure.
      355 +This command is only valid for drivers that support
      356 +.Dv PRN_TIMEOUTS
      357 +capability.
      358 +.El
      359 +.Sh SEE ALSO
      360 +.Xr close 2 ,
      361 +.Xr ioctl 2 ,
      362 +.Xr read 2 ,
      363 +.Xr write 2 ,
      364 +.Xr attributes 5 ,
      365 +.Xr ecpp 7D ,
      366 +.Xr lp 7D ,
      367 +.Xr usbprn 7D
      368 +.Rs
      369 +.%T IEEE Std 1284-1994
      370 +.Re
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX