#[cfg(target_arch = "aarch64")]
pub mod aarch64;
use core_affinity::CoreId;
use nix::sys::{
pthread::{Pthread, pthread_kill},
signal::{SIGUSR1, SigHandler, Signal, signal},
};
#[cfg(target_arch = "aarch64")]
pub use crate::macos::aarch64::vcpu::{XhyveCpu, XhyveVm};
use crate::vm::{UhyveVm, VmResult};
pub(crate) struct KickSignal;
impl KickSignal {
fn get() -> Signal {
SIGUSR1
}
pub(crate) fn register_handler() -> nix::Result<()> {
extern "C" fn handle_signal(_signal: libc::c_int) {}
unsafe {
signal(Self::get(), SigHandler::Handler(handle_signal))?;
}
Ok(())
}
pub(crate) fn pthread_kill(pthread: Pthread) -> nix::Result<()> {
pthread_kill(pthread, Self::get())
}
}
pub(crate) type DebugExitInfo = ();
impl UhyveVm<XhyveVm> {
pub fn run(self, cpu_affinity: Option<Vec<CoreId>>) -> VmResult {
self.run_no_gdb(cpu_affinity)
}
}