unistd.h revision 126141
1103856Stjr/*-
2103856Stjr * Copyright (c) 1991, 1993, 1994
3103856Stjr *	The Regents of the University of California.  All rights reserved.
4103856Stjr *
5103856Stjr * Redistribution and use in source and binary forms, with or without
6103856Stjr * modification, are permitted provided that the following conditions
7103856Stjr * are met:
8227753Stheraven * 1. Redistributions of source code must retain the above copyright
9227753Stheraven *    notice, this list of conditions and the following disclaimer.
10227753Stheraven * 2. Redistributions in binary form must reproduce the above copyright
11227753Stheraven *    notice, this list of conditions and the following disclaimer in the
12227753Stheraven *    documentation and/or other materials provided with the distribution.
13103856Stjr * 3. All advertising materials mentioning features or use of this software
14103856Stjr *    must display the following acknowledgement:
15103856Stjr *	This product includes software developed by the University of
16103856Stjr *	California, Berkeley and its contributors.
17103856Stjr * 4. Neither the name of the University nor the names of its contributors
18103856Stjr *    may be used to endorse or promote products derived from this software
19103856Stjr *    without specific prior written permission.
20103856Stjr *
21249808Semaste * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22103856Stjr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23103856Stjr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24103856Stjr * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25103856Stjr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26103856Stjr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27103856Stjr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28103856Stjr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29103856Stjr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30103856Stjr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31103856Stjr * SUCH DAMAGE.
32103856Stjr *
33103856Stjr *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
34103856Stjr * $FreeBSD: head/include/unistd.h 126141 2004-02-23 04:17:59Z ache $
35103856Stjr */
36103856Stjr
37103856Stjr#ifndef _UNISTD_H_
38103856Stjr#define	_UNISTD_H_
39103856Stjr
40103856Stjr#include <sys/cdefs.h>
41103856Stjr#include <sys/types.h>			/* XXX adds too much pollution. */
42103856Stjr#include <sys/unistd.h>
43128844Sobrien#include <sys/_null.h>
44103856Stjr#include <sys/_types.h>
45103856Stjr
46103856Stjr#ifndef _GID_T_DECLARED
47103856Stjrtypedef	__gid_t		gid_t;
48103856Stjr#define	_GID_T_DECLARED
49149313Sstefanf#endif
50103856Stjr
51103856Stjr#ifndef _OFF_T_DECLARED
52103856Stjrtypedef	__off_t		off_t;
53103856Stjr#define	_OFF_T_DECLARED
54103856Stjr#endif
55103856Stjr
56103856Stjr#ifndef _PID_T_DECLARED
57103856Stjrtypedef	__pid_t		pid_t;
58103856Stjr#define	_PID_T_DECLARED
59103856Stjr#endif
60103856Stjr
61227753Stheraven#ifndef _SIZE_T_DECLARED
62103856Stjrtypedef	__size_t	size_t;
63103856Stjr#define	_SIZE_T_DECLARED
64103856Stjr#endif
65103856Stjr
66103856Stjr#ifndef _SSIZE_T_DECLARED
67103856Stjrtypedef	__ssize_t	ssize_t;
68103856Stjr#define	_SSIZE_T_DECLARED
69103856Stjr#endif
70103856Stjr
71103856Stjr#ifndef _UID_T_DECLARED
72103856Stjrtypedef	__uid_t		uid_t;
73103856Stjr#define	_UID_T_DECLARED
74103856Stjr#endif
75103856Stjr
76103856Stjr#ifndef _USECONDS_T_DECLARED
77103856Stjrtypedef	__useconds_t	useconds_t;
78103856Stjr#define	_USECONDS_T_DECLARED
79103856Stjr#endif
80103856Stjr
81103856Stjr#define	 STDIN_FILENO	0	/* standard input file descriptor */
82117249Stjr#define	STDOUT_FILENO	1	/* standard output file descriptor */
83117249Stjr#define	STDERR_FILENO	2	/* standard error file descriptor */
84103856Stjr
85103856Stjr#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
86103856Stjr#define	F_ULOCK		0	/* unlock locked section */
87103856Stjr#define	F_LOCK		1	/* lock a section for exclusive use */
88103856Stjr#define	F_TLOCK		2	/* test and lock a section for exclusive use */
89125283Sdas#define	F_TEST		3	/* test a section for locks by other procs */
90103856Stjr#endif
91103856Stjr
92103856Stjr/*
93103856Stjr * POSIX options and option groups we unconditionally do or don't
94103856Stjr * implement.  This list includes those options which are exclusively
95103856Stjr * implemented (or not) in user mode.  Please keep this list in
96103856Stjr * alphabetical order.
97103856Stjr *
98103856Stjr * Anything which is defined as zero below **must** have an
99103856Stjr * implementation for the corresponding sysconf() which is able to
100157381Sphk * determine conclusively whether or not the feature is supported.
101227753Stheraven * Anything which is defined as other than -1 below **must** have
102157381Sphk * complete headers, types, and function declarations as specified by
103117249Stjr * the POSIX standard; however, if the relevant sysconf() function
104234585Sdas * returns -1, the functions may be stubbed out.
105234585Sdas */
106234585Sdas#define	_POSIX_BARRIERS			-1
107234585Sdas#define	_POSIX_READER_WRITER_LOCKS	200112L
108234585Sdas#define	_POSIX_REGEXP			1
109103856Stjr#define	_POSIX_SHELL			1
110234585Sdas#define	_POSIX_SPAWN			-1
111234585Sdas#define	_POSIX_SPIN_LOCKS		-1
112234585Sdas#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
113234585Sdas#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
114234585Sdas#define	_POSIX_THREAD_CPUTIME		-1
115234585Sdas#define	_POSIX_THREAD_PRIO_INHERIT	200112L
116234585Sdas#define	_POSIX_THREAD_PRIO_PROTECT	200112L
117234585Sdas#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
118234585Sdas#define	_POSIX_THREAD_PROCESS_SHARED	-1
119234585Sdas#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
120234585Sdas#define	_POSIX_THREAD_SPORADIC_SERVER	-1
121234585Sdas#define	_POSIX_THREADS			200112L
122234585Sdas#define	_POSIX_TRACE			-1
123234585Sdas#define	_POSIX_TRACE_EVENT_FILTER	-1
124234585Sdas#define	_POSIX_TRACE_INHERIT		-1
125234585Sdas#define	_POSIX_TRACE_LOG		-1
126234585Sdas#define	_POSIX2_C_BIND			200112L	/* mandatory */
127234585Sdas#define	_POSIX2_C_DEV			-1 /* need c99 utility */
128234585Sdas#define	_POSIX2_CHAR_TERM		1
129234585Sdas#define	_POSIX2_FORT_DEV		-1 /* need fort77 utility */
130234585Sdas#define	_POSIX2_FORT_RUN		200112L
131234585Sdas#define	_POSIX2_LOCALEDEF		-1
132187422Sdas#define	_POSIX2_PBS			-1
133187422Sdas#define	_POSIX2_PBS_ACCOUNTING		-1
134103856Stjr#define	_POSIX2_PBS_CHECKPOINT		-1
135234585Sdas#define	_POSIX2_PBS_LOCATE		-1
136234585Sdas#define	_POSIX2_PBS_MESSAGE		-1
137234585Sdas#define	_POSIX2_PBS_TRACK		-1
138234585Sdas#define	_POSIX2_SW_DEV			-1 /* XXX ??? */
139234585Sdas#define	_POSIX2_UPE			200112L
140234585Sdas#define	_V6_ILP32_OFF32			-1
141234836Sdumbbell#define	_V6_ILP32_OFFBIG		0
142234585Sdas#define	_V6_LP64_OFF64			0
143234585Sdas#define	_V6_LPBIG_OFFBIG		-1
144234585Sdas
145234585Sdas#if __XSI_VISIBLE
146234585Sdas#define	_XOPEN_CRYPT			-1 /* XXX ??? */
147234585Sdas#define	_XOPEN_ENH_I18N			-1 /* mandatory in XSI */
148234585Sdas#define	_XOPEN_LEGACY			-1
149234585Sdas#define	_XOPEN_REALTIME			-1
150234825Sdas#define	_XOPEN_REALTIME_THREADS		-1
151234825Sdas#define	_XOPEN_UNIX			-1
152234585Sdas#endif
153234585Sdas
154234585Sdas/* Define the POSIX.2 version we target for compliance. */
155234825Sdas#define	_POSIX2_VERSION		199212L
156234585Sdas
157234585Sdas/*
158234585Sdas * POSIX-style system configuration variable accessors (for the
159234585Sdas * sysconf function).  The kernel does not directly implement the
160234585Sdas * sysconf() interface; rather, a C library stub translates references
161234585Sdas * to sysconf() into calls to sysctl() using a giant switch statement.
162234585Sdas * Those that are marked `user' are implemented entirely in the C
163234585Sdas * library and never query the kernel.  pathconf() is implemented
164234585Sdas * directly by the kernel so those are not defined here.
165234585Sdas */
166234585Sdas#define	_SC_ARG_MAX		 1
167234585Sdas#define	_SC_CHILD_MAX		 2
168234585Sdas#define	_SC_CLK_TCK		 3
169234585Sdas#define	_SC_NGROUPS_MAX		 4
170234585Sdas#define	_SC_OPEN_MAX		 5
171234585Sdas#define	_SC_JOB_CONTROL		 6
172234585Sdas#define	_SC_SAVED_IDS		 7
173234585Sdas#define	_SC_VERSION		 8
174234585Sdas#define	_SC_BC_BASE_MAX		 9 /* user */
175234585Sdas#define	_SC_BC_DIM_MAX		10 /* user */
176234585Sdas#define	_SC_BC_SCALE_MAX	11 /* user */
177234585Sdas#define	_SC_BC_STRING_MAX	12 /* user */
178234585Sdas#define	_SC_COLL_WEIGHTS_MAX	13 /* user */
179234585Sdas#define	_SC_EXPR_NEST_MAX	14 /* user */
180234585Sdas#define	_SC_LINE_MAX		15 /* user */
181234585Sdas#define	_SC_RE_DUP_MAX		16 /* user */
182234836Sdumbbell#define	_SC_2_VERSION		17 /* user */
183234585Sdas#define	_SC_2_C_BIND		18 /* user */
184234585Sdas#define	_SC_2_C_DEV		19 /* user */
185234585Sdas#define	_SC_2_CHAR_TERM		20 /* user */
186234585Sdas#define	_SC_2_FORT_DEV		21 /* user */
187234585Sdas#define	_SC_2_FORT_RUN		22 /* user */
188234585Sdas#define	_SC_2_LOCALEDEF		23 /* user */
189234585Sdas#define	_SC_2_SW_DEV		24 /* user */
190234585Sdas#define	_SC_2_UPE		25 /* user */
191234585Sdas#define	_SC_STREAM_MAX		26 /* user */
192234585Sdas#define	_SC_TZNAME_MAX		27 /* user */
193234825Sdas
194234825Sdas#if __POSIX_VISIBLE >= 199309
195234585Sdas#define	_SC_ASYNCHRONOUS_IO	28
196234585Sdas#define	_SC_MAPPED_FILES	29
197234585Sdas#define	_SC_MEMLOCK		30
198234825Sdas#define	_SC_MEMLOCK_RANGE	31
199234585Sdas#define	_SC_MEMORY_PROTECTION	32
200234585Sdas#define	_SC_MESSAGE_PASSING	33
201234585Sdas#define	_SC_PRIORITIZED_IO	34
202234585Sdas#define	_SC_PRIORITY_SCHEDULING	35
203234585Sdas#define	_SC_REALTIME_SIGNALS	36
204234585Sdas#define	_SC_SEMAPHORES		37
205234585Sdas#define	_SC_FSYNC		38
206234585Sdas#define	_SC_SHARED_MEMORY_OBJECTS 39
207234585Sdas#define	_SC_SYNCHRONIZED_IO	40
208234585Sdas#define	_SC_TIMERS		41
209234585Sdas#define	_SC_AIO_LISTIO_MAX	42
210234585Sdas#define	_SC_AIO_MAX		43
211234585Sdas#define	_SC_AIO_PRIO_DELTA_MAX	44
212234585Sdas#define	_SC_DELAYTIMER_MAX	45
213234585Sdas#define	_SC_MQ_OPEN_MAX		46
214234585Sdas#define	_SC_PAGESIZE		47
215234585Sdas#define	_SC_RTSIG_MAX		48
216234585Sdas#define	_SC_SEM_NSEMS_MAX	49
217234585Sdas#define	_SC_SEM_VALUE_MAX	50
218234585Sdas#define	_SC_SIGQUEUE_MAX	51
219234585Sdas#define	_SC_TIMER_MAX		52
220234585Sdas#endif
221234585Sdas
222234585Sdas#if __POSIX_VISIBLE >= 200112
223234585Sdas#define	_SC_2_PBS		59 /* user */
224234585Sdas#define	_SC_2_PBS_ACCOUNTING	60 /* user */
225234585Sdas#define	_SC_2_PBS_CHECKPOINT	61 /* user */
226234585Sdas#define	_SC_2_PBS_LOCATE	62 /* user */
227234585Sdas#define	_SC_2_PBS_MESSAGE	63 /* user */
228234585Sdas#define	_SC_2_PBS_TRACK		64 /* user */
229234585Sdas#define	_SC_ADVISORY_INFO	65
230234585Sdas#define	_SC_BARRIERS		66 /* user */
231234585Sdas#define	_SC_CLOCK_SELECTION	67
232234585Sdas#define	_SC_CPUTIME		68
233234585Sdas#define	_SC_FILE_LOCKING	69
234234585Sdas#define	_SC_GETGR_R_SIZE_MAX	70 /* user */
235234585Sdas#define	_SC_GETPW_R_SIZE_MAX	71 /* user */
236234585Sdas#define	_SC_HOST_NAME_MAX	72
237234585Sdas#define	_SC_LOGIN_NAME_MAX	73
238234585Sdas#define	_SC_MONOTONIC_CLOCK	74
239234585Sdas#define	_SC_MQ_PRIO_MAX		75
240234836Sdumbbell#define	_SC_READER_WRITER_LOCKS	76 /* user */
241234585Sdas#define	_SC_REGEXP		77 /* user */
242234585Sdas#define	_SC_SHELL		78 /* user */
243234585Sdas#define	_SC_SPAWN		79 /* user */
244234585Sdas#define	_SC_SPIN_LOCKS		80 /* user */
245234585Sdas#define	_SC_SPORADIC_SERVER	81
246234585Sdas#define	_SC_THREAD_ATTR_STACKADDR 82 /* user */
247234585Sdas#define	_SC_THREAD_ATTR_STACKSIZE 83 /* user */
248234585Sdas#define	_SC_THREAD_CPUTIME	84 /* user */
249234825Sdas#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
250234585Sdas#define	_SC_THREAD_KEYS_MAX	86 /* user */
251234825Sdas#define	_SC_THREAD_PRIO_INHERIT	87 /* user */
252234585Sdas#define	_SC_THREAD_PRIO_PROTECT	88 /* user */
253234585Sdas#define	_SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
254234585Sdas#define	_SC_THREAD_PROCESS_SHARED 90 /* user */
255234825Sdas#define	_SC_THREAD_SAFE_FUNCTIONS 91 /* user */
256234585Sdas#define	_SC_THREAD_SPORADIC_SERVER 92 /* user */
257234585Sdas#define	_SC_THREAD_STACK_MIN	93 /* user */
258234585Sdas#define	_SC_THREAD_THREADS_MAX	94 /* user */
259234585Sdas#define	_SC_TIMEOUTS		95 /* user */
260234585Sdas#define	_SC_THREADS		96 /* user */
261234585Sdas#define	_SC_TRACE		97 /* user */
262234585Sdas#define	_SC_TRACE_EVENT_FILTER	98 /* user */
263234585Sdas#define	_SC_TRACE_INHERIT	99 /* user */
264234585Sdas#define	_SC_TRACE_LOG		100 /* user */
265234585Sdas#define	_SC_TTY_NAME_MAX	101 /* user */
266234585Sdas#define	_SC_TYPED_MEMORY_OBJECTS 102
267234585Sdas#define	_SC_V6_ILP32_OFF32	103 /* user */
268234585Sdas#define	_SC_V6_ILP32_OFFBIG	104 /* user */
269234585Sdas#define	_SC_V6_LP64_OFF64	105 /* user */
270234585Sdas#define	_SC_V6_LPBIG_OFFBIG	106 /* user */
271234585Sdas#define	_SC_IPV6		118
272234585Sdas#define	_SC_RAW_SOCKETS		119
273234585Sdas#define	_SC_SYMLOOP_MAX		120
274234585Sdas#endif
275234585Sdas
276234585Sdas#if __XSI_VISIBLE
277234585Sdas#define	_SC_ATEXIT_MAX		107 /* user */
278234585Sdas#define	_SC_IOV_MAX		56
279234585Sdas#define	_SC_PAGE_SIZE		_SC_PAGESIZE
280234585Sdas#define	_SC_XOPEN_CRYPT		108 /* user */
281234585Sdas#define	_SC_XOPEN_ENH_I18N	109 /* user */
282234585Sdas#define	_SC_XOPEN_LEGACY	110 /* user */
283234585Sdas#define	_SC_XOPEN_REALTIME	111
284234585Sdas#define	_SC_XOPEN_REALTIME_THREADS 112
285234585Sdas#define	_SC_XOPEN_SHM		113
286234585Sdas#define	_SC_XOPEN_STREAMS	114
287234585Sdas#define	_SC_XOPEN_UNIX		115
288234585Sdas#define	_SC_XOPEN_VERSION	116
289234585Sdas#define	_SC_XOPEN_XCU_VERSION	117 /* user */
290234585Sdas#endif
291234585Sdas
292234585Sdas#if __BSD_VISIBLE
293234585Sdas#define	_SC_NPROCESSORS_CONF	57
294234585Sdas#define	_SC_NPROCESSORS_ONLN	58
295234585Sdas#endif
296234585Sdas
297234585Sdas/* Keys for the confstr(3) function. */
298234585Sdas#if __POSIX_VISIBLE >= 199209
299234585Sdas#define	_CS_PATH		1	/* default value of PATH */
300234585Sdas#endif
301234585Sdas
302234585Sdas#if __POSIX_VISIBLE >= 200112
303234585Sdas#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
304234585Sdas#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
305234585Sdas#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
306234585Sdas#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
307234585Sdas#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
308234585Sdas#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
309234585Sdas#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
310234585Sdas#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
311234585Sdas#define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
312234585Sdas#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
313234585Sdas#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
314234585Sdas#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
315234585Sdas#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
316234585Sdas#endif
317234585Sdas
318234585Sdas__BEGIN_DECLS
319234585Sdas/* 1003.1-1990 */
320234585Sdasvoid	 _exit(int) __dead2;
321234585Sdasint	 access(const char *, int);
322234585Sdasunsigned int	 alarm(unsigned int);
323234585Sdasint	 chdir(const char *);
324234585Sdasint	 chown(const char *, uid_t, gid_t);
325234585Sdasint	 close(int);
326234585Sdasint	 dup(int);
327234585Sdasint	 dup2(int, int);
328234585Sdasint	 eaccess(const char *, int);
329234585Sdasint	 execl(const char *, const char *, ...);
330234585Sdasint	 execle(const char *, const char *, ...);
331234585Sdasint	 execlp(const char *, const char *, ...);
332234585Sdasint	 execv(const char *, char * const *);
333234585Sdasint	 execve(const char *, char * const *, char * const *);
334234585Sdasint	 execvp(const char *, char * const *);
335234585Sdaspid_t	 fork(void);
336234585Sdaslong	 fpathconf(int, int);
337234585Sdaschar	*getcwd(char *, size_t);
338234585Sdasgid_t	 getegid(void);
339234585Sdasuid_t	 geteuid(void);
340234585Sdasgid_t	 getgid(void);
341234585Sdasint	 getgroups(int, gid_t []);
342234585Sdaschar	*getlogin(void);
343234585Sdaspid_t	 getpgrp(void);
344234585Sdaspid_t	 getpid(void);
345234585Sdaspid_t	 getppid(void);
346234585Sdasuid_t	 getuid(void);
347234585Sdasint	 isatty(int);
348234585Sdasint	 link(const char *, const char *);
349234585Sdas#ifndef _LSEEK_DECLARED
350234585Sdas#define	_LSEEK_DECLARED
351234585Sdasoff_t	 lseek(int, off_t, int);
352234585Sdas#endif
353234585Sdaslong	 pathconf(const char *, int);
354234585Sdasint	 pause(void);
355234585Sdasint	 pipe(int *);
356234585Sdasssize_t	 read(int, void *, size_t);
357234585Sdasint	 rmdir(const char *);
358234585Sdasint	 setgid(gid_t);
359234585Sdasint	 setpgid(pid_t, pid_t);
360234585Sdasvoid	 setproctitle(const char *_fmt, ...) __printf0like(1, 2);
361234585Sdaspid_t	 setsid(void);
362234585Sdasint	 setuid(uid_t);
363234585Sdasunsigned int	 sleep(unsigned int);
364234585Sdaslong	 sysconf(int);
365234585Sdaspid_t	 tcgetpgrp(int);
366234585Sdasint	 tcsetpgrp(int, pid_t);
367234585Sdaschar	*ttyname(int);
368234585Sdasint	 unlink(const char *);
369234585Sdasssize_t	 write(int, const void *, size_t);
370234585Sdas
371234585Sdas/* 1003.2-1992 */
372234585Sdas#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE
373234585Sdassize_t	 confstr(int, char *, size_t);
374234585Sdas#ifndef _GETOPT_DECLARED
375234836Sdumbbell#define	_GETOPT_DECLARED
376234585Sdasint	 getopt(int, char * const [], const char *);
377234585Sdas
378234585Sdasextern char *optarg;			/* getopt(3) external variables */
379234585Sdasextern int optind, opterr, optopt;
380234585Sdas#endif /* _GETOPT_DECLARED */
381234585Sdas#endif
382234585Sdas
383234585Sdas/* ISO/IEC 9945-1: 1996 */
384234585Sdas#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
385234585Sdasint	 fsync(int);
386234585Sdas
387234585Sdas/*
388234585Sdas * ftruncate() was in the POSIX Realtime Extension (it's used for shared
389234585Sdas * memory), but truncate() was not.
390234585Sdas */
391234585Sdas#ifndef _FTRUNCATE_DECLARED
392234585Sdas#define	_FTRUNCATE_DECLARED
393234585Sdasint	 ftruncate(int, off_t);
394234585Sdas#endif
395234585Sdas#endif
396234585Sdas
397234585Sdas#if __POSIX_VISIBLE >= 199506
398234585Sdasint	 getlogin_r(char *, int);
399234585Sdas#endif
400234585Sdas
401234585Sdas/* 1003.1-2001 */
402234585Sdas#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
403234585Sdasint	 fchown(int, uid_t, gid_t);
404234585Sdasint	 readlink(const char *, char *, int);
405234585Sdas#endif
406234585Sdas#if __POSIX_VISIBLE >= 200112
407234585Sdasint	 gethostname(char *, size_t);
408234585Sdasint	 setegid(gid_t);
409234585Sdasint	 seteuid(uid_t);
410234585Sdas#endif
411234585Sdas
412234585Sdas/*
413234585Sdas * symlink() was originally in POSIX.1a, which was withdrawn after
414234585Sdas * being overtaken by events (1003.1-2001).  It was in XPG4.2, and of
415234585Sdas * course has been in BSD since 4.2.
416234585Sdas */
417234585Sdas#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE
418234585Sdasint	 symlink(const char * __restrict, const char * __restrict);
419234585Sdas#endif
420234585Sdas
421234585Sdas/* X/Open System Interfaces */
422103856Stjr#if __XSI_VISIBLE
423103856Stjrchar	*crypt(const char *, const char *);
424103856Stjr/* char	*ctermid(char *); */		/* XXX ??? */
425227753Stheravenint	 encrypt(char *, int);
426227753Stheravenint	 fchdir(int);
427103856Stjrlong	 gethostid(void);
428103856Stjrint	 getpgid(pid_t _pid);
429227753Stheravenint	 getsid(pid_t _pid);
430103856Stjrchar	*getwd(char *);			/* LEGACY: obsoleted by getcwd() */
431103856Stjrint	 lchown(const char *, uid_t, gid_t);
432103856Stjrint	 lockf(int, int, off_t);
433227753Stheravenint	 nice(int);
434103856Stjrssize_t	 pread(int, void *, size_t, off_t);
435103856Stjrssize_t	 pwrite(int, const void *, size_t, off_t);
436103856Stjrint	 setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */
437227753Stheravenint	 setregid(gid_t, gid_t);
438227753Stheravenint	 setreuid(uid_t, uid_t);
439227753Stheraven/* void	 swab(const void * __restrict, void * __restrict, ssize_t); */
440227753Stheravenvoid	 sync(void);
441227753Stheravenuseconds_t	 ualarm(useconds_t, useconds_t);
442103856Stjrint	 usleep(useconds_t);
443103856Stjrpid_t	 vfork(void);
444103856Stjr
445103856Stjr/* See comment at ftruncate() above. */
446103856Stjr#ifndef _TRUNCATE_DECLARED
447227753Stheraven#define	_TRUNCATE_DECLARED
448227753Stheravenint	 truncate(const char *, off_t);
449103856Stjr#endif
450234585Sdas#endif /* __XSI_VISIBLE */
451103856Stjr
452103856Stjr#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
453103856Stjrint	 brk(const void *);
454103856Stjrint	 chroot(const char *);
455103856Stjrint	 getdtablesize(void);
456234585Sdasint	 getpagesize(void) __pure2;
457103856Stjrchar	*getpass(const char *);
458103856Stjrvoid	*sbrk(intptr_t);
459234585Sdas#endif
460103856Stjr
461103856Stjr#if __BSD_VISIBLE
462103856Stjrstruct timeval;				/* select(2) */
463103856Stjrint	 acct(const char *);
464103856Stjrint	 async_daemon(void);
465103856Stjrint	 check_utility_compat(const char *);
466234585Sdasconst char *
467103856Stjr	 crypt_get_format(void);
468103856Stjrint	 crypt_set_format(const char *);
469103856Stjrint	 des_cipher(const char *, char *, long, int);
470103856Stjrint	 des_setkey(const char *key);
471103856Stjrvoid	 endusershell(void);
472227753Stheravenint	 exect(const char *, char * const *, char * const *);
473227753Stheravenint	 execvP(const char *, const char *, char * const *);
474234588Sdaschar	*fflagstostr(u_long);
475103856Stjrint	 getdomainname(char *, int);
476227753Stheravenint	 getgrouplist(const char *, gid_t, gid_t *, int *);
477103856Stjrmode_t	 getmode(const void *, mode_t);
478103856Stjrint	 getpeereid(int, uid_t *, gid_t *);
479103856Stjrint	 getresgid(gid_t *, gid_t *, gid_t *);
480103856Stjrint	 getresuid(uid_t *, uid_t *, uid_t *);
481103856Stjrchar	*getusershell(void);
482103856Stjrint	 initgroups(const char *, gid_t);
483103856Stjrint	 iruserok(unsigned long, int, const char *, const char *);
484103856Stjrint	 iruserok_sa(const void *, int, int, const char *, const char *);
485103856Stjrint	 issetugid(void);
486103856Stjrchar	*mkdtemp(char *);
487103856Stjrint	 mknod(const char *, mode_t, dev_t);
488103856Stjr#ifndef _MKSTEMP_DECLARED
489103856Stjrint	 mkstemp(char *);
490103856Stjr#define	_MKSTEMP_DECLARED
491227753Stheraven#endif
492103856Stjrint	 mkstemps(char *, int);
493103856Stjr#ifndef _MKTEMP_DECLARED
494227753Stheravenchar	*mktemp(char *);
495103856Stjr#define	_MKTEMP_DECLARED
496103856Stjr#endif
497103856Stjrint	 nfsclnt(int, void *);
498103856Stjrint	 nfssvc(int, void *);
499103856Stjrint	 profil(char *, size_t, vm_offset_t, int);
500103856Stjrint	 rcmd(char **, int, const char *, const char *, const char *, int *);
501103856Stjrint	 rcmd_af(char **, int, const char *,
502103856Stjr		const char *, const char *, int *, int);
503103856Stjrint	 rcmdsh(char **, int, const char *,
504103856Stjr		const char *, const char *, const char *);
505103856Stjrchar	*re_comp(const char *);
506103856Stjrint	 re_exec(const char *);
507103856Stjrint	 reboot(int);
508103856Stjrint	 revoke(const char *);
509103856Stjrpid_t	 rfork(int);
510103856Stjrpid_t	 rfork_thread(int, void *, int (*)(void *), void *);
511103856Stjrint	 rresvport(int *);
512103856Stjrint	 rresvport_af(int *, int);
513103856Stjrint	 ruserok(const char *, int, const char *, const char *);
514103856Stjr#if __BSD_VISIBLE
515103856Stjr#ifndef _SELECT_DECLARED
516103856Stjr#define	_SELECT_DECLARED
517103856Stjrint	 select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
518103856Stjr#endif
519103856Stjr#endif
520103856Stjrint	 setdomainname(const char *, int);
521103856Stjrint	 setgroups(int, const gid_t *);
522103856Stjrvoid	 sethostid(long);
523103856Stjrint	 sethostname(const char *, int);
524103856Stjr#ifndef _SETKEY_DECLARED
525103856Stjrint	 setkey(const char *);
526103856Stjr#define	_SETKEY_DECLARED
527103856Stjr#endif
528103856Stjrint	 setlogin(const char *);
529103856Stjrvoid	*setmode(const char *);
530103856Stjrint	 setresgid(gid_t, gid_t, gid_t);
531103856Stjrint	 setresuid(uid_t, uid_t, uid_t);
532103856Stjrint	 setrgid(gid_t);
533103856Stjrint	 setruid(uid_t);
534103856Stjrvoid	 setusershell(void);
535103856Stjrint	 strtofflags(char **, u_long *, u_long *);
536103856Stjrint	 swapon(const char *);
537103856Stjrint	 swapoff(const char *);
538103856Stjrint	 syscall(int, ...);
539103856Stjroff_t	 __syscall(quad_t, ...);
540103856Stjrint	 ttyslot(void);
541103856Stjrint	 undelete(const char *);
542103856Stjrint	 unwhiteout(const char *);
543103856Stjrvoid	*valloc(size_t);			/* obsoleted by malloc() */
544103856Stjr
545103856Stjrextern int optreset;			/* getopt(3) external variable */
546103856Stjr#endif /* __BSD_VISIBLE */
547103856Stjr__END_DECLS
548103856Stjr
549103856Stjr#endif /* !_UNISTD_H_ */
550103856Stjr