1#![allow(unused_imports)]
9
10use zerocopy::{FromBytes, IntoBytes};
11
12use crate::types::*;
13use crate::zx_common::*;
14
15#[repr(C)]
16#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
17pub struct PacketSignal {
18 pub trigger: Signals,
19 pub observed: Signals,
20 pub count: u64,
21 pub timestamp: Time,
22 pub reserved1: u64,
23}
24
25#[repr(C)]
26#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
27pub struct PacketException {
28 pub pid: u64,
29 pub tid: u64,
30 pub reserved0: u64,
31 pub reserved1: u64,
32}
33
34#[repr(C)]
35#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
36pub struct PacketGuestBell {
37 pub addr: Gpaddr,
38 pub reserved0: u64,
39 pub reserved1: u64,
40 pub reserved2: u64,
41}
42
43#[repr(C)]
44#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
45pub struct PacketGuestMem {
46 pub addr: Gpaddr,
47}
48
49#[repr(C)]
50#[derive(Clone, Copy, Debug, Eq, PartialEq)]
51pub struct PacketGuestIo {
52 pub port: u16,
53 pub access_size: u8,
54 pub input: bool,
55 pub reserved0: u64,
56 pub reserved1: u64,
57 pub reserved2: u64,
58}
59
60#[repr(C)]
61#[derive(Clone, Copy, Debug, Eq, PartialEq)]
62pub struct PacketGuestVcpu {
63 pub r#type: u8,
64 pub reserved: u64,
65}
66
67#[repr(C)]
68#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
69pub struct PacketInterrupt {
70 pub timestamp: Time,
71 pub reserved0: u64,
72 pub reserved1: u64,
73 pub reserved2: u64,
74}
75
76#[repr(C)]
77#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
78pub struct PacketPageRequest {
79 pub command: u16,
80 pub flags: u16,
81 pub reserved0: u32,
82 pub offset: u64,
83 pub length: u64,
84 pub reserved1: u64,
85}
86
87#[repr(C)]
88#[derive(Clone, Copy, Debug, Eq, FromBytes, IntoBytes, PartialEq)]
89pub struct PacketProcessorPowerLevelTransitionRequest {
90 pub domain_id: u32,
92 pub options: u32,
93 pub control_argument: u64,
94 pub control_interface: u64,
95 pub reserved: u64,
96}
97
98#[repr(C)]
99#[derive(Clone, Copy, Debug, Eq, PartialEq)]
100pub struct PortPacket {
101 pub key: u64,
102 pub r#type: u32,
103 pub status: Status,
104 pub signal: PacketSignal,
105 pub exception: PacketException,
106 pub guest_bell: PacketGuestBell,
107 pub guest_mem: PacketGuestMem,
108 pub guest_io: PacketGuestIo,
109 pub guest_vcpu: PacketGuestVcpu,
110 pub interrupt: PacketInterrupt,
111 pub page_request: PacketPageRequest,
112 pub processor_power_level_transition: PacketProcessorPowerLevelTransitionRequest,
113}