uhyve_interface/v2/
mod.rs1pub mod parameters;
9use parameters::*;
10
11#[non_exhaustive]
16#[repr(u64)]
17#[derive(Clone, Copy, Debug, Eq, PartialEq, num_enum::TryFromPrimitive, Hash)]
18pub enum HypercallAddress {
19 Exit = 0x1010,
20 SerialWriteByte = 0x1020,
21 SerialWriteBuffer = 0x1030,
22 SerialReadByte = 0x1040,
23 SerialReadBuffer = 0x1050,
24 FileWrite = 0x1100,
25 FileOpen = 0x1110,
26 FileClose = 0x1120,
27 FileRead = 0x1130,
28 FileLseek = 0x1140,
29 FileUnlink = 0x1150,
30 SharedMemOpen = 0x1200,
31 SharedMemClose = 0x1210,
32}
33
34into_hypercall_addresses! {
35 impl From<Hypercall> for HypercallAddress {
36 match {
37 Exit,
38 FileClose,
39 FileLseek,
40 FileOpen,
41 FileRead,
42 FileUnlink,
43 FileWrite,
44 SerialReadBuffer,
45 SerialReadByte,
46 SerialWriteBuffer,
47 SerialWriteByte,
48 }
49 }
50}
51
52#[non_exhaustive]
54#[derive(Debug)]
55pub enum Hypercall<'a> {
56 Exit(i32),
58 FileClose(&'a mut CloseParams),
59 FileLseek(&'a mut LseekParams),
60 FileOpen(&'a mut OpenParams),
61 FileRead(&'a mut ReadParams),
62 FileWrite(&'a mut WriteParams),
63 FileUnlink(&'a mut UnlinkParams),
64 SerialWriteByte(u8),
66 SerialWriteBuffer(&'a SerialWriteBufferParams),
68 SerialReadByte,
70 SerialReadBuffer(&'a SerialReadBufferParams),
72}
73impl<'a> Hypercall<'a> {
74 pub fn port(self) -> u16 {
76 HypercallAddress::from(self) as u16
77 }
78}