libtransistor
A userland library for the Nintendo Switch
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
waiter.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #include<libtransistor/types.h>
13 
14 typedef struct waiter_t waiter_t;
15 typedef struct wait_record_t wait_record_t;
16 
20 waiter_t *waiter_create();
21 
30 wait_record_t *waiter_add(waiter_t *waiter, handle_t handle, bool (*callback)(void *data, handle_t handle), void *data);
31 
40 wait_record_t *waiter_add_deadline(waiter_t *waiter, uint64_t deadline, uint64_t (*callback)(void *data), void *data);
41 
50 wait_record_t *waiter_add_signal(waiter_t *waiter, bool (*callback)(void *data), void *data);
51 
58 void waiter_signal(waiter_t *waiter, wait_record_t *record);
59 
66 void waiter_reset_signal(waiter_t *waiter, wait_record_t *record);
67 
71 result_t waiter_wait(waiter_t *waiter, uint64_t timeout);
72 
78 void waiter_cancel(waiter_t *waiter, wait_record_t *record);
79 
85 void waiter_destroy(waiter_t *waiter);
86 
87 #ifdef __cplusplus
88 }
89 #endif
void waiter_destroy(waiter_t *waiter)
Destroys a waiter.
void waiter_reset_signal(waiter_t *waiter, wait_record_t *record)
Resets the signal marked by waiter_signal.
Various system types.
uint32_t result_t
Function result.
Definition: types.h:51
void waiter_cancel(waiter_t *waiter, wait_record_t *record)
Removes a record from the waiter, interrupting it.
wait_record_t * waiter_add_deadline(waiter_t *waiter, uint64_t deadline, uint64_t(*callback)(void *data), void *data)
Adds a timed callback to the waiter.
waiter_t * waiter_create()
Creates a new waiter object.
uint32_t handle_t
Resource handle.
Definition: types.h:38
wait_record_t * waiter_add(waiter_t *waiter, handle_t handle, bool(*callback)(void *data, handle_t handle), void *data)
Adds a handle to wait on to the waiter.
void waiter_signal(waiter_t *waiter, wait_record_t *record)
Marks the callback represented by this record to be called, and interrupts the waiter.
wait_record_t * waiter_add_signal(waiter_t *waiter, bool(*callback)(void *data), void *data)
Adds a callback to the waiter that is signalled from another thread.
result_t waiter_wait(waiter_t *waiter, uint64_t timeout)
Waits for handles to signal.