NAME
ps —
Evans and Sutherland Picture
System 2 graphics device interface
SYNOPSIS
ps0 at uba? csr 0172460 vector psclockintr pssystemintr
DESCRIPTION
NOTE: This driver has not been ported from
4.4BSD yet.
The
ps driver provides access to an Evans and Sutherland
Picture System 2 graphics device. Each minor device is a new PS2. When the
device is opened, its interface registers are mapped, via virtual memory, into
a user process's address space. This allows the user process very high
bandwidth to the device with no system call overhead.
DMA to and from the PS2 is not supported. All read and write system calls will
fail. All data is moved to and from the PS2 via programmed I/O using the
device's interface registers.
Commands are fed to and from the driver using the following
ioctl(2)s:
-
-
PSIOGETADDR
- Returns the virtual address through which the user process
can access the device's interface registers.
-
-
PSIOAUTOREFRESH
- Start auto refreshing the screen. The argument is an
address in user space where the following data resides. The first longword
is a count of the number of static refresh buffers. The
next count longwords are the addresses in refresh memory
where the refresh buffers lie. The driver will cycle through these refresh
buffers displaying them one by one on the screen.
-
-
PSIOAUTOMAP
- Start automatically passing the display file through the
matrix processor and into the refresh buffer. The argument is an address
in user memory where the following data resides. The first longword is a
count of the number of display files to operate on. The
next count longwords are the address of these display
files. The final longword is the address in refresh buffer memory where
transformed coordinates are to be placed if the driver is not in double
buffer mode (see below).
-
-
PSIODOUBLEBUFFER
- Cause the driver to double buffer the output from the map
that is going to the refresh buffer. The argument is again a user space
address where the real arguments are stored. The first argument is the
starting address of refresh memory where the two double buffers are
located. The second argument is the length of each double buffer. The
refresh mechanism displays the current double buffer, in addition to its
static refresh lists, when in double buffer mode.
-
-
PSIOSINGLEREFRESH
- Single step the refresh process. That is, the driver does
not continually refresh the screen.
-
-
PSIOSINGLEMAP
- Single step the matrix process. The driver does not
automatically feed display files through the matrix unit.
-
-
PSIOSINGLEBUFFER
- Turn off double buffering.
-
-
PSIOTIMEREFRESH
- The argument is a count of the number of refresh interrupts
to take before turning off the screen. This is used to do time
exposures.
-
-
PSIOWAITREFRESH
- Suspend the user process until a refresh interrupt has
occurred. If in
TIMEREFRESH
mode, suspend until
count refreshes have occurred.
-
-
PSIOSTOPREFRESH
- Wait for the next refresh, stop all refreshes, and then
return to user process.
-
-
PSIOWAITMAP
- Wait until a map done interrupt has occurred.
-
-
PSIOSTOPMAP
- Wait for a map done interrupt, do not restart the map, and
then return to the user.
FILES
-
-
- /dev/ps
-
DIAGNOSTICS
- ps device intr.
- ps DMA intr.
- An interrupt was received from the device. This shouldn't
happen, check your device configuration for overlapping interrupt
vectors.
HISTORY
The
ps driver appeared in
4.2BSD.
BUGS
An invalid access (e.g., longword) to a mapped interface register can cause the
system to crash with a machine check. A user process could possibly cause
infinite interrupts hence bringing things to a crawl.