xref: /illumos-gate/usr/src/head/spawn.h (revision a5f69788de7ac07553de47f7fec8c05a9a94c105)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _SPAWN_H
28 #define	_SPAWN_H
29 
30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
31 
32 #include <sys/feature_tests.h>
33 #include <sys/types.h>
34 #include <signal.h>
35 #include <sched.h>
36 
37 #ifdef	__cplusplus
38 extern "C" {
39 #endif
40 
41 #define	POSIX_SPAWN_RESETIDS		0x01
42 #define	POSIX_SPAWN_SETPGROUP		0x02
43 #define	POSIX_SPAWN_SETSIGDEF		0x04
44 #define	POSIX_SPAWN_SETSIGMASK		0x08
45 #define	POSIX_SPAWN_SETSCHEDPARAM	0x10
46 #define	POSIX_SPAWN_SETSCHEDULER	0x20
47 
48 typedef struct {
49 	void *__spawn_attrp;	/* implementation-private */
50 } posix_spawnattr_t;
51 
52 typedef struct {
53 	void *__file_attrp;	/* implementation-private */
54 } posix_spawn_file_actions_t;
55 
56 #if defined(__STDC__)
57 
58 extern int posix_spawn(
59 	pid_t *_RESTRICT_KYWD pid,
60 	const char *_RESTRICT_KYWD path,
61 	const posix_spawn_file_actions_t *file_actions,
62 	const posix_spawnattr_t *_RESTRICT_KYWD attrp,
63 	char *const argv[_RESTRICT_KYWD],
64 	char *const envp[_RESTRICT_KYWD]);
65 
66 extern int posix_spawnp(
67 	pid_t *_RESTRICT_KYWD pid,
68 	const char *_RESTRICT_KYWD file,
69 	const posix_spawn_file_actions_t *file_actions,
70 	const posix_spawnattr_t *_RESTRICT_KYWD attrp,
71 	char *const argv[_RESTRICT_KYWD],
72 	char *const envp[_RESTRICT_KYWD]);
73 
74 extern int posix_spawn_file_actions_init(
75 	posix_spawn_file_actions_t *file_actions);
76 
77 extern int posix_spawn_file_actions_destroy(
78 	posix_spawn_file_actions_t *file_actions);
79 
80 extern int posix_spawn_file_actions_addopen(
81 	posix_spawn_file_actions_t *_RESTRICT_KYWD file_actions,
82 	int filedes,
83 	const char *_RESTRICT_KYWD path,
84 	int oflag,
85 	mode_t mode);
86 
87 extern int posix_spawn_file_actions_addclose(
88 	posix_spawn_file_actions_t *file_actions,
89 	int filedes);
90 
91 extern int posix_spawn_file_actions_adddup2(
92 	posix_spawn_file_actions_t *file_actions,
93 	int filedes,
94 	int newfiledes);
95 
96 extern int posix_spawnattr_init(
97 	posix_spawnattr_t *attr);
98 
99 extern int posix_spawnattr_destroy(
100 	posix_spawnattr_t *attr);
101 
102 extern int posix_spawnattr_setflags(
103 	posix_spawnattr_t *attr,
104 	short flags);
105 
106 extern int posix_spawnattr_getflags(
107 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
108 	short *_RESTRICT_KYWD flags);
109 
110 extern int posix_spawnattr_setpgroup(
111 	posix_spawnattr_t *attr,
112 	pid_t pgroup);
113 
114 extern int posix_spawnattr_getpgroup(
115 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
116 	pid_t *_RESTRICT_KYWD pgroup);
117 
118 extern int posix_spawnattr_setschedparam(
119 	posix_spawnattr_t *_RESTRICT_KYWD attr,
120 	const struct sched_param *_RESTRICT_KYWD schedparam);
121 
122 extern int posix_spawnattr_getschedparam(
123 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
124 	struct sched_param *_RESTRICT_KYWD schedparam);
125 
126 extern int posix_spawnattr_setschedpolicy(
127 	posix_spawnattr_t *attr,
128 	int schedpolicy);
129 
130 extern int posix_spawnattr_getschedpolicy(
131 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
132 	int *_RESTRICT_KYWD schedpolicy);
133 
134 extern int posix_spawnattr_setsigdefault(
135 	posix_spawnattr_t *_RESTRICT_KYWD attr,
136 	const sigset_t *_RESTRICT_KYWD sigdefault);
137 
138 extern int posix_spawnattr_getsigdefault(
139 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
140 	sigset_t *_RESTRICT_KYWD sigdefault);
141 
142 extern int posix_spawnattr_setsigmask(
143 	posix_spawnattr_t *_RESTRICT_KYWD attr,
144 	const sigset_t *_RESTRICT_KYWD sigmask);
145 
146 extern int posix_spawnattr_getsigmask(
147 	const posix_spawnattr_t *_RESTRICT_KYWD attr,
148 	sigset_t *_RESTRICT_KYWD sigmask);
149 
150 #else	/* __STDC__ */
151 
152 extern int posix_spawn();
153 extern int posix_spawnp();
154 extern int posix_spawn_file_actions_init();
155 extern int posix_spawn_file_actions_destroy();
156 extern int posix_spawn_file_actions_addopen();
157 extern int posix_spawn_file_actions_addclose();
158 extern int posix_spawn_file_actions_adddup2();
159 extern int posix_spawnattr_init();
160 extern int posix_spawnattr_destroy();
161 extern int posix_spawnattr_setflags();
162 extern int posix_spawnattr_getflags();
163 extern int posix_spawnattr_setpgroup();
164 extern int posix_spawnattr_getpgroup();
165 extern int posix_spawnattr_setschedparam();
166 extern int posix_spawnattr_getschedparam();
167 extern int posix_spawnattr_setschedpolicy();
168 extern int posix_spawnattr_getschedpolicy();
169 extern int posix_spawnattr_setsigdefault();
170 extern int posix_spawnattr_getsigdefault();
171 extern int posix_spawnattr_setsigmask();
172 extern int posix_spawnattr_getsigmask();
173 
174 #endif	/* __STDC__ */
175 
176 #ifdef	__cplusplus
177 }
178 #endif
179 
180 #endif	/* _SPAWN_H */
181