vhost-device/crates/gpio
dependabot[bot] 51c5bc0431 build(deps): bump clap from 4.3.23 to 4.4.3
Bumps [clap](https://github.com/clap-rs/clap) from 4.3.23 to 4.4.3.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.3.23...v4.4.3)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-13 17:10:17 +02:00
..
src gpio: silence (valid) clippy warning for now 2023-09-13 15:58:52 +01:00
Cargo.toml build(deps): bump clap from 4.3.23 to 4.4.3 2023-09-13 17:10:17 +02:00
CHANGELOG.md Add CHANGELOG.md to all crates 2023-07-07 22:06:45 +05:30
LICENSE-APACHE Symlink license files into crate folders 2023-07-04 14:56:52 +05:30
LICENSE-BSD-3-Clause Symlink license files into crate folders 2023-07-04 14:56:52 +05:30
README.md gpio: update License in source files and readme 2022-10-27 11:19:40 -06:00

vhost-device-gpio - GPIO emulation backend daemon

Description

This program is a vhost-user backend that emulates a VirtIO GPIO device. This program takes a list of gpio devices on the host OS and then talks to them via the /dev/gpiochip{X} interface when a request comes from the guest OS for an GPIO device.

This program is tested with QEMU's -device vhost-user-gpio-pci but should work with any virtual machine monitor (VMM) that supports vhost-user. See the Examples section below.

Synopsis

vhost-device-gpio [OPTIONS]

Options

.. program:: vhost-device-gpio

.. option:: -h, --help

Print help.

.. option:: -s, --socket-path=PATH

Location of vhost-user Unix domain sockets, this path will be suffixed with 0,1,2..socket_count-1.

.. option:: -c, --socket-count=INT

Number of guests (sockets) to attach to, default set to 1.

.. option:: -l, --device-list=GPIO-DEVICES

GPIO device list at the host OS in the format: [:]

  Example: --device-list "2:4:7"

Here, each GPIO devices correspond to a separate guest instance, i.e. the number of devices in the device-list must match the number of sockets in the --socket-count. For example, the GPIO device 0 will be allocated to the guest with "0" path.

Examples

The daemon should be started first:

::

host# vhost-device-gpio --socket-path=gpio.sock --socket-count=1 --device-list 0:3

The QEMU invocation needs to create a chardev socket the device can use to communicate as well as share the guests memory over a memfd.

::

host# qemu-system
-chardev socket,path=vgpio.sock,id=vgpio
-device vhost-user-gpio-pci,chardev=vgpio,id=gpio
-m 4096
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on
-numa node,memdev=mem
...

License

This project is licensed under either of