XMEM(7) — Silicon Graphics
NAME
xmem − EXOS ethernet front-end processor board memory
SYNOPSIS
#include <ex_ioctl.h>
#include <sys/init.h>
ioctl(xmem, EXIOCRESET, 0);
ioctl(xmem, EXIOCSTART, &startaddr);
ioctl(xmem, EXIOCGCONF, &confmsg);
DESCRIPTION
xmem is a special file that is an image of the EXOS board’s memory. lseek(2) can be used to set the on-board address. Any user can read(2), but only the super user can write(2). xmem also provides privileged ioctl(2) operations that configure the board and startup on-board code. netload(1M) uses this device to download TCP/IP code to the board and start it up. Subsequent to startup, xmem provides access to on-board data memory for utilities like adb(1).
EXIOCRESET resets the board and puts it through self-diagnostics, then configures it for downloading and front-end mode operation.
EXIOCSTART starts up downloaded code at the given segmented address.
EXIOCGCONF returns the configuration message (see init.h). Typically, it is used to obtain information that the EXOS returns in the configuration reply message. This includes NX firmware release and available on-board RAM locations. EXIOCGCONF should not be used before EXIOCRESET is called.
Before startup, byte addresses in xmem are interpreted as 8086-style segmented physical memory addresses. After startup, byte addresses are interpreted as 8086-style offsets relative to the current data segment value (0x1000 for TCP/IP) of the on-board code.
DIAGNOSTICS
EXIOCRESET
Returns EIO if the self-test or configuration failed
EXIOCSTART
Returns EIO if the starting address is invalid; reading or writing a nonexistent memory address on the EXOS board returns EIO or ENXIO
SEE ALSO
FILES
/dev/EXOS/xmem
BUGS
Before startup, read is not implemented.
Before startup, a write that advances the offset part of the segmented file pointer past 64K cause it to spill over into the segment part of the file pointer, with unexpected results.
After startup, reads and writes past 64K “wrap around” to 0. EOF never occurs.
Version 2.4 — May 08, 1986