[manual index][section index]

NAME

arch - x86 architecture-specific information and control

SYNOPSIS

bind -a #P /dev


/dev/cputype

/dev/ioalloc

/dev/iob

/dev/iol

/dev/iow

/dev/irqalloc

DESCRIPTION

This device presents textual information about PC hardware and allows user-level control of the I/O ports on x86-class machines.

Reads from cputype recover the processor type and clock rate.

Reads from ioalloc return I/O ranges used by each device, one line per range. Each line contains three fields separated by white space: first address in hexadecimal, last address, name of device.

Reads from irqalloc return the enabled interrupts, one line per interrupt. Each line contains three fields separated by white space: the trap number, the IRQ it is assigned to, and the name of the device using it.

Reads and writes to iob, iow, and iol cause 8-bit wide, 16-bit wide, and 32-bit wide requests to I/O ports. The port accessed is determined by the byte offset of the file descriptor.

EXAMPLE

The following Limbo code reads from an x86 byte I/O port.

inportb(port: int): byte
{
    data := array[1] of byte;

    if(iobfd == nil)
        iobfd = sys->open("#P/iob", Sys->ORDWR);

    sys->seek(iobfd, port, 0);
    if(sys->read(iobfd, data, len data) != len data)
        fatal(sys->sprint("inportb(16r%4.4x): %r\n", port));
    return data[0];
}

SOURCE

/os/pc/devarch.c

/man/3/arch(3) Rev:  Thu Feb 15 14:43:36 GMT 2007