aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/posix/posix_spawn.h
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/posix/posix_spawn.h')
-rw-r--r--newlib/libc/posix/posix_spawn.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/newlib/libc/posix/posix_spawn.h b/newlib/libc/posix/posix_spawn.h
new file mode 100644
index 0000000..b4cad1e
--- /dev/null
+++ b/newlib/libc/posix/posix_spawn.h
@@ -0,0 +1,54 @@
+#ifndef _POSIX_SPAWN_H_
+#define _POSIX_SPAWN_H_
+
+#include <sys/cdefs.h>
+#include <sys/sched.h>
+#include <sys/signal.h>
+#include <sys/types.h>
+#include <sys/queue.h>
+
+struct __posix_spawnattr {
+ short sa_flags;
+ pid_t sa_pgroup;
+ struct sched_param sa_schedparam;
+ int sa_schedpolicy;
+ sigset_t sa_sigdefault;
+ sigset_t sa_sigmask;
+};
+
+struct __posix_spawn_file_actions {
+ STAILQ_HEAD(, __posix_spawn_file_actions_entry) fa_list;
+};
+
+typedef struct __posix_spawn_file_actions_entry {
+ STAILQ_ENTRY(__posix_spawn_file_actions_entry) fae_list;
+ enum {
+ FAE_OPEN,
+ FAE_DUP2,
+ FAE_CLOSE,
+ FAE_CHDIR,
+ FAE_FCHDIR
+ } fae_action;
+
+ int fae_fildes;
+ union {
+ struct {
+ char *path;
+#define fae_path fae_data.open.path
+ int oflag;
+#define fae_oflag fae_data.open.oflag
+ mode_t mode;
+#define fae_mode fae_data.open.mode
+ } open;
+ struct {
+ int newfildes;
+#define fae_newfildes fae_data.dup2.newfildes
+ } dup2;
+ char *dir;
+#define fae_dir fae_data.dir
+ int dirfd;
+#define fae_dirfd fae_data.dirfd
+ } fae_data;
+} posix_spawn_file_actions_entry_t;
+
+#endif /* !_POSIX_SPAWN_H_ */