Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cunix(1M)

sysm68k(2)

sysm88k(2)

edtp(8)

boot(8)





   edt_data(4)                                                     edt_data(4)


   NAME
         /stand/edt_data - Equipped Device Table Data File

   DESCRIPTION
         The Equipped Device Table (EDT) data file describes board and device
         specific data used for configuring a kernel.  Each entry in edt_data
         describes a board or similar configurable hardware entity.  An entry
         consists of a single line with the following fields separated by
         white space:

         NAME      Device name, to match that of the corresponding boot
                   module.  14 characters maximum.

         FLAGS     Flags: the only one recognised is r, meaning required
                   device.  The driver for a required device cannot be
                   EXCLUDEd in the system file (as per the r flag in
                   master(4)).

         BOARD     Board or controller number.  If there is more than one EDT
                   entry for the same device name, each must have a different
                   board number.  This number is also the default argument
                   passed to the interrupt handler.

         IO_ADDR   The base address of the board.  Standalone device probe
                   programs (see edtp(8)) may use this address to probe for
                   the presence of the board.  For the kernel, cunix(1M)
                   generates an array prefix_addr[] into which it places the
                   value of IO_ADDR for access by the driver.  The array is
                   indexed by the board number.

         IO_LEN    Size of the I/O space (beginning at IO_ADDR) in bytes.
                   cunix places this in the array prefix_iolen[].

         MEM_ADDR  Address of additional I/O space used by the device, or an
                   area of local memory on the board.  cunix places this in
                   the array prefix_maddr[].

         MEM_LEN   Size of the above, placed in the array prefix_memlen[].

         NVEC      Number of vectors per board.  If this field is '-', the
                   number of descriptors in the VECTORS field (see below) is
                   counted.  The figure is placed in the integer prefix_nvec
                   by cunix.

         VECTORS   A comma-separated list of vector numbers for the board.
                   Each number may optionally be followed by an interrupt
                   handler name modifier and/or an argument to be passed to
                   the interrupt handler in place of BOARD.  The syntax is:





   7/91                                                                 Page 1









   edt_data(4)                                                     edt_data(4)


                         vector:modifier(argument),...

                   cunix places the vector numbers in the array prefix_vec[]
                   and generates interrupt ``glue'' code to connect each one
                   to its handler in the driver.  The default handler name is
                   prefixint.  If modifier is specified, the handler name for
                   that vector becomes prefixmodifierint.

                   If there is more than one vector in the list and a given
                   vector has no modifier character or argument specified,
                   then a handler name of the form prefixintX is generated,
                   where X is the numeric position of that vector in the list,
                   starting from zero.  If there is only one vector number in
                   the list and NVEC is greater than one, then a contiguous
                   set of NVEC vectors will be generated, starting from the
                   specified vector and using the prefixintX style for the
                   handler names.  The maximum length of the VECTORS field is
                   31 characters.

         IPL       The interrupt priority level, placed in prefix_ilev[].

         TYPE      Type of board, chosen from:
                      0   Main CPU board
                      1   Memory board
                      2   Some type of I/O board
                      3   Other ???
                   This field is not currently used by cunix.

         SPARE[4]  Spare fields.  These are placed in the array prefix_aux[]
                   by cunix, and may be interpreted as desired by drivers.

         The maximum number of entries permitted in an EDT data file is 64.

      Extended EDT
         An Extended EDT is used for some boards to describe subdevices of the
         board, although it can be of zero length for other boards.  It
         consists of an array of xedt structures, filled in by the driver:

         #define   E_XNAMLEN   64   /* extended device name length */

         struct   xedt {
                  char     x_name[E_XNAMLEN];   /* extended device name */
                  int      x_unit;              /* extended device unit number */
                  u_int    x_ksize;             /* extended device size in K */
         };








   Page 2                                                                 7/91









   edt_data(4)                                                     edt_data(4)


         struct   kxedt {
                  unsigned int   count;
                  struct xedt    entry[1];
         };

         The XEDT can be read by a program using the sysm68k(2) or sysm88k(2)
         call with command XGETEDT.  It is returned in the form shown by the
         kxedt structure above, where count indicates the number of following
         xedt entries.  The information is obtained from the driver via the
         prefixdriverinfo entry point, with command XGETEDT.  Note that not
         all drivers may support this command.

   EXAMPLE
         *
         * Example edt_data file with just one entry describing an MVME323 device.
         * Note:
         *       comments are introduced by a '*'
         *       irrelevent fields are marked with a '-'
         *       all fields for an entry must be on one (very long) line, shown as two lines
         *       in the following example because of space constraints
         *
         *NAME                       FLAGS   BOARD     IO_ADDR      IO_LEN   MEM_ADDR
         MVME323                     r       0         0xffffa000   -        -

         (1st line cont'd) MEM_LEN   NVEC    VECTORS   IPL          TYPE     SPARE[4]
         (2nd line cont'd) -         1       201       5            3        - - - -

   SEE ALSO
         cunix(1M), sysm68k(2), sysm88k(2), edtp(8), boot(8)
























   7/91                                                                 Page 3





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