HPUX hpib[7]






 hpib(7)                       Series 800 Only                       hpib(7)





 NAME
      hpib - Hewlett-Packard Interface Bus driver

 SYNOPSIS
      #include <sys/hpibio.h>

 DESCRIPTION
      HP-IB is Hewlett-Packard's implementation of the Institute of
      Electrical and Electronic Engineers Standard Digital Interface for
      Programmable Instrumentation (IEEE Std 488-1978).  This section
      describes the use of the HP-IB driver in the HP-UX system.

    Auto-addressed Files vs. Raw Bus Files
      A major distinction is made in the HP-UX driver between "auto-
      addressed" files and "raw bus" files.  An auto-addressed file is
      associated with a specified address on the HP-IB.  The user need not
      be concerned with any HP-IB addressing or commands; the driver handles
      device addressing and unaddressing during data transfers.  However,
      the user is limited to transactions to and from a single device.  A
      raw bus file, on the other hand, gives the user access to the entire
      HP-IB; responsibility for all commands and addressing lies with the
      user.  The raw bus file is typically used to access multiple devices
      on the same bus, as well as provide universal device commands such as
      interface clear and parallel poll.

      Although differences exist between auto-addressed and raw bus files,
      the user/driver interface is consistent across both types.  Therefore,
      each category of requests is presented with separate subsections for
      auto-addressed and raw bus files.

    Naming Convention
      HP-IB device files are named according to the following format:

           /dev/hpib/#[a#]

      where the first # specifies the bus number (assigned by the
      administrator) and the second # specifies the address on that bus.
      Device files without an address suffix denote the raw bus.  Files with
      the address suffix are auto-addressed.

    Device Attributes
      HP-IB attributes are classified into two groups, per-open and per-
      interface.  File descriptors obtained from separate open() requests
      have separate per-open attributes (see open(2)); changing an attribute
      from the per-open group affects requests on that file descriptor only.
      Attributes in the per-interface group are shared by all file
      descriptors on that interface; changing an attribute from one file
      descriptor affects all users of the interface.

      The per-open set of attributes and the driver requests to change them
      are listed in the following table.  All other attributes are per-



 Hewlett-Packard Company            - 1 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





      interface.

      center tab(;); lB lB l  lf4.  Attribute;Driver Request _
      timeout;HPIB_TIMEOUT write termination mode;HPIB_EOI read termination
      pattern;HPIB_READ_PATTERN read termination reason;HPIB_TERM_REASON
      signal mask;HPIB_SIGNAL_MASK lock count;HPIB_LOCK wait
      events;HPIB_WAIT_ON_STATUS

    Transfer Requests
      The standard read() and write() requests are used for data transfer
      over HP-IB (see read(2) and write(2)).  However, their actions are
      slightly different for each type of file.  Raw bus files place data
      directly onto the bus.  No addressing or unaddressing of devices is
      done by the driver; this is the user's responsibility.

      On the other hand, the driver does all addressing for transactions
      with auto-addressed files.  The actual sequence of events is:

           UNL, <device addressing>, <data>, <terminator>

      All write requests end when the specified number of bytes has been
      transferred over the bus.  Optionally, the HP-IB END message can be
      sent with the last byte written; this is controlled via the HPIB_EOI
      request.  All read requests end when the specified number of bytes has
      been read over the bus or when the device asserts EOI.  In addition, a
      single character can be designated to end the read operation via the
      HPIB_READ_PATTERN request.

    Control Requests
      Control requests cause some action on the bus.  All such requests have
      the same format:

           struct io_ctl_status {
                int type;
                int arg[3];
           } hpib_control;

           ioctl(fildes, IO_CONTROL, &hpib_control);

      In the io_ctl_status structure, the type field specifies the type of
      control function required, while the arg array holds any associated
      arguments.  The defined values for type and their use are described as
      follows:

      HPIB_TIMEOUT        Set the timeout.  If any transaction for this file
                          takes longer than arg[0] microseconds, it is
                          aborted with a status of ETIMEDOUT returned to the
                          user.  This is used mainly for detecting device
                          failure.  A timeout of 0 is equivalent to
                          infinity; that is, no transaction will time out.




 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





      HPIB_WIDTH          Set the width of the interface.  This request
                          specifies the number of valid data lines on
                          transfers; arg[0] holds the desired interface
                          width in bits.  All future read requests inspect
                          only the least significant arg[0] data lines, and
                          all future writes present data on only those
                          lines.  The state of all other data lines is
                          indeterminate.

      HPIB_SPEED          Set the transfer speed of the interface.  The
                          desired data transfer speed in kilobytes per
                          second is specified in arg[0].  Note that this
                          value is advisory only, and is typically used by
                          the driver to determine the method of data
                          transfer.

      HPIB_EOI            Enable/disable EOI assertion on writes.  If arg[0]
                          is nonzero, all subsequent writes end with EOI
                          asserted on the last byte transferred.  A zero
                          arg[0] disables EOI assertion.

      HPIB_SYSTEM_CTLR    Make the interface system controller or non-system
                          controller.  If arg[0] is nonzero, the interface
                          becomes the system controller.  A zero in arg[0]
                          sets the interface to non-system controller.  This
                          request is applicable to raw bus files only.

      HPIB_READ_PATTERN   Enable or disable pattern matching on reads.  If
                          arg[0] is nonzero, all subsequent reads terminate
                          when the pattern specified in arg[1] is
                          encountered in the input stream.  This termination
                          condition is subject to all other termination
                          conditions in effect for the file.  Only the n
                          least significant bits of the pattern are used in
                          the match, where n is the interface's current
                          width, set via HPIB_WIDTH.  A zero arg[0] disables
                          read pattern matching.

      HPIB_SIGNAL_MASK    Define signaling events.  This request allows the
                          calling process to receive a signal when some
                          event occurs on the HP-IB.  The event or events
                          are specified by computing the bitwise inclusive
                          OR of the values from the list below, and placing
                          the mask in arg[0].  All of these events can be
                          enabled on raw bus files, but only ST_SRQ and
                          ST_PPOLL apply to auto-addressed files.

                               ST_SRQ         Signal on assertion of Service
                                              Request (SRQ).





 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





                               ST_PPOLL       Signal when device responds to
                                              Parallel Poll.

                               ST_REN         Signal when interface enters
                                              remote state.

                               ST_ACTIVE_CTLR Signal when interface becomes
                                              active controller.

                               ST_TALK        Signal when interface is
                                              addressed to talk.

                               ST_LISTEN      Signal when interface is
                                              addressed to listen.

                               ST_IFC         Signal on assertion of
                                              Interface Clear (IFC).

                               ST_DCL         Signal on receipt of Device
                                              Clear (DCL).

                               ST_GET         Signal on receipt of Group
                                              Execute Trigger (GET).

                          When any subsequent flagged event occurs, the
                          process is sent SIGEMT.  The user should set up a
                          handler to trap this signal via signal() or
                          sigvector() (see signal(2) or sigvector(2)).  The
                          reason for interrupt can be obtained via the
                          IO_STATUS request HPIB_SIGNAL_MASK.  Each request
                          overwrites the previous mask for the file;
                          therefore events can be disabled by using a zero
                          arg[0].

                          If ST_PPOLL is flagged, the user supplies
                          additional information in the arg array.  For raw
                          bus files, the low-order bytes of arg[1] and
                          arg[2] contain eight-bit masks with each bit
                          corresponding to a Data I/O (DIO) line and the
                          least significant bit mapped to DIO1.  When a
                          device responds to parallel poll, it asserts the
                          appropriate line; arg[1]'s bits indicate the
                          parallel poll sense of this assertion.  Bits set
                          in arg[2] indicate that the corresponding address
                          is capable of responding to polling.  For auto-
                          addressed files, arg[1] specifies the parallel
                          poll sense of the assigned device's response to
                          parallel poll.  Parallel poll interrupts can be
                          enabled only if the interface is the active
                          controller.




 Hewlett-Packard Company            - 4 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





      HPIB_LOCK           Lock or unlock the HP-IB interface.  Setting
                          arg[0] to LOCK_INTERFACE locks the HP-IB
                          interface, giving the calling process exclusive
                          access to the card and bus.  The lock is
                          incremental;  that is, if the interface is already
                          locked by the current process, additional lock
                          requests increment a per-open lock count
                          maintained in the driver.

                          An arg[0] of UNLOCK_INTERFACE decrements the per-
                          open lock count; when the total interface lock
                          count drops to zero, the lock is cleared.  The
                          lock can also be cleared by setting arg[0] to
                          CLEAR_ALL_LOCKS, which removes all locks held by
                          the current process.

                          After a successful lock or unlock, arg[1] contains
                          the current lock count for this open, and arg[2]
                          contains the total lock count on this interface.

                          While the interface is locked, other processes
                          that attempt to access the bus or interface are
                          blocked until either the interface becomes
                          unlocked or the process's per-open timeout (set
                          via HPIB_TIMEOUT) expires.  However, if the
                          O_NDELAY file status flag is set (see fcntl(5)),
                          the user request fails and returns immediately
                          with the EACCES error.  See the Summary of
                          Privilege Requirements section for a list of user
                          requests that might block.

      HPIB_ADDRESS        Set the HP-IB address to which the interface
                          responds when it is not the active controller.
                          The bus address is set via arg[0], and must be
                          between 0 and 30 decimal.  Two additional flags,
                          HPIB_TALK_ALWAYS and HPIB_LISTEN_ALWAYS, can be
                          set by computing the bitwise inclusive OR of their
                          values with the address.  These flags enable the
                          interface to talk, and/or listen always,
                          respectively.  This request is applicable to raw
                          bus files only.

      HPIB_RESET          Reset the device or bus, depending on which of the
                          following values is in arg[0]:

                               DEVICE_CLR     Address the device and send a
                                              selective device clear (SDC)
                                              command.  This applies only to
                                              auto-addressed files.





 Hewlett-Packard Company            - 5 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





                               BUS_CLR        Assert Interface Clear (IFC)
                                              and Remote Enable (REN), and
                                              clear Attention (ATN).

                               HW_CLR         Reset bus interface card.  The
                                              card is self-tested and if the
                                              card is system controller, IFC
                                              is pulsed.  All other card
                                              state information is
                                              preserved.  This applies to
                                              raw bus files only.

      HPIB_PPOLL_RESP     Control the interface's response to parallel poll.
                          When the interface is not acting as active
                          controller, it can be enabled to respond to
                          parallel polling by the current active controller.
                          If arg[0] is nonzero, the interface responds to
                          parallel poll.  arg[1] specifies the DIO line on
                          which the card responds; arg[1] has a value
                          between 0 and 7, with a value of 0 mapping to
                          DIO1, 1 mapping to DIO2, and so forth.  The
                          parallel poll sense of the response is determined
                          by arg[2].  An arg[0] of zero disables the
                          interface's response to parallel poll.

                          For auto-addressed files, the file's associated
                          device address is configured, rather than the
                          interface.

      HPIB_PPOLL_IST      Enable or disable response to parallel poll.  If
                          arg[0] is nonzero, the interface responds to
                          parallel poll.  An arg[0] of zero disables the
                          interface's response.  This differs from the
                          previous request, because the parallel poll sense
                          and address of the interface's response are
                          unchanged.  This request applies to raw bus files
                          only.

      HPIB_REN            Place a device into or out of the remote state.
                          For a raw bus file, this request merely sets or
                          clears the Remote Enable line, depending on
                          whether arg[0] is nonzero or zero respectively.
                          For auto-addressed files, a nonzero arg[0] asserts
                          the Remote Enable line and addresses the device.
                          If arg[0] is zero, the device is removed from the
                          remote state by sending it a Go-to-Local command
                          (GTL).

      HPIB_SRQ            Request service.  This request causes the
                          interface to assert the Service Request line (SRQ)
                          until it is serially polled.  At that time it



 Hewlett-Packard Company            - 6 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)




                          responds with the status byte given in arg[1].
                          This request applies to raw bus files only.

                          This request is normally used only when the
                          interface is not the active controller.
                          Nonetheless, the active controller can assert SRQ,
                          and the HPIB_BUS_STATUS request will reflect the
                          assertion; however, the SRQ line does not change
                          state until the interface passes control.

      HPIB_PASS_CONTROL   Pass active control of the bus.  If the interface
                          is currently active controller, this request
                          relinquishes control of the bus, passing it
                          instead to the device at the bus address in
                          arg[0].  Passing control should be done with care,
                          since it is not possible to detect whether the
                          named device can indeed assume bus control.  This
                          request applies only to raw bus files.

      HPIB_GET_CONTROL    Become active controller.  This request causes the
                          interface to assert Interface Clear (IFC) and
                          Remote Enable (REN) as a means of regaining
                          control of the HP-IB.  It applies only to raw bus
                          files.

    Transparent Bus Request
      This request allows a user to send direct commands over the HP-IB; it
      should be used with care, since improper use might place the bus in an
      unusable state.

      The transparent bus request takes the following form:

           struct hpib_command {
              int  length;
              char buffer[MAX_HPIB_COMMANDS];
           } hpib_cmd;

           ioctl(fildes, HPIB_COMMAND, &hpib_cmd);

      This call transmits length bytes of data in buffer over the HP-IB with
      Attention (ATN) asserted.  On completion of the request, ATN remains
      asserted.

      For commands sent through an auto-addressed file, buffer is surrounded
      with the appropriate device addressing.  What appears on the bus is:

           UNL, TALK CIC, LISTEN device, buffer

      This differs from the approach toward a raw bus file.  For such files,
      the buffer is merely placed on the bus with ATN asserted, with no
      addressing or unaddressing.



 Hewlett-Packard Company            - 7 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





    Status Requests
      These requests are used to obtain information about the general state
      of a device or the HP-IB.  Their calling sequence is similar to that
      of control requests:

           struct io_ctl_status hpib_status;

           ioctl(fildes, IO_STATUS, &hpib_status);

      As with the data structure to control requests, the type field
      specifies the type of information requested, while the arg array holds
      clarification data.  The defined status requests for HP-IB and their
      use are described as follows:

      HPIB_ADDRESS        Return the bus address associated with the file in
                          arg[0].

      HPIB_TIMEOUT        Return the interface's timeout in microseconds in
                          arg[0].

      HPIB_WIDTH          Return the interface's path width in bits in
                          arg[0].

      HPIB_SPEED          Return the interface's data transfer rate in K-
                          bytes per second in arg[0].

      HPIB_READ_PATTERN   Return the interface's read termination pattern in
                          arg[0]; if pattern matching is not enabled, arg[0]
                          holds a -1.

      HPIB_SIGNAL_MASK    Return the reason for the last signal.  This
                          request returns a mask in arg[0], with bits set
                          indicating the reason(s) for the last SIGEMT sent
                          to the user process.  Bit definitions are
                          identical to those of the corresponding IO_CONTROL
                          request.

      HPIB_LOCK           Return lock status.  If the device is locked to a
                          process, return that process ID in arg[0] and the
                          interface lock count in arg[1].  If the device is
                          not locked, arg[0] holds a -1.

      HPIB_TERM_REASON    Return end conditions for the last read from this
                          device or bus.  This request returns a byte in
                          arg[0], with a mask of reason(s) for the
                          completion of the last read from the device or raw
                          bus.  Applicable bits are:

                               TR_COUNT       Read requested number of
                                              bytes.




 Hewlett-Packard Company            - 8 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





                               TR_MATCH       Detected specified match
                                              pattern.

                               TR_TIMEOUT     Timed out.

                               TR_END         Device asserted EOI.

                               TR_ERROR       Detected bus error.

                               TR_NOTERM      No read done since open.

      HPIB_PPOLL          Conduct a parallel poll.  This request returns the
                          bus response to parallel poll in the least
                          significant byte of arg[0], with DIO1
                          corresponding to the least significant bit.  The
                          driver delays at least 100 microseconds before
                          reading the poll response, thus allowing the use
                          of HPIB_PPOLL on systems with extended buses.
                          This request applies to both auto-addressed and
                          raw bus files.

      HPIB_SPOLL          Conduct a serial poll.  For raw bus files, this
                          request conducts a serial poll of the device
                          address in arg[1]; the status byte returned by the
                          device is available in arg[0].  Auto-addressed
                          files ignore any address in arg[1], polling
                          instead the device's predefined address.

      HPIB_BUS_STATUS     Return the status of the HP-IB.  This request,
                          applicable to both types of files, returns
                          information related to the current bus state.  On
                          return, arg[0] holds a value with bits set
                          indicating:

                               ST_NDAC             NDAC is being asserted.

                               ST_SRQ              SRQ is being asserted.

                               ST_REN              Interface is in the
                                                   remote state.

                               ST_ACTIVE_CTLR      Interface is active
                                                   controller.

                               ST_SYSTEM_CTLR      Interface is system
                                                   controller.

                               ST_TALK             Interface is addressed to
                                                   talk.





 Hewlett-Packard Company            - 9 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





                               ST_LISTEN           Interface is addressed to
                                                   listen.

                               ST_TALK_ALWAYS      Interface is configured
                                                   to talk always.

                               ST_LISTEN_ALWAYS    Interface is configured
                                                   to listen always.

      HPIB_WAIT_ON_PPOLL  Wait (sleep) until a given device responds to
                          parallel poll.  This request blocks the user until
                          either the user's device responds to parallel poll
                          (for auto-addressed files) or until any enabled
                          devices respond (for raw bus files).

                          For a raw bus file, arg[1] and arg[2] contain
                          eight-bit masks as defined in the HPIB_SIGNAL_MASK
                          request.  The return value of the request in
                          arg[0] shows which devices responded to parallel
                          poll.

                          For an auto-addressed file, arg[1] specifies the
                          sense of the particular device's assertion.
                          Successful completion of the request implies that
                          the device responded.

      HPIB_WAIT_ON_STATUS Wait (sleep) until any of a set of given states is
                          entered.  The event(s) to await are specified by
                          computing the bitwise inclusive OR of the values
                          from the list below, and placing the mask in
                          arg[0].  Applicable bits are:

                               ST_SRQ              Wait until SRQ is
                                                   asserted.

                               ST_ACTIVE_CTLR      Wait until user is active
                                                   controller.

                               ST_TALK             Wait until user is
                                                   addressed to talk.

                               ST_LISTEN           Wait until user is
                                                   addressed to listen.

                          Note that more than one bit can be set, thereby
                          waiting for any of the events to occur.  The
                          return value in arg[0] is modified to show the
                          actual event(s) that ended the wait.  This is
                          applicable to raw bus files only.





 Hewlett-Packard Company           - 10 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





      HPIB_INTERFACE_TYPE Return the interface type.  This returns one of
                          two values in arg[0]:

                               HPIB_INTERFACE      The open file is a HP-IB
                                                   raw bus file.

                               HPIB_DEVICE         The open file is a HP-IB
                                                   auto-addressed file.

    Extended Status Request
      If the user wants to obtain several status variables in one request,
      the following request can be used:

           struct io_environment hpib_env;

           ioctl(fildes, IO_ENVIRONMENT, &hpib_env);

      where the io_environment structure includes the following fields:

           int interface_type;
           int timeout;
           int status;
           int term_reason;
           int read_pattern;
           int signal_mask;
           int width;
           int speed;
           int locking_pid;

    Summary of Privilege Requirements
      The following table summarizes which ioctl() requests can be performed
      under what circumstances (see ioctl(2)).  The first three columns
      indicate whether the interface must be in the controlling state given
      to perform the request.  An entry of Y means that the interface must
      be in that state, N means that the interface must not be in that
      state, and - means that the state is irrelevant.  The next two columns
      indicate whether the request works for auto-addressed or raw bus
      files.  The final column indicates whether the request is subject to
      blocking while the interface is locked (see HPIB_LOCK).

      If an entry is marked with an asterisk (*), check the particular
      request for more information.

      center, box tab(;); l   | c    |    c |    c |    c |    c | c l   | c
      |    c |    c |    c |    c | c lf4 | cp-1 | cp-1 | cp-1 | cp-1 | cp-1
      | cp-1 .  ;Non-;Active;System;Auto;Raw;Lock
      Request;Ctlr;Ctlr;Ctlr;Addr;Bus;Enforced _ IO_CONTROL
        HPIB_TIMEOUT;-;-;-;Y;Y;N   HPIB_WIDTH;-;-;-;Y;Y;Y
        HPIB_SPEED;-;-;-;N;Y;Y   HPIB_EOI;-;-;-;Y;Y;N
        HPIB_SYSTEM_CTLR;-;-;-;N;Y;Y




 Hewlett-Packard Company           - 11 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





        HPIB_READ_PATTERN;-;-;-;Y;Y;N   HPIB_SIGNAL_MASK;*;*;-;Y;Y;Y
        HPIB_LOCK;-;-;-;Y;Y;Y   HPIB_ADDRESS;-;-;-;N;Y;Y   HPIB_RESET

          DEVICE_CLR;N;Y;-;Y;N;Y     BUS_CLR;-;-;Y;Y;Y;Y
          HW_CLR;-;-;-;N;Y;Y

        HPIB_PPOLL_RESP;N;Y;-;Y;Y;Y   HPIB_PPOLL_IST;-;-;-;N;Y;Y
        HPIB_REN;-;-;Y;Y;Y;Y   HPIB_SRQ;-;*;-;N;Y;Y
        HPIB_PASS_CONTROL;N;Y;-;N;Y;Y   HPIB_GET_CONTROL;-;-;Y;N;Y;Y

      HPIB_COMMAND;N;Y;-;Y;Y;Y

      IO_STATUS   HPIB_ADDRESS;-;-;-;Y;Y;Y   HPIB_TIMEOUT;-;-;-;Y;Y;N
        HPIB_WIDTH;-;-;-;Y;Y;N   HPIB_SPEED;-;-;-;Y;Y;N
        HPIB_READ_PATTERN;-;-;-;Y;Y;N

        HPIB_SIGNAL_MASK;-;-;-;Y;Y;N   HPIB_LOCK;-;-;-;Y;Y;N
        HPIB_TERM_REASON;-;-;-;Y;Y;N   HPIB_PPOLL;N;Y;-;Y;Y;Y
        HPIB_SPOLL;N;Y;-;Y;Y;Y

        HPIB_BUS_STATUS;-;-;-;Y;Y;Y   HPIB_WAIT_ON_PPOLL;N;Y;-;Y;Y;Y
        HPIB_WAIT_ON_STATUS;-;-;-;N;Y;Y   HPIB_INTERFACE_TYPE;-;-;-;Y;Y;N

      IO_ENVIRONMENT;-;-;-;Y;Y;Y

    Default Configuration
      The default configuration of any HP-IB file is:
           Timeout             Infinite
           Path Width          8 bits
           Transfer Speed      0
           EOI                 Assertion Enabled
           Pattern Match       Disabled
           Enabled Signals     None
           Locking             Unlocked
           Termination Reason  TR_NOTERM

 ERRORS
      A -1 return value for a driver request indicates that an error
      occurred; errno is set to specify the reason.  In addition to errors
      defined in open(2), close(2), read(2), write(2), and ioctl(2), a
      driver request can fail if any of the following conditions are
      encountered:

           [EACCES]       The interface is not in the active-controller or
                          system-controller state.

           [EACCES]       The interface is currently locked by another
                          process via HPIB_LOCK.

           [EACCES]       A request to access the file would block and the
                          O_NDELAY file status flag is set for the file



 Hewlett-Packard Company           - 12 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





                          descriptor.

           [EINVAL]       The request is not applicable to this type of
                          file.  Alternatively, type or arg has an invalid
                          value.

           [EINTR]        An interface power failure occurred during the
                          processing of this request; the device might have
                          lost state.

           [EINTR]        A signal was received either while waiting for the
                          interface to become unlocked, or while waiting for
                          a HPIB_WAIT_ON_PPOLL or HPIB_WAIT_ON_STATUS
                          request.

           [EIO]          An unclassified error occurred.

           [EMFILE]       The number of simultaneous open() requests on this
                          interface exceeds the maximum allowed.

           [ENXIO]        No bus interface is associated with the device
                          file.

           [EPERM]        An attempt was made to unlock an interface that
                          was not locked.

           [ERANGE]       The interface lock count was exceeded.

           [ETIMEDOUT]    The transaction did not complete within the
                          timeout specified.

      In addition, the following messages can appear on the system console
      as a result of errors:

           instr0 unit %d: device adapter failure.
                               The bus hardware is no longer functioning.

           instr0 unit %d: unexpected message (message type = %d, from port %d).
                               The driver received an unclassifiable
                               message.

 WARNINGS
      It is possible to circumvent the bus protection mechanisms afforded by
      the auto-addressed and raw bus dichotomy.  Specifically, a user of an
      auto-addressed file can send commands to any or all devices on the bus
      with the HPIB_COMMAND request, if the proper device addressing is done
      within the data buffer.

      The HPIB_LOCK request should be used with care.  Since it provides an
      exclusive lock, invoking the HPIB_LOCK blocks access to any system
      disk or swap device on the associated bus.



 Hewlett-Packard Company           - 13 -     HP-UX Release 9.0: August 1992






 hpib(7)                       Series 800 Only                       hpib(7)





      Processes that use HPIB_LOCK should clear all locks before exiting.
      The driver attempts to clear them if the process terminates
      unexpectedly; however, a lock might be left outstanding if the locker
      dies after creating new file descriptors (via fork() or dup() that
      refer to the same device file (see fork(2) or dup(2)).  Ensuring that
      all open file descriptors on a given interface are closed remedies the
      situation.

      By default, some HP-IB peripherals respond to parallel poll on DIOn,
      where n has the value of 8 minus the device's bus address.  That is, a
      device at address 6 can respond on DIO2.  Therefore, the results of an
      HPIB_PPOLL request can be misleading if some devices are not remotely
      configured.

      It is impossible to transfer data using a secondary address in a
      single driver request.

 DEPENDENCIES
    HP27110B
      The HPIB_SPEED and HPIB_SYSTEM_CTLR requests are not supported; they
      are configured by switches on the device adapter.

      The HPIB_SRQ request can affect only the RQS bit of the serial poll
      response byte; all other bits are masked to zero by the hardware.

 AUTHOR
      hpib was developed by HP.

 FILES
      /dev/hpib/*

 SEE ALSO
      fcntl(5), ioctl(2), signal(2), sigvector(2), specific device
      documentation in section (7).




















 Hewlett-Packard Company           - 14 -     HP-UX Release 9.0: August 1992