twizzler_abi/thread/
event.rs1use crate::object::ObjID;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
5#[repr(C)]
6pub struct AsyncEvent {
7 pub sender: ObjID,
9 pub flags: AsyncEventFlags,
11 pub message: u32,
13 pub aux: [u64; MAX_AUX_DATA],
15}
16
17impl AsyncEvent {
18 pub fn new(
20 sender: ObjID,
21 flags: AsyncEventFlags,
22 message: u32,
23 aux: [u64; MAX_AUX_DATA],
24 ) -> Self {
25 Self {
26 sender,
27 flags,
28 message,
29 aux,
30 }
31 }
32}
33
34pub const MAX_AUX_DATA: usize = 7;
36
37bitflags::bitflags! {
38 #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
40 pub struct AsyncEventFlags : u32 {
41 const NON_BLOCKING = 1;
43 }
44}
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
48#[repr(C)]
49pub struct AsyncEventCompletion {
50 pub flags: AsyncEventCompletionFlags,
52 pub status: u32,
54 pub aux: [u64; MAX_AUX_DATA],
56}
57
58impl AsyncEventCompletion {
59 pub fn new(flags: AsyncEventCompletionFlags, status: u32, aux: [u64; MAX_AUX_DATA]) -> Self {
61 Self { flags, status, aux }
62 }
63}
64
65bitflags::bitflags! {
66 #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
68 pub struct AsyncEventCompletionFlags : u32 {
69 }
70}