2
3
4
5#ifndef ae2f_Sys_Thrd_core_h
6#define ae2f_Sys_Thrd_core_h
8#include <ae2f/LangVer.h>
17#define _ae2f_SysThrdRes_t DWORD
18#define _ae2f_SysThrdPrm_t LPVOID
19#define _ae2f_SysThrdID_t HANDLE
24
25
26
27#ifndef __ae2f_SysThrdStckTopOper
28#define __ae2f_SysThrdStckTopOper(prm_ptr, prm_sz) ((prm_ptr) + (prm_sz))
33#include <sys/syscall.h>
37#include <linux/sched.h>
41#define _ae2f_SysThrdRes_t int
42#define _ae2f_SysThrdPrm_t void*
43#define _ae2f_SysThrdID_t int
49
50
51
62 void* ae2f_restrict m_void;
63 char* ae2f_restrict m_char;
64 _ae2f_SysThrdRunnerPrm_t* ae2f_restrict m_prm;
67static void _ae2f_SysThrdRunner(_ae2f_SysThrdRunnerPrm_t* prm_stck) {
71 (prm_stck)->m_done = 0;
72 (prm_stck)->m_ret = (prm_stck->m_fn)((prm_stck)->m_arg);
73 (prm_stck)->m_done = 1;
77 , (&(prm_stck)->m_done)
83 syscall(SYS_exit, -1);
91#define _ae2f_SysThrdRes_t void*
92#define _ae2f_SysThrdPrm_t void*
93#define _ae2f_SysThrdID_t pthread_t
#define ae2f_structdef(key, name)
#define ae2f_reinterpret_cast(t, v)
#define unless(...)
Invokes when condition is false.
#define __ae2f_MACRO_GENERATED
#define _ae2f_SysFtxWait(ret_err, prm_uaddr, prm_val)
#define _ae2f_SysFtxWakeOne(ret_err, prm_uaddr)
_ae2f_SysFtxRet_t ae2f_SysFtxRet_t
State for futex operation.
_ae2f_SysFtxEl_t ae2f_SysFtxEl_t
Futex address element type.
#define _ae2f_SysThrdJoin_imp(ret_stat, ret_rtn, ref_thrd)
#define _ae2f_SysThrdYield_imp()
#define _ae2f_SysThrdSleep_imp(ret_stat, prm_req, prm_rem)
#define ae2f_Sys_Thrd_auto_h
#define _ae2f_SysThrdMk_imp(ret_stat, ret_thrd, prm_func, prm_arg, prm_stcksz_unused)
#define _ae2f_SysThrdID_t
#define _ae2f_SysThrdPrm_t
#define _ae2f_SysThrdRes_t
ae2f_eSysThrd_t
enum values related to thread. 't follows C11 thread standard.
_ae2f_SysThrdRes_t ae2f_SysThrdRes_t
Return type for thread.
_ae2f_SysThrdPrm_t ae2f_SysThrdPrm_t
Parameters for thread.
ae2f_SysThrdRes_t ae2f_SysThrdFn_t(ae2f_SysThrdPrm_t)
Thread starting function type.
_ae2f_SysThrdID_t ae2f_SysThrdID_t
Thread ID.