NAME
iop
—
I2O RAID controller
SYNOPSIS
iop* at pci?
iopsp* at iop?
ioprbs* at iop?
scsibus* at iopsp?
scsibus* at ioprbs?
option I2OVERBOSE
DESCRIPTION
The iop
driver provides support for PCI
I/O processors conforming to the I2O specification, revision 1.5 and
above.
IOCTL INTERFACE
The following structures and constants are defined in ⟨dev/i2o/iopio.h⟩. Note that the headers ⟨sys/types.h⟩, ⟨sys/device.h⟩ and ⟨dev/i2o/i2o.h⟩ are prerequisites and must therefore be included beforehand.
IOPIOCPT (struct ioppt)
- Submit a message to the IOP and return the reply. Note that the return
value of this ioctl is not affected by completion status as indicated by
the reply.
struct ioppt { void *pt_msg; /* pointer to message buffer */ size_t pt_msglen; /* message buffer size in bytes */ void *pt_reply; /* pointer to reply buffer */ size_t pt_replylen; /* reply buffer size in bytes */ int pt_timo; /* completion timeout in ms */ int pt_nbufs; /* number of transfers */ struct ioppt_buf pt_bufs[IOP_MAX_MSG_XFERS]; /* transfers */ }; struct ioppt_buf { void *ptb_data; /* pointer to buffer */ size_t ptb_datalen; /* buffer size in bytes */ int ptb_out; /* non-zero if transfer is to IOP */ };
The minimum timeout value that may be specified is 1000ms. All other values must not exceed the
iop
driver's operational limits. IOPIOCGSTATUS (struct iovec)
- Request the latest available status record from the IOP. This special-case ioctl is provided as the I2O_EXEC_STATUS_GET message does not post replies, and can therefore not be safely issued using the IOPIOCPT ioctl.
The following ioctls may block while attempting to acquire the
iop
driver's configuration lock, and may fail if the
acquisition times out.
IOPIOCGLCT (struct iovec)
- Retrieve the
iop
driver's copy of the logical configuration table. This copy of the LCT matches the current device configuration, but is not necessarily the latest available version of the LCT. IOPIOCRECONFIG
- Request that the
iop
driver scan all bus ports, retrieve the latest version of the LCT, and attach or detach devices as necessary. Note that higher-level reconfiguration tasks (such as logically re-scanning SCSI buses) will not be performed by this ioctl. IOPIOCGTIDMAP (struct iovec)
- Retrieve the TID to device map. This map indicates which targets are
configured, and what the corresponding device name for each is. Although
at any given point it contains the same number of entries as the LCT, the
number of entries should be determined using the iov_len field from the
returned iovec.
struct iop_tidmap { u_short it_tid; u_short it_flags; char it_dvname[sizeof(((struct device *)NULL)->dv_xname)]; }; #define IT_CONFIGURED 0x02 /* target configured */
FILES
- /dev/iopu
- control device for IOP unit u
SEE ALSO
intro(4), ioprbs(4), iopsp(4), pci(4), scsibus(4), iopctl(8)
HISTORY
The iop
driver first appeared in
NetBSD 1.6, OpenBSD support
was added in OpenBSD 3.0.
AUTHORS
The iop
driver was written by
Andrew Doran ⟨ad@netbsd.org⟩ and
ported to OpenBSD 3.0 by Niklas
Hallqvist ⟨niklas@openbsd.org⟩ and
Michael Shalayeff
⟨mickey@openbsd.org⟩.