Skip to content

sentinel-stack/sentinel-vmi/src/kvmi_setup.c

sentinel-stack/sentinel-vmi/src/kvmi_setup.c

Section titled “sentinel-stack/sentinel-vmi/src/kvmi_setup.c”
Name
structkvmi_qemu2introspector_wire
structkvmi_introspector2qemu_wire
structkvmi_runtime
Name
typedef int(*)(void *dom, unsigned char(*uuid)[16], void *ctx)kvmi_new_guest_cb_t
typedef int(*)(const struct kvmi_qemu2introspector_wire *q2i, struct kvmi_introspector2qemu_wire *i2q, void *ctx)kvmi_handshake_cb_t
Name
voidcopy_cstr(char * dst, size_t dst_sz, const char * src)
intis_numeric_name(const char * s)
intread_pid_cmdline(int pid, char * out, size_t out_sz)
intfind_vm_pid(const char * vm_name)
intopen_kvm_device(void )
intopen_pid_fd(int pid, const char * fd_name)
intduplicate_fd_by_link_target(int qemu_pid, const char * needle)
intdiscover_vcpu_fds(struct vmi_session * session, int qemu_pid)
intparse_unix_socket_spec(const char * spec, char * path, size_t path_sz)
intextract_qmp_path_from_cmdline(const char * cmdline, char * path, size_t path_sz)
intparse_kvmi_chardev_spec(const char * spec, char * path, size_t path_sz)
intextract_kvmi_path_from_cmdline(const char * cmdline, char * path, size_t path_sz)
intdiscover_kvmi_socket_path(const char * vm_name, int qemu_pid, char * path, size_t path_sz)
intsocket_write_all(int fd, const char * buf, size_t len)
intsocket_read_text(int fd, char * buf, size_t buf_sz)
intconnect_qmp_channel(int qemu_pid)
intload_required_symbol(void * lib_handle, const char * name, void ** out)
intkvmi_accept_cb(void * dom, unsigned char(*) uuid[16], void * ctx)
intkvmi_handshake_cb(const struct kvmi_qemu2introspector_wire * q2i, struct kvmi_introspector2qemu_wire * i2q, void * ctx)
struct kvmi_runtime *kvmi_runtime_create(void )
voidkvmi_runtime_destroy(struct kvmi_runtime * runtime)
intkvmi_runtime_connect(struct kvmi_runtime * runtime, const char * socket_path, const char * vm_name)
intkvmi_runtime_reconnect(struct vmi_session * session)
intattach_libkvmi(struct vmi_session * session, const char * vm_name)
intkvmi_session_heartbeat(struct vmi_session * session)
intis_candidate_ram_map(const char * perms, const char * path, uint64_t span)
intenumerate_memslots_from_maps(struct vmi_session * session)
intenumerate_memslots(struct vmi_session * session)
struct vmi_session *kvmi_setup(const char * vm_name)
voidkvmi_teardown(struct vmi_session * session)
Name
VMI_MAX_MEMSLOTS
QMP_REPLY_MAX
MIN_RAM_MAPPING_SIZE
KVMI_CONNECT_WAIT_STEPS
KVMI_CONNECT_WAIT_US
KVMI_HEARTBEAT_MAX_MISSES
typedef int(* kvmi_new_guest_cb_t) (void *dom, unsigned char(*uuid)[16], void *ctx);
typedef int(* kvmi_handshake_cb_t) (const struct kvmi_qemu2introspector_wire *q2i, struct kvmi_introspector2qemu_wire *i2q, void *ctx);
static void copy_cstr(
char * dst,
size_t dst_sz,
const char * src
)
static int is_numeric_name(
const char * s
)
static int read_pid_cmdline(
int pid,
char * out,
size_t out_sz
)
static int find_vm_pid(
const char * vm_name
)
static int open_kvm_device(
void
)
static int open_pid_fd(
int pid,
const char * fd_name
)
static int duplicate_fd_by_link_target(
int qemu_pid,
const char * needle
)
static int discover_vcpu_fds(
struct vmi_session * session,
int qemu_pid
)
static int parse_unix_socket_spec(
const char * spec,
char * path,
size_t path_sz
)
static int extract_qmp_path_from_cmdline(
const char * cmdline,
char * path,
size_t path_sz
)
static int parse_kvmi_chardev_spec(
const char * spec,
char * path,
size_t path_sz
)
static int extract_kvmi_path_from_cmdline(
const char * cmdline,
char * path,
size_t path_sz
)
static int discover_kvmi_socket_path(
const char * vm_name,
int qemu_pid,
char * path,
size_t path_sz
)
static int socket_write_all(
int fd,
const char * buf,
size_t len
)
static int socket_read_text(
int fd,
char * buf,
size_t buf_sz
)
static int connect_qmp_channel(
int qemu_pid
)
static int load_required_symbol(
void * lib_handle,
const char * name,
void ** out
)
static int kvmi_accept_cb(
void * dom,
unsigned char(*) uuid[16],
void * ctx
)
static int kvmi_handshake_cb(
const struct kvmi_qemu2introspector_wire * q2i,
struct kvmi_introspector2qemu_wire * i2q,
void * ctx
)
static struct kvmi_runtime * kvmi_runtime_create(
void
)
static void kvmi_runtime_destroy(
struct kvmi_runtime * runtime
)
static int kvmi_runtime_connect(
struct kvmi_runtime * runtime,
const char * socket_path,
const char * vm_name
)
static int kvmi_runtime_reconnect(
struct vmi_session * session
)
static int attach_libkvmi(
struct vmi_session * session,
const char * vm_name
)
int kvmi_session_heartbeat(
struct vmi_session * session
)
static int is_candidate_ram_map(
const char * perms,
const char * path,
uint64_t span
)
static int enumerate_memslots_from_maps(
struct vmi_session * session
)
static int enumerate_memslots(
struct vmi_session * session
)
struct vmi_session * kvmi_setup(
const char * vm_name
)
void kvmi_teardown(
struct vmi_session * session
)
#define VMI_MAX_MEMSLOTS 256
#define QMP_REPLY_MAX 4096
#define MIN_RAM_MAPPING_SIZE (2ULL * 1024ULL * 1024ULL)
#define KVMI_CONNECT_WAIT_STEPS 20
#define KVMI_CONNECT_WAIT_US 100000
#define KVMI_HEARTBEAT_MAX_MISSES 3

Updated on 2026-05-26 at 13:25:29 +0000