1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- .TH ARCH 3
- .SH NAME
- arch \- architecture-specific information and control
- .SH SYNOPSIS
- .nf
- .B bind -a #P /dev
- .B /dev/cputype
- .B /dev/ioalloc
- .B /dev/iob
- .B /dev/iol
- .B /dev/iow
- .B /dev/irqalloc
- .SH DESCRIPTION
- .PP
- 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.
- .PP
- Reads from
- .I cputype
- recover the processor type and clock rate.
- .PP
- Reads from
- .I 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.
- .PP
- Reads from
- .I 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.
- .PP
- Reads and writes to
- .IR iob ,
- .IR iow ,
- and
- .I 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.
- .SH EXAMPLE
- The following code reads from an x86 byte I/O port.
- .IP
- .EX
- 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\en", port);
- return data;
- }
- .EE
- .SH SOURCE
- .B /sys/src/9/pc/devarch.c
|