
Hi Julia sDDF is intended to be used for doing I/O whether it’s completely native or in conjunction with virtual machines. In the sDDF repository, you’ll find examples of native clients using native device drivers for block, network, I2C, etc. You can think of libvmm as just a user of sDDF. In libvmm, sDDF is primarily used for emulating virtIO devices for virtual machines. For example, if we wanted a virtual machine to access the network, the VMM managing it would act as a client of a network sDDF system that would end up talking to a driver to do the actual I/O. However, because these interfaces between clients of a sDDF system and the components that actually manage the I/O are standard, we can also do things such as have a driver virtual machine rather than having a native driver. We’ve used this to leverage existing drivers in Linux to not have to write drivers for all the devices we want to make use of, e.g for audio drivers. You can find more info about the design of sDDF and its goals in the design doc [1]. Hope that clears things up. Ivan [1]: https://trustworthy.systems/projects/drivers/sddf-design-latest.pdf