ARCH(3) ARCH(3) NAME arch - 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 and DEC Alpha 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 sepa- rated 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 code reads from an x86 byte I/O port. uchar inportb(long port) { uchar data; if(iobfd == -1) iobfd = open("#P/iob", ORDWR); seek(iobfd, port, 0); if(read(iobfd, &data, sizeof(data)) != sizeof(data)) sysfatal("inportb(0x%4.4x): %r\n", port); Page 1 Plan 9 (printed 4/19/24) ARCH(3) ARCH(3) return data; } SOURCE /sys/src/9/pc/devarch.c Page 2 Plan 9 (printed 4/19/24)