{
g_autoptr(virCHMonitor) mon = NULL;
g_autoptr(virCommand) cmd = NULL;
- const char *socketdir = cfg->stateDir;
int socket_fd = 0;
if (virCHMonitorInitialize() < 0)
}
/* prepare to launch Cloud-Hypervisor socket */
- mon->socketpath = g_strdup_printf("%s/%s-socket", socketdir, vm->def->name);
- if (g_mkdir_with_parents(socketdir, 0777) < 0) {
+ mon->socketpath = g_strdup_printf("%s/%s-socket", cfg->stateDir, vm->def->name);
+ mon->eventmonitorpath = g_strdup_printf("%s/%s-event-monitor",
+ cfg->stateDir, vm->def->name);
+ if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
virReportSystemError(errno,
_("Cannot create socket directory '%1$s'"),
- socketdir);
+ cfg->stateDir);
return NULL;
}
virCommandAddArgFormat(cmd, "fd=%d", socket_fd);
virCommandPassFD(cmd, socket_fd, VIR_COMMAND_PASS_FD_CLOSE_PARENT);
+ virCommandAddArg(cmd, "--event-monitor");
+ virCommandAddArgFormat(cmd, "path=%s", mon->eventmonitorpath);
+
/* launch Cloud-Hypervisor socket */
if (virCommandRunAsync(cmd, &mon->pid) < 0)
return NULL;
g_clear_pointer(&mon->socketpath, g_free);
}
+ if (mon->eventmonitorpath) {
+ if (virFileRemove(mon->eventmonitorpath, -1, -1) < 0) {
+ VIR_WARN("Unable to remove CH event monitor file '%s'",
+ mon->eventmonitorpath);
+ }
+ g_clear_pointer(&mon->eventmonitorpath, g_free);
+ }
+
virObjectUnref(mon);
}