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 querying 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.