VSF Documented
wait.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_SYS_WAIT_H__
2#define __VSF_LINUX_SYS_WAIT_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "../sys/types.h"
8# include "../signal.h"
9#else
10# include <sys/types.h>
11# include <signal.h>
12#endif
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#if VSF_LINUX_CFG_WRAPPER == ENABLED
19#define waitpid VSF_LINUX_WRAPPER(waitpid)
20#endif
21
22// syscalls
23
24#define __NR_waitpid waitpid
25
26// options of waitpid
27#define WEXITED 1
28#define WSTOPPED 2
29#define WCONTINUED 3
30#define WNOHANG 4
31#define WNOWAIT 5
32#define WUNTRACED 6
33
34// internal usage
35#define PID_STATUS_RUNNING (1 << 0)
36#define PID_STATUS_DAEMON (1 << 1)
37
38#define WIFEXITED(__STATUS) !((__STATUS) & 0xFF)
39#define WEXITSTATUS(__STATUS) ((__STATUS) >> 8)
40// TODO: implement WIFSIGNALED
41#define WIFSIGNALED(__STATUS) 0
42#define WTERMSIG(__STATUS) ((__STATUS) & 0x7F)
43#define WIFSTOPPED(__STATUS) 0
44#define WSTOPSIG(__STATUS) 0
45
46#if VSF_LINUX_APPLET_USE_SYS_WAIT == ENABLED
49
54# ifndef __VSF_APPLET__
56# endif
57#endif
58
59#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SYS_WAIT_LIB__))\
60 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SYS_WAIT == ENABLED
61
62#ifndef VSF_LINUX_APPLET_SYS_WAIT_VPLT
63# if VSF_LINUX_USE_APPLET == ENABLED
64# define VSF_LINUX_APPLET_SYS_WAIT_VPLT \
65 ((vsf_linux_sys_wait_vplt_t *)(VSF_LINUX_APPLET_VPLT->sys_wait_vplt))
66# else
67# define VSF_LINUX_APPLET_SYS_WAIT_VPLT \
68 ((vsf_linux_sys_wait_vplt_t *)vsf_vplt((void *)0))
69# endif
70#endif
71
72#define VSF_LINUX_APPLET_SYS_WAIT_ENTRY(__NAME) \
73 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SYS_WAIT_VPLT, __NAME)
74#define VSF_LINUX_APPLET_SYS_WAIT_IMP(...) \
75 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SYS_WAIT_VPLT, __VA_ARGS__)
76
77VSF_LINUX_APPLET_SYS_WAIT_IMP(wait, pid_t, int *status) {
79 return VSF_LINUX_APPLET_SYS_WAIT_ENTRY(wait)(status);
80}
81VSF_LINUX_APPLET_SYS_WAIT_IMP(waitpid, pid_t, pid_t pid, int *status, int options) {
83 return VSF_LINUX_APPLET_SYS_WAIT_ENTRY(waitpid)(pid, status, options);
84}
85VSF_LINUX_APPLET_SYS_WAIT_IMP(waitid, int, idtype_t idtype, id_t id, siginfo_t *infop, int options) {
87 return VSF_LINUX_APPLET_SYS_WAIT_ENTRY(waitid)(idtype, id, infop, options);
88}
89
90#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_WAIT
91
92pid_t wait(int *status);
93pid_t waitpid(pid_t pid, int *status, int options);
94int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
95
96#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_SYS_WAIT
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif
idtype_t
Definition types.h:112
int pid_t
Definition types.h:85
int id_t
Definition types.h:86
Definition signal.h:67
Definition wait.h:47
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(waitid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(waitpid)
vsf_vplt_info_t info
Definition wait.h:48
#define waitpid
Definition wait.h:19
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
Definition vsf_linux.c:2764
__VSF_VPLT_DECORATOR__ vsf_linux_sys_wait_vplt_t vsf_linux_sys_wait_vplt
Definition vsf_linux.c:4797
pid_t wait(int *status)
Definition vsf_linux.c:2705
Definition vsf_cfg.h:95
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint8_t status
Definition vsf_tgui.h:122