ReXGlue SDK
Toggle main menu visibility
Loading...
Searching...
No Matches
event_object.h
Go to the documentation of this file.
1
17
18
#pragma once
19
20
#include <atomic>
21
#include <memory>
22
23
#include <
rex/assert.h
>
24
#include <
rex/kernel/object/object.h
>
25
#include <
rex/kernel/types/list.h
>
26
#include <
rex/kernel/types/memory.h
>
27
#include <
rex/kernel/types/status.h
>
28
#include <
rex/kernel/types/thread.h
>
29
#include <
rex/module.h
>
30
#include <
rex/platform.h
>
31
#include <
rex/platform/sync.h
>
32
#include <
rex/platform/thread.h
>
33
#include <
rex/platform/timer.h
>
34
#include <
rex/result.h
>
35
#include <
rex/types.h
>
36
37
namespace
rex::kernel
{
38
39
struct
X_KEVENT
{
40
X_DISPATCH_HEADER
header;
41
};
42
REX_STATIC_ASSERT_SIZE(
X_KEVENT
, 0x10);
43
44
class
IGuestEvent
{
45
public
:
46
virtual
~IGuestEvent
() =
default
;
47
51
virtual
i32
Set
() = 0;
52
56
virtual
i32
Reset
() = 0;
57
};
58
59
struct
EventObject
:
IGuestEvent
{
64
REX_KERNEL_API
EventObject
(
bool
manual_reset_in,
bool
initial_state);
65
70
REX_KERNEL_API
explicit
EventObject
(
const
X_DISPATCH_HEADER
& header);
71
73
std::atomic<bool>
manual_reset
{
false
};
75
PublishedPtr<rex::platform::Event>
event
;
76
83
REX_KERNEL_API
void
Query
(u32* out_type, u32* out_state);
84
85
REX_KERNEL_API
i32
Set
()
override
;
86
92
REX_KERNEL_API
i32
Pulse
();
93
94
REX_KERNEL_API
i32
Reset
()
override
;
95
};
96
97
}
// namespace rex::kernel
assert.h
rex::kernel::IGuestEvent
Definition
event_object.h:44
rex::kernel::IGuestEvent::Reset
virtual i32 Reset()=0
rex::kernel::IGuestEvent::Set
virtual i32 Set()=0
rex::kernel::PublishedPtr
Definition
object.h:190
memory.h
Virtual memory flags and typed guest pointers.
thread.h
list.h
Guest list and spin lock structures.
module.h
Interfaces, factory and module declaration.
rex::kernel
Definition
export.h:24
object.h
thread.h
platform.h
Platform flags, packing macros and export markers.
REX_KERNEL_API
#define REX_KERNEL_API
Definition
platform.h:297
result.h
status.h
rex::kernel::EventObject::manual_reset
std::atomic< bool > manual_reset
Definition
event_object.h:73
rex::kernel::EventObject::event
PublishedPtr< rex::platform::Event > event
Definition
event_object.h:75
rex::kernel::EventObject::Set
i32 Set() override
rex::kernel::EventObject::EventObject
EventObject(const X_DISPATCH_HEADER &header)
rex::kernel::EventObject::Reset
i32 Reset() override
rex::kernel::EventObject::Query
void Query(u32 *out_type, u32 *out_state)
rex::kernel::EventObject::EventObject
EventObject(bool manual_reset_in, bool initial_state)
rex::kernel::EventObject::Pulse
i32 Pulse()
rex::kernel::X_DISPATCH_HEADER
Definition
thread.h:70
rex::kernel::X_KEVENT
Definition
event_object.h:39
sync.h
Wait objects and wait functions.
timer.h
types.h
Integer types, byte order wrappers and size literals.
rex
kernel
object
event_object.h
Generated by
1.18.0