VSF Documented
spawn.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_SPAWN_H__
2#define __VSF_LINUX_SPAWN_H__
3
5
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "./sys/types.h"
8# include "./signal.h"
9# include "./sched.h"
10#else
11# include <sys/types.h>
12# include <signal.h>
13# include <sched.h>
14#endif
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20typedef struct {
21 short int flags;
23
25 enum {
31 } tag;
32 union {
33 struct {
34 int fd;
36 struct {
37 int fd;
38 int newfd;
40 struct {
41 int fd;
42 char *path;
43 int oflag;
46 struct {
47 char *path;
49 struct {
50 int fd;
53};
54
55typedef struct {
57 int used;
60
61#if VSF_LINUX_APPLET_USE_SPAWN == ENABLED
62typedef struct vsf_linux_spawn_vplt_t {
64
81
90# ifndef __VSF_APPLET__
92# endif
93#endif
94
95#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SPAWN_LIB__))\
96 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SPAWN == ENABLED
97
98#ifndef VSF_LINUX_APPLET_SPAWN_VPLT
99# if VSF_LINUX_USE_APPLET == ENABLED
100# define VSF_LINUX_APPLET_SPAWN_VPLT \
101 ((vsf_linux_spawn_vplt_t *)(VSF_LINUX_APPLET_VPLT->spawn_vplt))
102# else
103# define VSF_LINUX_APPLET_SPAWN_VPLT \
104 ((vsf_linux_spawn_vplt_t *)vsf_vplt((void *)0))
105# endif
106#endif
107
108#define VSF_LINUX_APPLET_SPAWN_ENTRY(__NAME) \
109 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SPAWN_VPLT, __NAME)
110#define VSF_LINUX_APPLET_SPAWN_IMP(...) \
111 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SPAWN_VPLT, __VA_ARGS__)
112
113VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn, int, pid_t *pid, const char *path, const posix_spawn_file_actions_t *actions, const posix_spawnattr_t *attr, char * const argv[], char * const env[]) {
115 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn)(pid, path, actions, attr, argv, env);
116}
117VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnp, int, pid_t *pid, const char *file, const posix_spawn_file_actions_t *actions, const posix_spawnattr_t *attr, char * const argv[], char * const env[]) {
119 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnp)(pid, file, actions, attr, argv, env);
120}
121VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_init, int, posix_spawnattr_t *attr) {
123 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_init)(attr);
124}
125VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_destroy, int, posix_spawnattr_t *attr) {
127 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_destroy)(attr);
128}
129VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getsigdefault, int, const posix_spawnattr_t *attr, sigset_t *sigdefault) {
131 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getsigdefault)(attr, sigdefault);
132}
133VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setsigdefault, int, posix_spawnattr_t *attr, const sigset_t *sigdefault) {
135 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setsigdefault)(attr, sigdefault);
136}
137VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getsigmask, int, const posix_spawnattr_t *attr, sigset_t *sigmask) {
139 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getsigmask)(attr, sigmask);
140}
141VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setsigmask, int, posix_spawnattr_t *attr, const sigset_t *sigmask) {
143 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setsigmask)(attr, sigmask);
144}
145VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getflags, int, const posix_spawnattr_t *attr, short int *flags) {
147 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getflags)(attr, flags);
148}
149VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setflags, int, posix_spawnattr_t *attr, short int flags) {
151 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setflags)(attr, flags);
152}
153VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getpgroup, int, const posix_spawnattr_t *attr, pid_t *pgroup) {
155 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getpgroup)(attr, pgroup);
156}
157VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setpgroup, int, posix_spawnattr_t *attr, pid_t pgroup) {
159 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setpgroup)(attr, pgroup);
160}
161VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getschedpolicy, int, const posix_spawnattr_t *attr, int *schedpolicy) {
163 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getschedpolicy)(attr, schedpolicy);
164}
165VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setschedpolicy, int, posix_spawnattr_t *attr, int schedpolicy) {
167 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setschedpolicy)(attr, schedpolicy);
168}
169VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_getschedparam, int, const posix_spawnattr_t *attr, struct sched_param *schedparam) {
171 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_getschedparam)(attr, schedparam);
172}
173VSF_LINUX_APPLET_SPAWN_IMP(posix_spawnattr_setschedparam, int, posix_spawnattr_t *attr, const struct sched_param *schedparam) {
175 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawnattr_setschedparam)(attr, schedparam);
176}
177VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_init, int, posix_spawn_file_actions_t *actions) {
179 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_init)(actions);
180}
181VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_destroy, int, posix_spawn_file_actions_t *actions) {
183 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_destroy)(actions);
184}
185VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_addopen, int, posix_spawn_file_actions_t *actions, int fd, const char *path, int oflag, mode_t mode) {
187 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_addopen)(actions, fd, path, oflag, mode);
188}
189VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_addclose, int, posix_spawn_file_actions_t *actions, int fd) {
191 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_addclose)(actions, fd);
192}
193VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_adddup2, int, posix_spawn_file_actions_t *actions, int fd, int newfd) {
195 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_adddup2)(actions, fd, newfd);
196}
197VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_addchdir_np, int, posix_spawn_file_actions_t *actions, const char *path) {
199 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_addchdir_np)(actions, path);
200}
201VSF_LINUX_APPLET_SPAWN_IMP(posix_spawn_file_actions_addfchdir_np, int, posix_spawn_file_actions_t *actions, int fd) {
203 return VSF_LINUX_APPLET_SPAWN_ENTRY(posix_spawn_file_actions_addfchdir_np)(actions, fd);
204}
205
206#else
207
208int posix_spawn(pid_t *pid, const char *path,
209 const posix_spawn_file_actions_t *actions,
210 const posix_spawnattr_t *attr,
211 char * const argv[], char * const env[]);
212int posix_spawnp(pid_t *pid, const char *file,
213 const posix_spawn_file_actions_t *actions,
214 const posix_spawnattr_t *attr,
215 char * const argv[], char * const env[]);
216
219int posix_spawnattr_getsigdefault(const posix_spawnattr_t *attr, sigset_t *sigdefault);
220int posix_spawnattr_setsigdefault(posix_spawnattr_t *attr, const sigset_t *sigdefault);
221int posix_spawnattr_getsigmask(const posix_spawnattr_t *attr, sigset_t *sigmask);
222int posix_spawnattr_setsigmask(posix_spawnattr_t *attr, const sigset_t *sigmask);
223int posix_spawnattr_getflags(const posix_spawnattr_t *attr, short int *flags);
224int posix_spawnattr_setflags(posix_spawnattr_t *attr, short int flags);
225int posix_spawnattr_getpgroup(const posix_spawnattr_t *attr, pid_t *pgroup);
227int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *attr, int *schedpolicy);
228int posix_spawnattr_setschedpolicy(posix_spawnattr_t *attr, int schedpolicy);
229int posix_spawnattr_getschedparam(const posix_spawnattr_t *attr, struct sched_param *schedparam);
230int posix_spawnattr_setschedparam(posix_spawnattr_t *attr, const struct sched_param *schedparam);
231
236 int fd, const char *path,
237 int oflag, mode_t mode);
239int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *actions, int fd, int newfd);
242
243#endif
244
245#ifdef __cplusplus
246}
247#endif
248
249#endif
int pid_t
Definition types.h:85
unsigned int mode_t
Definition types.h:87
int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *actions, int fd, const char *path, int oflag, mode_t mode)
Definition vsf_linux.c:4202
int posix_spawnattr_getschedparam(const posix_spawnattr_t *attr, struct sched_param *schedparam)
Definition vsf_linux.c:4165
int posix_spawnattr_setschedparam(posix_spawnattr_t *attr, const struct sched_param *schedparam)
Definition vsf_linux.c:4170
int posix_spawnattr_init(posix_spawnattr_t *attr)
Definition vsf_linux.c:4104
int posix_spawnattr_getsigdefault(const posix_spawnattr_t *attr, sigset_t *sigdefault)
Definition vsf_linux.c:4115
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *actions, int fd, int newfd)
Definition vsf_linux.c:4232
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *actions)
Definition vsf_linux.c:4188
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *actions, int fd)
Definition vsf_linux.c:4220
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *actions)
Definition vsf_linux.c:4194
int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *actions, int fd)
Definition vsf_linux.c:4257
int posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *actions, const posix_spawnattr_t *attr, char *const argv[], char *const env[])
Definition vsf_linux.c:4096
int posix_spawnattr_setflags(posix_spawnattr_t *attr, short int flags)
Definition vsf_linux.c:4140
__VSF_VPLT_DECORATOR__ vsf_linux_spawn_vplt_t vsf_linux_spawn_vplt
Definition vsf_linux.c:4897
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *attr, int *schedpolicy)
Definition vsf_linux.c:4155
int posix_spawnattr_getpgroup(const posix_spawnattr_t *attr, pid_t *pgroup)
Definition vsf_linux.c:4145
int posix_spawnattr_setsigdefault(posix_spawnattr_t *attr, const sigset_t *sigdefault)
Definition vsf_linux.c:4120
int posix_spawnattr_getflags(const posix_spawnattr_t *attr, short int *flags)
Definition vsf_linux.c:4135
int posix_spawnattr_setsigmask(posix_spawnattr_t *attr, const sigset_t *sigmask)
Definition vsf_linux.c:4130
int posix_spawnp(pid_t *pid, const char *file, const posix_spawn_file_actions_t *actions, const posix_spawnattr_t *attr, char *const argv[], char *const env[])
Definition vsf_linux.c:4088
int posix_spawnattr_setpgroup(posix_spawnattr_t *attr, pid_t pgroup)
Definition vsf_linux.c:4150
int posix_spawnattr_getsigmask(const posix_spawnattr_t *attr, sigset_t *sigmask)
Definition vsf_linux.c:4125
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *attr, int schedpolicy)
Definition vsf_linux.c:4160
int posix_spawnattr_destroy(posix_spawnattr_t *attr)
Definition vsf_linux.c:4110
int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *actions, const char *path)
Definition vsf_linux.c:4245
Definition spawn.h:55
int allocated
Definition spawn.h:56
int used
Definition spawn.h:57
struct spawn_action * actions
Definition spawn.h:58
Definition spawn.h:20
short int flags
Definition spawn.h:21
Definition sched.h:33
Definition signal.h:131
Definition spawn.h:24
union spawn_action::@909 action
struct spawn_action::@909::@912 open_action
struct spawn_action::@909::@910 close_action
struct spawn_action::@909::@913 chdir_action
char * path
Definition spawn.h:42
struct spawn_action::@909::@911 dup2_action
struct spawn_action::@909::@914 fchdir_action
@ spawn_do_open
Definition spawn.h:28
@ spawn_do_fchdir
Definition spawn.h:30
@ spawn_do_chdir
Definition spawn.h:29
@ spawn_do_dup2
Definition spawn.h:27
@ spawn_do_close
Definition spawn.h:26
int oflag
Definition spawn.h:43
int newfd
Definition spawn.h:38
mode_t mode
Definition spawn.h:44
enum spawn_action::@908 tag
int fd
Definition spawn.h:34
Definition spawn.h:62
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setflags)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getsigdefault)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getflags)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getsigmask)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_addclose)
vsf_vplt_info_t info
Definition spawn.h:63
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_adddup2)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getschedpolicy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_addopen)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_getpgroup)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setschedpolicy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setpgroup)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setsigdefault)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_addfchdir_np)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawnattr_setsigmask)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_addchdir_np)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(posix_spawn_file_actions_init)
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