INB(10.2)                     (x86)                     INB(10.2)

     NAME
          inb, ins, inl, outb, outs, outl, insb, inss, insl, outsb,
          outss, outsl - programmed I/O

     SYNOPSIS
          int    inb(int port);

          ushort ins(int port);

          ulong  inl(int port);

          void   outb(int port, int value);

          void   outs(int port, ushort value);

          void   outl(int port, ulong value);

          void   insb(int port, void *address, int count);

          void   inss(int port, void *address, int count);

          void   insl(int port, void *address, int count);

          void   outsb(int port, void *address, int count);

          void   outss(int port, void *address, int count);

          void   outsl(int port, void *address, int count);

     DESCRIPTION
          The x86 implementation of Inferno provides functions to
          allow kernel code written in C to access the I/O address
          space.  On several other architectures such as the PowerPC
          and Strongarm, Inferno provides similar functions to access
          devices with an I/O space interface, even though memory
          mapped, to encourage portability of device drivers.

          Inb, ins and inl apply the corresponding hardware instruc-
          tion to fetch the next byte, short or long from the I/O
          port. Outb, outs and outl output a value to the I/O port.

          The remaining functions transfer count bytes, shorts, or
          longs using programmed I/O between a memory address and
          port. Functions insx copy values into memory; functions
          outsx copy values from memory.  The count is in elements,
          not bytes.

     SOURCE
          /os/pc/l.s

     Page 1                       Plan 9            (printed 12/22/24)

     INB(10.2)                     (x86)                     INB(10.2)

     SEE ALSO
          dma(10.2), isaconfig(10.2)

     Page 2                       Plan 9            (printed 12/22/24)