Ironclad exposes a number of physical and virtual devices to userland. All
of them are exposed under the /dev
location, and support a series of
standard operations, like being manipulated by the usual file-related
syscalls like read
or write
, while sporting device-specific
interfaces in the form of device-specific ioctl
requests.
When quering device-specific information, Ironclad exposes information a bit different than other kernels like Linux. Here is a quick list of the most notable differences:
BLKGETSIZE
/BLKGETSIZE64
ioctl
calls are not available,
instead, the block count and block size values of stat
are used.
All devices in Ironclad have the ioctl
call DEV_UUID
implemented,
with the signature:
#define DEV_UUID 0x9821 ioctl(fd, DEV_UUID, &pointer_to_uuid); -- uuids being uint8_t[16];
This call will write the UUID of the device pointed to by fd
, which, if
all zeros, will mean that the device has no associated UUID.