mirror of
https://dev.lirent.ru/Vatrog/vm-automation-signaling.git
synced 2026-06-25 20:36:36 +03:00
e9aee057c7
An epoll-driven, neutral transfer-event bus that connects sensors and input actuators to one or more controls, bidirectionally. It owns the transfer context and events — delivery order, priority, protocol-level timing, and an interrupt-driven event model over fd sources (eventfd/timerfd/sockets) — and stays agnostic to both the sensor/input drivers and the control. What lives here: - memctx: a coherent address-space context per endpoint — the guest address-space root paired with a pre-opened read-only RAM-region fd, with per-endpoint epoch invalidation and retained replay to late subscribers. Perception lives in out-of-tree sensor libraries that consume this datum read-only. - exclusive-ownership leases for destructive resource classes (input, power, memory-write). - write-signaled memory writes (MEMWRITE): an atomic write to guest memory routed through the seam under an exclusive lease, never a writable mapping. - a host-management seam for VM lifecycle/status and a neutral input-injection command path. - multi-VM endpoints; capability-gated, audited control authorization over an in-process or unix-socket transport. Builds against headers only by default (a stub mode that exercises the seam without a VM); armed builds link the real sensor/input libraries behind flags.
14 lines
465 B
C
14 lines
465 B
C
#ifndef VMSIG_VMHOST_H
|
|
#define VMSIG_VMHOST_H
|
|
|
|
/* Private config of the vmhost adapter (signaling's own QMP client).
|
|
* cfg==NULL or no qmp_path => stub mode (synthetic events, no QEMU).
|
|
* qmp_path given => armed: connect to QEMU's QMP socket ('@' prefix = abstract).
|
|
* No build flag needed — the client depends only on POSIX and its own code. */
|
|
typedef struct {
|
|
int stub;
|
|
const char* qmp_path;
|
|
} vmsig_vmhost_cfg;
|
|
|
|
#endif /* VMSIG_VMHOST_H */
|