Hi Grant,
Additionally, if you wanted a basic example to look at, the camkes-vm-examples project uses a file server to share access to a CPIO filesystem across vmm instances. The fileserver component uses the cpio "filesystem" via musllibc syscalls to export a simple
open, close, read, seek RPC interface. The clients can then install the RPC interface functions as open, close, read, write syscall implementations in
musllibc.
I've listed some links to the relevant files below.
Kind regards,
Kent
camkes-vm-examples project adding vm images to cpio archive for vmm to load into vm: https://github.com/seL4/camkes-vm-examples/blob/master/optiplex9020/CMakeLists.txt#L44
Fileserver: https://github.com/SEL4PROJ/global-components/blob/master/components/FileServer/src/server.c
RPC interface: https://github.com/SEL4PROJ/global-components/blob/master/interfaces/FileServerInterface.camkes
VMM fileserver client: https://github.com/seL4/camkes-vm/blob/master/components/Init/src/fsclient.c
Hi Grant,
I can answer the "is there an easy way to integrate said filesystem into musllibc such that one could use the standard open/read/write/close
functions"?
The answer is yes ;). Take a look at libsel4camkes [1] which already binds some of the common C library functions. You could extend these for some subset of file descriptors that identifies your file system, or base an implementation on the code in this
library.
[1] https://github.com/seL4/camkes-tool/blob/master/libsel4camkes/src/sys_io.c
Cheers,
Anna.