pop(7) CLIX pop(7)
NAME
pop - Parallel port driver
DESCRIPTION
The pop driver is the general-purpose interface to the parallel port. It
can be used to send PRINT mode data to devices requiring either Versatec
or Centronics interfaces. The pop driver data can be redirected to
different devices by using a MUX device. The minor device number
corresponds to the MUX port to select; the format of the minor device is
as follows:
__________________________________________________
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|_______|_______________________|_________________|
| INTER-| | |
| FACE | RESERVED | MUX PORT |
|_______|_______________________|_________________|
An INTERFACE value of 0 specifies a Centronics interface; when this
interface is specified, a reset signal is sent to the Centronics converter
board upon device open. An INTERFACE value of 1 specifies a Versatec
interface. If the MUX PORT value is 0, then no MUX control occurs;
otherwise, the value specified in the MUX PORT field is used as the MUX
port to be selected (for example, a value of 1 corresponds to MUX port 1).
The /dev/vop* special files provide an interface to devices requiring
Versatec data. The /dev/cop* special files provide an interface to
devices requiring Centronics data.
The pop driver can be opened by multiple processes only if each open()
function call specifies the same MUX port. If O_FNDELAY is set, the EBUSY
error is returned if a different MUX port is opened by another process.
If O_FNDELAY is not set, then the open() function blocks until the driver
is closed by all other processes.
The pop driver supports output only. On Raster Operation Processor (ROP)
graphics-based workstations, the timeout supplied for MUX operations is
one minute and the timeout for write() function calls is nine minutes. On
all other workstations, the default write() timeout is nine minutes, and
the default MUX timeout is one minute. Both are selectable.
The ioctl(fildes, request, arg) function may be used for the following
requests:
POP_IOCTL_TIMEOUT
Selects the timeout value in seconds for write() function calls.
The arg parameter points to an integer location containing the new
timeout value.
POPIOCTL_MUX_TIMEOUT
2/94 - Intergraph Corporation 1
pop(7) CLIX pop(7)
Selects the timeout value sent to the MUX for open() function
calls. The arg parameter points to an integer location containing
the new timeout value. Available choices are as follows, and all
timeout values are approximate:
arg MUX timeout
0 4.3 seconds
1 8.5 seconds
2 17.0 seconds
3 34.1 seconds
4 68.3 seconds
5 1.7 minutes
6 2.3 minutes
7 3.4 minutes
8 4.6 minutes
9 5.7 minutes
10 6.8 minutes
11 8.0 minutes
12 9.1 minutes
13 13.7 minutes
14 18.2 minutes
15 36.4 minutes
FILES
/dev/vop* Versatec parallel port driver.
/dev/cop* Centronics parallel port driver.
NOTES
On ROP graphics-based workstations, sending Centronics data without using
a MUX requires the ROP board to be strapped for Centronics output. When
sending data to a device connected to a MUX, always use the Versatec
device.
CAUTIONS
With no device connected to the parallel port, a write() function call
causes the port to hang until the timeout occurs.
ERRORS
The following errors may be returned in errno by the pop driver on failure
of either the open(), read(), or close() function:
[ENXIO] The open() function failed because the pop driver was not
present or the minor device specified an illegal MUX port.
2 Intergraph Corporation - 2/94
pop(7) CLIX pop(7)
[EIO] The pop driver was opened for read or the MUX did not respond
when selected. For writes, this error indicates a bad status
was returned from the device.
[EBUSY] The pop driver is currently opened for a different MUX port.
Multiple opens are only valid on the same MUX port.
[EFAULT] The write() buffer address was not a valid memory address or was
not word (4-byte) aligned. If an ioctl() operation was in
progress, the arg parameter pointed to a nonreadable memory
location.
[ENODEV] The specified ioctl() request is not supported on ROP graphics
based workstations.
[EINVAL] The specified ioctl() request or argument was not valid.
RELATED INFORMATION
Functions: plot_ctrl(3), plot_data(3), plot_ctrl_rpo(3),
plot_data_rop(3), ioctl(2)
2/94 - Intergraph Corporation 3