xref: /plan9-contrib/sys/man/9/inb (revision 2747dda25ec9e46ad7aa8de7850394ed7e10af69)
INB 9
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 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, the platform-dependent code provides similar functions to access devices with an I/O space interface, even when that is memory mapped, to encourage portability of device drivers.

Inb , ins and inl apply the corresponding hardware instruction 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 ins x copy values into memory; functions outs x copy values from memory. The count is in elements, not bytes.

SOURCE
/sys/src/9/pc/l.s
SEE ALSO
dma (9)