libnx v4.9.0
Loading...
Searching...
No Matches
uevent.h
Go to the documentation of this file.
1/**
2 * @file uevent.h
3 * @brief User-mode event synchronization primitive.
4 * @author plutoo
5 * @copyright libnx Authors
6 */
7#pragma once
8#include "wait.h"
9
10typedef struct UEvent UEvent;
11
12/// User-mode event object.
13struct UEvent {
14 Waitable waitable;
15 bool signal;
16 bool auto_clear;
17};
18
19/// Creates a waiter for a user-mode event.
20static inline Waiter waiterForUEvent(UEvent* e)
21{
22 Waiter wait_obj;
23 wait_obj.type = WaiterType_Waitable;
24 wait_obj.waitable = &e->waitable;
25 return wait_obj;
26}
27
28/**
29 * @brief Creates a user-mode event.
30 * @param[out] e UEvent object.
31 * @param[in] auto_clear Whether to automatically clear the event.
32 * @note It is safe to wait on this event with several threads simultaneously.
33 * @note If more than one thread is listening on it, at least one thread will get the signal. No other guarantees.
34 */
35void ueventCreate(UEvent* e, bool auto_clear);
36
37/**
38 * @brief Clears the event signal.
39 * @param[in] e UEvent object.
40 */
42
43/**
44 * @brief Signals the event.
45 * @param[in] e UEvent object.
46 */
User-mode event object.
Definition uevent.h:13
Definition wait.h:21
Waiter structure, representing any generic waitable synchronization object; both kernel-mode and user...
Definition wait.h:36
static Waiter waiterForUEvent(UEvent *e)
Creates a waiter for a user-mode event.
Definition uevent.h:20
void ueventSignal(UEvent *e)
Signals the event.
void ueventClear(UEvent *e)
Clears the event signal.
void ueventCreate(UEvent *e, bool auto_clear)
Creates a user-mode event.
User mode synchronization primitive waiting operations.