blob: 3ceeb02f554f48dbf8b6940a822e2c02e482425d [file] [log] [blame]
.. zephyr:code-sample:: virtiofs
:name: virtiofs filesystem
:relevant-api: file_system_api
Use file system API over virtiofs.
Overview
********
This sample app demonstrates the use of Zephyr's :ref:`file system API
<file_system_api>` over `virtiofs <https://virtio-fs.gitlab.io/>`_ by reading, creating and listing files and directories.
In the case of virtiofs the mounted filesystem is a directory on the host.
Requirements
************
This sample requires `virtiofsd <https://gitlab.com/virtio-fs/virtiofsd>`_ to run.
Building
********
.. zephyr-app-commands::
:zephyr-app: samples/subsys/fs/virtiofs
:board: qemu_x86_64
:goals: build
:compact:
Running
*******
Before launching QEMU ``virtiofsd`` has to be running. QEMU's arguments are embedded using :code:`CONFIG_QEMU_EXTRA_FLAGS` and socket path is set to :code:`/tmp/vhostqemu`, so ``virtiofsd`` has to be launched using
.. code-block::
virtiofsd --socket-path=/tmp/vhostqemu -o source=shared_dir_path
where :code:`shared_dir_path` is a directory that will be mounted on Zephyr side.
Then you can launch QEMU using:
.. code-block::
west build -t run
This sample will list the files and directories in the mounted filesystem and print the contents of the file :code:`file` in the mounted directory.
This sample will also create some files and directories.
You can create the sample directory using :code:`prepare_sample_directory.sh`.
Example output:
.. code-block::
*** Booting Zephyr OS build v4.1.0-rc1-28-gc6816316fc50 ***
/virtiofs directory tree:
- dir2 (type=dir)
- b (type=file, size=3)
- a (type=file, size=2)
- c (type=file, size=4)
- dir (type=dir)
- some_file (type=file, size=0)
- nested_dir (type=dir)
- some_other_file (type=file, size=0)
- file (type=file, size=27)
/virtiofs/file content:
this is a file on the host
After running the sample you can check the created files:
.. code-block:: console
shared_dir_path$ cat file_created_by_zephyr
hello world
shared_dir_path$ cat second_file_created_by_zephyr
lorem ipsum