ae2f_docs
Loading...
Searching...
No Matches
Ftx.h
Go to the documentation of this file.
1/**
2 * @file Ftx.h
3 * System call which makes thread wait until certain memory changes.
4 * */
5
6#ifndef ae2f_Sys_Futex_h
7#define ae2f_Sys_Futex_h
8
9#include "../Sys.h"
10
11#if (ae2f_Sys_WIN(!)0 || ae2f_Sys__linux(!)0)
12#define N_ae2f_SysFtx_POSIX(a) a
13#define ae2f_SysFtx_POSIX(a)
14#else
15#define N_ae2f_SysFtx_POSIX(a)
16#define ae2f_SysFtx_POSIX(a) a
17#endif
18
19#include "./Ftx.core.h"
20
21#define _ae2f_SysFtxEl_t
22 ae2f_Sys_WIN(_ae2f_SysFtxEl_WIN)
24 ae2f_SysFtx_POSIX(_ae2f_SysFtxEl_POSIX)
25
26
27/** @brief Futex address element type. */
29
30#define _ae2f_SysFtxRet_t
31 ae2f_Sys_WIN(_ae2f_SysFtxRet_WIN)
32 ae2f_Sys__linux(_ae2f_SysFtxRet__linux)
33 ae2f_SysFtx_POSIX(_ae2f_SysFtxRet_POSIX)
34
35#define ae2f_SysFtxLibDeclare(tprm_import)
36 ae2f_Sys_WIN(ae2f_SysFtxLibDeclare_WIN(tprm_import)) ae2f_Sys__linux
37 (ae2f_SysFtxLibDeclare__linux(tprm_import)) ae2f_SysFtx_POSIX
38 (ae2f_SysFtxLibDeclare_POSIX(tprm_import))
39
40#define ae2f_SysFtxLibDefine(tprm_export)
41 ae2f_Sys_WIN(ae2f_SysFtxLibDefine_WIN(tprm_export)) ae2f_Sys__linux
42 (ae2f_SysFtxLibDeclare__linux(tprm_export)) ae2f_Sys_POSIX
43 (ae2f_SysFtxLibDeclare_POSIX(tprm_export))
44
45/**
46 * @def _ae2f_SysFtxWaitWithTmOut
47 * */
48#define _ae2f_SysFtxWaitWithTmOut(ramtmp_wait, ret_err, pprm_uaddr, prm_val, pprm_tm_opt)
49 ae2f_Sys_WIN(_ae2f_SysFtxWait_imp_WIN(ramtmp_wait, ret_err, pprm_uaddr, prm_val, pprm_tm_opt)) ae2f_Sys__linux
50 (_ae2f_SysFtxWait_imp__linux(ramtmp_wait, ret_err, pprm_uaddr, prm_val, pprm_tm_opt)) ae2f_SysFtx_POSIX
51 (_ae2f_SysFtxWait_imp_POSIX(ramtmp_wait, ret_err, pprm_uaddr, prm_val, pprm_tm_opt))
52
53#define _ae2f_SysFtxWait(ret_err, pprm_uaddr, prm_val) {
54 ae2f_Sys_WIN(ae2f_SysFtxEl_t v_ftxwait);
55 _ae2f_SysFtxWaitWithTmOut(v_ftxwait, ret_err, pprm_uaddr, prm_val, NULL); \
56}
57
58#define _ae2f_SysFtxWakeOne(ret_err, pprm_uaddr)
59 ae2f_Sys_WIN(_ae2f_SysFtxWakeOne_WIN(ret_err, pprm_uaddr)) ae2f_Sys__linux
60 (_ae2f_SysFtxWakeOne__linux(ret_err, pprm_uaddr)) ae2f_SysFtx_POSIX
61 (_ae2f_SysFtxWake_POSIX(ret_err, pprm_uaddr))
62
63
64#endif
#define ae2f_static_cast(t, v)
static_cast for C++
Definition Cast.h:28
#define _ae2f_SysFtxEl__linux
@ ae2f_SysFtxWait_GOOD
Succesful.
Definition Ftx.core.h:22
#define _ae2f_SysFtxEl_t
Definition Ftx.h:21
_ae2f_SysFtxEl_t ae2f_SysFtxEl_t
Futex address element type.
Definition Ftx.h:28
#define _ae2f_SysFtxWaitWithTmOut(ramtmp_wait, ret_err, pprm_uaddr, prm_val, pprm_tm_opt)
Definition Ftx.h:48
#define ae2f_SysFtx_POSIX(a)
Definition Ftx.h:16
#define ae2f_MAC(a)
A hint for creating a macro from void-returning function.
Definition Macro.h:17
#define ae2f_Sys_WIN
System does not support this version. <ae2f_SysInetMk::prm_VerReq>.
Definition Sys.h:18
char ae2f_Sys_unused_t
Type which is unused.
Definition Sys.h:89
#define ae2f_SysHosted(a)
Definition Sys.h:9
#define N_ae2f_Sys_WIN
Mutex is not owned by this thread.
Definition Sys.h:55
#define ae2f_Sys__linux
Value expected did not match.
Definition Sys.h:15
#define ae2f_SysNHosted(a)
Definition Sys.h:10