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 10/31/25)
     INB(10.2)                     (x86)                     INB(10.2)
     SEE ALSO
          dma(10.2), isaconfig(10.2)
     Page 2                       Plan 9            (printed 10/31/25)