Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ idevice(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

idintconf(1M)

XXexist(5)

XXsetint(5)

idevice(4)                      (RM400 only)                     idevice(4)

NAME
     idevice - interrupt configuration file

DESCRIPTION
     Each package that uses EISA/ISA bus interrupts must supply an idevice
     file which specifies the interrupt requirements of the package.

     When the package is installed (using idinstall), the idevice part of
     the package is copied into the idevice.d directory of the kernel link
     kit. At kernel link time, these component files are concatenated into
     a single file which is then processed by idintconf. This command gen-
     erates a data structure that is used at kernel boot time to allocate
     the use of EISA/ISA bus interrupt resources.

     The idevice file consists of one or more lines, each line describes an
     interrupt resource required by the device. Each line consists of nine
     white space separated fields. The first field can be quoted using dou-
     ble quotes. The other fields cannot be quoted. All fields must be sup-
     plied. Comment lines are lines that start with a "#" or a "*".

     Where allowed a "-" character is used to specify that the field should
     be undefined. The "*" character is used to specify the default value
     for the field. Normally this consists of the Internal name with a
     field dependent string appended to it.

     In later revisions of the file, it is expected that more fields will
     be added to each line. It is thus inadvisable to place comments at the
     end of the line.

     The current implementation contains the following fields:

     Colloquial name
          The first field of each line is a human readable name for the
          device which is used when idintconf or the kernel must generate a
          diagnostic. This field must be unique for all lines relating to
          the same driver. This field can be quoted using double quotes. It
          is the only field that can be quoted.

     Internal name
          The second field is the name to be used to generate symbols for
          the kernel. It is the same as the Device name field in sdevice.
          This field is used to generate other fields that have been
          defaulted.

          If this field is set to "-" or "*", the value of this field is
          the same as the Colloquial name. This is not allowed if the Col-
          loquial name contains any white space characters.

     Bus type
          This field specifies which type of bus interface the hardware
          has. This can either be ISA or EISA. There is no default for this
          field. This field can be shortened to "I" or "E" respectively.



Page 1                       Reliant UNIX 5.44                Printed 11/98

idevice(4)                      (RM400 only)                     idevice(4)

     Interrupt type
          If the hardware has an ISA interface, this field can be set to
          EDGE or a "-" which defaults to EDGE. No other value can be used
          for ISA cards. This is because of a hardware restriction in the
          original design of the AT bus.

          If the hardware has an EISA interface, this field is used to
          specify the type of interrupt that the hardware can handle. This
          can be either EDGE, for edge triggered devices, or LEVEL for
          level triggered devices, or SHARED. There is no default for this
          field on an EISA bus device.

          The SHARED type can be used for devices which use level triggered
          interrupts and which can determine at interrupt time if the
          hardware has actually interrupted. This is because all interrupt
          routines that share an interrupt will be called when an interrupt
          is detected. The order in which these interrupt routines is
          called is NOT defined.

          This field can be shortened to the first letter of the value if
          required.

     Number of Interrupts
          Most devices usually use only one interrupt for each card so this
          field is normally set to 1. However some cards use more than one
          interrupt per hardware card, e.g. the chase card. In this case,
          this field is set to the number of interrupts that each card
          uses. For example the chase would have a value of 2.

          There is no default value for this field.

     Possible Interrupts
          This field consists of a comma separated list of possible inter-
          rupts that the card can use. This list is logically grouped into
          n-tuples. The size of each n-tuple is defined by the Number of
          interrupts field. In the normal case the n-tuple has a length of
          1 so that each value is treated separately.

          For ISA bus devices, the interrupt number cannot be changed under
          software control (on some cards this may be possible but in gen-
          eral it is not). This means that only the first n-tuple is used.
          idintconf and the kernel will give warnings if there is a clash
          of interrupt numbers. In this case the following n-tuples are
          used to inform the user of a possible jumpering change that would
          allow the use of the card. If there is an interrupt clash between
          two ISA bus devices, both devices will be disabled. This is
          because of a hardware restriction in the original AT bus design.

          On EISA bus devices, the interrupt number can be dynamically
          assigned so as not to conflict with other devices. In this case
          each n-tuple is tried in turn. If the n-tuple does not conflict
          with any other interrupts, then the card is assigned that n-


Page 2                       Reliant UNIX 5.44                Printed 11/98

idevice(4)                      (RM400 only)                     idevice(4)

          tuple. If however all n-tuples cause a conflict, the kernel tries
          to rearrange all conflicting interrupts so that they no longer
          clash. If two or more devices are currently sharing an interrupt,
          then they will not be rearranged. In this way, it is hoped that
          all interrupt conflicts can be avoided. If the conflicting device
          is an ISA device, its interrupt number cannot be changed. If all
          possible arrangements of interrupts cause conflicts, then the
          device will not be enabled, and no interrupt will be assigned to
          the device.

          The n-tuples of this field should be arranged in preferred order,
          i.e. the interrupt number that is most preferred should be the
          first on the list.

     Interrupt routine
          This field specifies the name of the interrupt handling function
          to be used by this device. In the normal case, where the driver
          only uses one interrupt per device, this field can be defaulted
          by supplying a "*". If this is done, the function will be called
          internalnameintr.

          If the driver requires more than one interrupt per device, this
          field will then become a comma separated list of interrupt func-
          tions that are to be used. In this case there is no default
          action since enough interrupt routines per device must be sup-
          plied. The ordering with respect to interrupt numbers is lexical.
          I.e. the first interrupt routine is called by an interrupt on the
          first interrupt number, the second interrupt routine is called by
          an interrupt on the second interrupt number.

          If a "-" is supplied, then there is no interrupt function speci-
          fied, the use of this is for future study.

     Existence routine
          This field is the name of a routine which is the first one of the
          driver called. It is called before the drivers' init routine. The
          purpose of this routine is to determine if the device actually
          exists. If the device exists, then the routine should return
          PROBEOK. If the device does not exist, the routine should return
          PROBEFAIL. If the driver cannot determine if the device exists,
          it should return PROBEOK.

          To allow the driver to determine which hardware device is to be
          checked, this routine is passed the address of a intrparamt
          structure. The fields in this structure can be used to determine
          which device is being checked.

          If this field is a "-", then no existence routine is supplied, in
          this case the kernel will assume that the device exists and
          proceed as if the routine had returned PROBEOK.

          If this field is a "*", the name of the routine will be


Page 3                       Reliant UNIX 5.44                Printed 11/98

idevice(4)                      (RM400 only)                     idevice(4)

          internalnameexist.

          For more information see the XXexist(5) manual page.

     Set interrupt routine
          This field specifies the name of a function that is called after
          the exist routine but before the init routine. This function is
          called if the kernel has been able to allocate interrupts for the
          device. If this routine is not called, the kernel was not able to
          allocate interrupts for the device and so the device should not
          initialize itself. A driver which returns PROBEFAIL from the
          exist routine for a given device will never have its setint rou-
          tine called for that device.

          This routine is passed two parameters, the first is a pointer to
          a list of integers which are the interrupt lines that have be
          assigned to the given device. A pointer is used because some
          devices require more than one interrupt. It is assumed that the
          setint routine knows how many interrupts it has been assigned.

          The second parameter is a pointer to a intrparamt structure,
          the members of this structure can be used to determine which
          device the interrupts are being assigned to.

          If a "*" is given in this field, the routine will be called
          internalnamesetint. If a "-" is given, then no setint function
          has been supplied, the use of this value is for future study.

          If neither the setint or exist routines are called, the driver
          can assume that it is running on a system which does not have
          dynamic interrupt assignment i.e. a pre 5.42 kernel.

   Use of idevice

     Each line in the idevice file describes an instance of a driver/device
     pair. Each line in the idevice file must have a corresponding entry in
     the sdevice file. Each line in the idevice defines the requirements of
     one piece of hardware. If a driver can support multiple EISA devices
     that can share resources i.e. interrupt numbers and interrupt devices,
     then only one line need be supplied in idevice. In this case the sde-
     vice entry will enable or disable all of the devices. And it is the
     responsibility of the driver to handle the exist and setint routines
     correctly.

FILES
     idevice

     sdevice

SEE ALSO
     idintconf(1M), XXexist(5), XXsetint(5).



Page 4                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026