unistd.h revision 179947
11553Srgrimes/*-
21553Srgrimes * Copyright (c) 1991, 1993, 1994
31553Srgrimes *	The Regents of the University of California.  All rights reserved.
41553Srgrimes *
51553Srgrimes * Redistribution and use in source and binary forms, with or without
61553Srgrimes * modification, are permitted provided that the following conditions
71553Srgrimes * are met:
81553Srgrimes * 1. Redistributions of source code must retain the above copyright
91553Srgrimes *    notice, this list of conditions and the following disclaimer.
101553Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
111553Srgrimes *    notice, this list of conditions and the following disclaimer in the
121553Srgrimes *    documentation and/or other materials provided with the distribution.
131553Srgrimes * 3. All advertising materials mentioning features or use of this software
141553Srgrimes *    must display the following acknowledgement:
151553Srgrimes *	This product includes software developed by the University of
161553Srgrimes *	California, Berkeley and its contributors.
171553Srgrimes * 4. Neither the name of the University nor the names of its contributors
181553Srgrimes *    may be used to endorse or promote products derived from this software
191553Srgrimes *    without specific prior written permission.
201553Srgrimes *
211553Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221553Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231553Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241553Srgrimes * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251553Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261553Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271553Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281553Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291553Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301553Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3129451Scharnier * SUCH DAMAGE.
321553Srgrimes *
331553Srgrimes *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
341553Srgrimes * $FreeBSD: head/include/unistd.h 179947 2008-06-23 05:22:06Z ed $
351553Srgrimes */
361553Srgrimes
3729451Scharnier#ifndef _UNISTD_H_
381553Srgrimes#define	_UNISTD_H_
3929451Scharnier
4029451Scharnier#include <sys/cdefs.h>
4150479Speter#include <sys/types.h>			/* XXX adds too much pollution. */
421553Srgrimes#include <sys/unistd.h>
431553Srgrimes#include <sys/_null.h>
441553Srgrimes#include <sys/_types.h>
451553Srgrimes
46169507Swkoszek#ifndef _GID_T_DECLARED
471553Srgrimestypedef	__gid_t		gid_t;
4813400Speter#define	_GID_T_DECLARED
4952653Smarcel#endif
50169507Swkoszek
51169507Swkoszek#ifndef _OFF_T_DECLARED
521553Srgrimestypedef	__off_t		off_t;
5313400Speter#define	_OFF_T_DECLARED
5429451Scharnier#endif
55169512Swkoszek
5613400Speter#ifndef _PID_T_DECLARED
5729451Scharniertypedef	__pid_t		pid_t;
5871784Speter#define	_PID_T_DECLARED
5916073Sphk#endif
601553Srgrimes
61148916Sobrien#ifndef _SIZE_T_DECLARED
621553Srgrimestypedef	__size_t	size_t;
636631Sjkh#define	_SIZE_T_DECLARED
646631Sjkh#endif
656631Sjkh
666631Sjkh#ifndef _SSIZE_T_DECLARED
676631Sjkhtypedef	__ssize_t	ssize_t;
686631Sjkh#define	_SSIZE_T_DECLARED
696631Sjkh#endif
706631Sjkh
7179013Simp#ifndef _UID_T_DECLARED
7252653Smarceltypedef	__uid_t		uid_t;
7345744Speter#define	_UID_T_DECLARED
7452653Smarcel#endif
7552653Smarcel
7652653Smarcel#ifndef _USECONDS_T_DECLARED
7745744Spetertypedef	__useconds_t	useconds_t;
7845744Speter#define	_USECONDS_T_DECLARED
79151744Sjhb#endif
80169507Swkoszek
811553Srgrimes#define	 STDIN_FILENO	0	/* standard input file descriptor */
82169507Swkoszek#define	STDOUT_FILENO	1	/* standard output file descriptor */
83169507Swkoszek#define	STDERR_FILENO	2	/* standard error file descriptor */
84169507Swkoszek
85169507Swkoszek#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
86169507Swkoszek#define	F_ULOCK		0	/* unlock locked section */
87169507Swkoszek#define	F_LOCK		1	/* lock a section for exclusive use */
8861640Speter#define	F_TLOCK		2	/* test and lock a section for exclusive use */
8961640Speter#define	F_TEST		3	/* test a section for locks by other procs */
9061640Speter#endif
9171866Speter
92169507Swkoszek/*
93207260Simp * POSIX options and option groups we unconditionally do or don't
94235789Sbapt * implement.  This list includes those options which are exclusively
9529451Scharnier * implemented (or not) in user mode.  Please keep this list in
9671866Speter * alphabetical order.
9771866Speter *
9871866Speter * Anything which is defined as zero below **must** have an
9971866Speter * implementation for the corresponding sysconf() which is able to
10071866Speter * determine conclusively whether or not the feature is supported.
1011553Srgrimes * Anything which is defined as other than -1 below **must** have
1021553Srgrimes * complete headers, types, and function declarations as specified by
1031553Srgrimes * the POSIX standard; however, if the relevant sysconf() function
1041553Srgrimes * returns -1, the functions may be stubbed out.
10529451Scharnier */
10661640Speter#define	_POSIX_BARRIERS			200112L
1071553Srgrimes#define	_POSIX_READER_WRITER_LOCKS	200112L
1081553Srgrimes#define	_POSIX_REGEXP			1
1091553Srgrimes#define	_POSIX_SHELL			1
11052653Smarcel#define	_POSIX_SPAWN			-1
1111553Srgrimes#define	_POSIX_SPIN_LOCKS		200112L
112169507Swkoszek#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
113264325Sasomers#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
114209969Snwhitehorn#define	_POSIX_THREAD_CPUTIME		200112L
1151553Srgrimes#define	_POSIX_THREAD_PRIO_INHERIT	200112L
116209969Snwhitehorn#define	_POSIX_THREAD_PRIO_PROTECT	200112L
117169507Swkoszek#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
118264325Sasomers#define	_POSIX_THREAD_PROCESS_SHARED	-1
119264325Sasomers#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
1201553Srgrimes#define	_POSIX_THREAD_SPORADIC_SERVER	-1
121169507Swkoszek#define	_POSIX_THREADS			200112L
122169507Swkoszek#define	_POSIX_TRACE			-1
123169507Swkoszek#define	_POSIX_TRACE_EVENT_FILTER	-1
124264325Sasomers#define	_POSIX_TRACE_INHERIT		-1
125264325Sasomers#define	_POSIX_TRACE_LOG		-1
126264325Sasomers#define	_POSIX2_C_BIND			200112L	/* mandatory */
127264325Sasomers#define	_POSIX2_C_DEV			-1 /* need c99 utility */
128264325Sasomers#define	_POSIX2_CHAR_TERM		1
129264325Sasomers#define	_POSIX2_FORT_DEV		-1 /* need fort77 utility */
130264325Sasomers#define	_POSIX2_FORT_RUN		200112L
131264325Sasomers#define	_POSIX2_LOCALEDEF		-1
132209969Snwhitehorn#define	_POSIX2_PBS			-1
133209969Snwhitehorn#define	_POSIX2_PBS_ACCOUNTING		-1
134209969Snwhitehorn#define	_POSIX2_PBS_CHECKPOINT		-1
13552653Smarcel#define	_POSIX2_PBS_LOCATE		-1
13652653Smarcel#define	_POSIX2_PBS_MESSAGE		-1
13769004Simp#define	_POSIX2_PBS_TRACK		-1
13852653Smarcel#define	_POSIX2_SW_DEV			-1 /* XXX ??? */
139205880Sru#define	_POSIX2_UPE			200112L
14052653Smarcel#define	_V6_ILP32_OFF32			-1
1411553Srgrimes#define	_V6_ILP32_OFFBIG		0
14245579Sgrog#define	_V6_LP64_OFF64			0
1431553Srgrimes#define	_V6_LPBIG_OFFBIG		-1
1441553Srgrimes
1451553Srgrimes#if __XSI_VISIBLE
1461553Srgrimes#define	_XOPEN_CRYPT			-1 /* XXX ??? */
147169507Swkoszek#define	_XOPEN_ENH_I18N			-1 /* mandatory in XSI */
148169507Swkoszek#define	_XOPEN_LEGACY			-1
149169507Swkoszek#define	_XOPEN_REALTIME			-1
150169507Swkoszek#define	_XOPEN_REALTIME_THREADS		-1
151169507Swkoszek#define	_XOPEN_UNIX			-1
152169507Swkoszek#endif
1531553Srgrimes
1541553Srgrimes/* Define the POSIX.2 version we target for compliance. */
15529451Scharnier#define	_POSIX2_VERSION		199212L
1561553Srgrimes
1571553Srgrimes/*
1581553Srgrimes * POSIX-style system configuration variable accessors (for the
1591553Srgrimes * sysconf function).  The kernel does not directly implement the
160169507Swkoszek * sysconf() interface; rather, a C library stub translates references
161169507Swkoszek * to sysconf() into calls to sysctl() using a giant switch statement.
162169507Swkoszek * Those that are marked `user' are implemented entirely in the C
163169507Swkoszek * library and never query the kernel.  pathconf() is implemented
164169507Swkoszek * directly by the kernel so those are not defined here.
16529451Scharnier */
16629451Scharnier#define	_SC_ARG_MAX		 1
1671553Srgrimes#define	_SC_CHILD_MAX		 2
168151744Sjhb#define	_SC_CLK_TCK		 3
169178085Simp#define	_SC_NGROUPS_MAX		 4
170178085Simp#define	_SC_OPEN_MAX		 5
171169647Simp#define	_SC_JOB_CONTROL		 6
172169647Simp#define	_SC_SAVED_IDS		 7
173169647Simp#define	_SC_VERSION		 8
174169647Simp#define	_SC_BC_BASE_MAX		 9 /* user */
175169647Simp#define	_SC_BC_DIM_MAX		10 /* user */
176169647Simp#define	_SC_BC_SCALE_MAX	11 /* user */
177169647Simp#define	_SC_BC_STRING_MAX	12 /* user */
178169647Simp#define	_SC_COLL_WEIGHTS_MAX	13 /* user */
17952653Smarcel#define	_SC_EXPR_NEST_MAX	14 /* user */
18052653Smarcel#define	_SC_LINE_MAX		15 /* user */
18152653Smarcel#define	_SC_RE_DUP_MAX		16 /* user */
18252653Smarcel#define	_SC_2_VERSION		17 /* user */
18352653Smarcel#define	_SC_2_C_BIND		18 /* user */
18452653Smarcel#define	_SC_2_C_DEV		19 /* user */
18569004Simp#define	_SC_2_CHAR_TERM		20 /* user */
18669004Simp#define	_SC_2_FORT_DEV		21 /* user */
18752653Smarcel#define	_SC_2_FORT_RUN		22 /* user */
18852653Smarcel#define	_SC_2_LOCALEDEF		23 /* user */
189169507Swkoszek#define	_SC_2_SW_DEV		24 /* user */
190169507Swkoszek#define	_SC_2_UPE		25 /* user */
191169507Swkoszek#define	_SC_STREAM_MAX		26 /* user */
192169507Swkoszek#define	_SC_TZNAME_MAX		27 /* user */
193169507Swkoszek
194110895Sru#if __POSIX_VISIBLE >= 199309
195129073Scognet#define	_SC_ASYNCHRONOUS_IO	28
196129073Scognet#define	_SC_MAPPED_FILES	29
197163638Simp#define	_SC_MEMLOCK		30
1981553Srgrimes#define	_SC_MEMLOCK_RANGE	31
1991553Srgrimes#define	_SC_MEMORY_PROTECTION	32
200153888Sru#define	_SC_MESSAGE_PASSING	33
201153888Sru#define	_SC_PRIORITIZED_IO	34
202153888Sru#define	_SC_PRIORITY_SCHEDULING	35
203153888Sru#define	_SC_REALTIME_SIGNALS	36
20472000Speter#define	_SC_SEMAPHORES		37
20545775Speter#define	_SC_FSYNC		38
2061553Srgrimes#define	_SC_SHARED_MEMORY_OBJECTS 39
2071553Srgrimes#define	_SC_SYNCHRONIZED_IO	40
208153888Sru#define	_SC_TIMERS		41
209153888Sru#define	_SC_AIO_LISTIO_MAX	42
210153888Sru#define	_SC_AIO_MAX		43
211153888Sru#define	_SC_AIO_PRIO_DELTA_MAX	44
212153888Sru#define	_SC_DELAYTIMER_MAX	45
213153888Sru#define	_SC_MQ_OPEN_MAX		46
214153888Sru#define	_SC_PAGESIZE		47
215153888Sru#define	_SC_RTSIG_MAX		48
216207260Simp#define	_SC_SEM_NSEMS_MAX	49
217153888Sru#define	_SC_SEM_VALUE_MAX	50
218209969Snwhitehorn#define	_SC_SIGQUEUE_MAX	51
219209969Snwhitehorn#define	_SC_TIMER_MAX		52
220209969Snwhitehorn#endif
221209969Snwhitehorn
222209969Snwhitehorn#if __POSIX_VISIBLE >= 200112
223209969Snwhitehorn#define	_SC_2_PBS		59 /* user */
224209969Snwhitehorn#define	_SC_2_PBS_ACCOUNTING	60 /* user */
225209969Snwhitehorn#define	_SC_2_PBS_CHECKPOINT	61 /* user */
226209969Snwhitehorn#define	_SC_2_PBS_LOCATE	62 /* user */
227209969Snwhitehorn#define	_SC_2_PBS_MESSAGE	63 /* user */
228209969Snwhitehorn#define	_SC_2_PBS_TRACK		64 /* user */
229209969Snwhitehorn#define	_SC_ADVISORY_INFO	65
230209969Snwhitehorn#define	_SC_BARRIERS		66 /* user */
231169507Swkoszek#define	_SC_CLOCK_SELECTION	67
23212772Speter#define	_SC_CPUTIME		68
2331553Srgrimes#define	_SC_FILE_LOCKING	69
234153888Sru#define	_SC_GETGR_R_SIZE_MAX	70 /* user */
235153888Sru#define	_SC_GETPW_R_SIZE_MAX	71 /* user */
2361553Srgrimes#define	_SC_HOST_NAME_MAX	72
23771866Speter#define	_SC_LOGIN_NAME_MAX	73
2388248Sjkh#define	_SC_MONOTONIC_CLOCK	74
239154338Sflz#define	_SC_MQ_PRIO_MAX		75
2401553Srgrimes#define	_SC_READER_WRITER_LOCKS	76 /* user */
2411553Srgrimes#define	_SC_REGEXP		77 /* user */
2421553Srgrimes#define	_SC_SHELL		78 /* user */
24352653Smarcel#define	_SC_SPAWN		79 /* user */
24452653Smarcel#define	_SC_SPIN_LOCKS		80 /* user */
24552653Smarcel#define	_SC_SPORADIC_SERVER	81
24652653Smarcel#define	_SC_THREAD_ATTR_STACKADDR 82 /* user */
24752653Smarcel#define	_SC_THREAD_ATTR_STACKSIZE 83 /* user */
24829451Scharnier#define	_SC_THREAD_CPUTIME	84 /* user */
24961640Speter#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
25052653Smarcel#define	_SC_THREAD_KEYS_MAX	86 /* user */
251175163Semaste#define	_SC_THREAD_PRIO_INHERIT	87 /* user */
252175163Semaste#define	_SC_THREAD_PRIO_PROTECT	88 /* user */
253175163Semaste#define	_SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
25452653Smarcel#define	_SC_THREAD_PROCESS_SHARED 90 /* user */
25570673Speter#define	_SC_THREAD_SAFE_FUNCTIONS 91 /* user */
256205880Sru#define	_SC_THREAD_SPORADIC_SERVER 92 /* user */
257175163Semaste#define	_SC_THREAD_STACK_MIN	93 /* user */
258175163Semaste#define	_SC_THREAD_THREADS_MAX	94 /* user */
259175163Semaste#define	_SC_TIMEOUTS		95 /* user */
260175163Semaste#define	_SC_THREADS		96 /* user */
261175163Semaste#define	_SC_TRACE		97 /* user */
262175163Semaste#define	_SC_TRACE_EVENT_FILTER	98 /* user */
263175163Semaste#define	_SC_TRACE_INHERIT	99 /* user */
264175163Semaste#define	_SC_TRACE_LOG		100 /* user */
265175163Semaste#define	_SC_TTY_NAME_MAX	101 /* user */
266175163Semaste#define	_SC_TYPED_MEMORY_OBJECTS 102
267175163Semaste#define	_SC_V6_ILP32_OFF32	103 /* user */
268175163Semaste#define	_SC_V6_ILP32_OFFBIG	104 /* user */
269175163Semaste#define	_SC_V6_LP64_OFF64	105 /* user */
270175163Semaste#define	_SC_V6_LPBIG_OFFBIG	106 /* user */
271175163Semaste#define	_SC_IPV6		118
27252653Smarcel#define	_SC_RAW_SOCKETS		119
27352653Smarcel#define	_SC_SYMLOOP_MAX		120
27452653Smarcel#endif
27561640Speter
27629451Scharnier#if __XSI_VISIBLE
277144352Simp#define	_SC_ATEXIT_MAX		107 /* user */
278209969Snwhitehorn#define	_SC_IOV_MAX		56
279169507Swkoszek#define	_SC_PAGE_SIZE		_SC_PAGESIZE
280169507Swkoszek#define	_SC_XOPEN_CRYPT		108 /* user */
28129451Scharnier#define	_SC_XOPEN_ENH_I18N	109 /* user */
28229451Scharnier#define	_SC_XOPEN_LEGACY	110 /* user */
2831553Srgrimes#define	_SC_XOPEN_REALTIME	111
2841553Srgrimes#define	_SC_XOPEN_REALTIME_THREADS 112
2851553Srgrimes#define	_SC_XOPEN_SHM		113
2861553Srgrimes#define	_SC_XOPEN_STREAMS	114
2871553Srgrimes#define	_SC_XOPEN_UNIX		115
2881553Srgrimes#define	_SC_XOPEN_VERSION	116
2891553Srgrimes#define	_SC_XOPEN_XCU_VERSION	117 /* user */
29061640Speter#endif
2911553Srgrimes
2921553Srgrimes#if __BSD_VISIBLE
29361640Speter#define	_SC_NPROCESSORS_CONF	57
29461640Speter#define	_SC_NPROCESSORS_ONLN	58
2954571Sgibbs#endif
2961553Srgrimes
2974571Sgibbs/* Extensions found in Solaris and Linux. */
2981553Srgrimes#define	_SC_PHYS_PAGES		121
2991553Srgrimes
3001553Srgrimes/* Keys for the confstr(3) function. */
3011553Srgrimes#if __POSIX_VISIBLE >= 199209
3021553Srgrimes#define	_CS_PATH		1	/* default value of PATH */
3034571Sgibbs#endif
3044571Sgibbs
3054571Sgibbs#if __POSIX_VISIBLE >= 200112
3064571Sgibbs#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
30745775Speter#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
3084571Sgibbs#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
3094571Sgibbs#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
3104571Sgibbs#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
3114571Sgibbs#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
3124571Sgibbs#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
3134571Sgibbs#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
31445775Speter#define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
3151553Srgrimes#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
3161553Srgrimes#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
317276280Sian#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
318276280Sian#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
319276280Sian#endif
320276280Sian
321276280Sian__BEGIN_DECLS
3221553Srgrimes/* 1003.1-1990 */
3231553Srgrimesvoid	 _exit(int) __dead2;
3241553Srgrimesint	 access(const char *, int);
3251553Srgrimesunsigned int	 alarm(unsigned int);
3261553Srgrimesint	 chdir(const char *);
3271553Srgrimesint	 chown(const char *, uid_t, gid_t);
3281553Srgrimesint	 close(int);
3291553Srgrimesint	 dup(int);
3301553Srgrimesint	 dup2(int, int);
3311553Srgrimesint	 eaccess(const char *, int);
3321553Srgrimesint	 execl(const char *, const char *, ...);
3331553Srgrimesint	 execle(const char *, const char *, ...);
3341553Srgrimesint	 execlp(const char *, const char *, ...);
3351553Srgrimesint	 execv(const char *, char * const *);
3361553Srgrimesint	 execve(const char *, char * const *, char * const *);
3371553Srgrimesint	 execvp(const char *, char * const *);
3381553Srgrimespid_t	 fork(void);
3391553Srgrimeslong	 fpathconf(int, int);
34061640Speterchar	*getcwd(char *, size_t);
3411553Srgrimesgid_t	 getegid(void);
3421553Srgrimesuid_t	 geteuid(void);
34361640Spetergid_t	 getgid(void);
34461640Speterint	 getgroups(int, gid_t []);
3454571Sgibbschar	*getlogin(void);
3461553Srgrimespid_t	 getpgrp(void);
3474571Sgibbspid_t	 getpid(void);
3481553Srgrimespid_t	 getppid(void);
3491553Srgrimesuid_t	 getuid(void);
3501553Srgrimesint	 isatty(int);
3511553Srgrimesint	 link(const char *, const char *);
3521553Srgrimes#ifndef _LSEEK_DECLARED
3534571Sgibbs#define	_LSEEK_DECLARED
3544571Sgibbsoff_t	 lseek(int, off_t, int);
3554571Sgibbs#endif
3564571Sgibbslong	 pathconf(const char *, int);
35745775Speterint	 pause(void);
3584571Sgibbsint	 pipe(int *);
3594571Sgibbsssize_t	 read(int, void *, size_t);
3604571Sgibbsint	 rmdir(const char *);
3614571Sgibbsint	 setgid(gid_t);
3624571Sgibbsint	 setpgid(pid_t, pid_t);
3634571Sgibbsvoid	 setproctitle(const char *_fmt, ...) __printf0like(1, 2);
36445775Speterpid_t	 setsid(void);
3651553Srgrimesint	 setuid(uid_t);
3661553Srgrimesunsigned int	 sleep(unsigned int);
36761640Speterlong	 sysconf(int);
3681553Srgrimespid_t	 tcgetpgrp(int);
369248777Sjkimint	 tcsetpgrp(int, pid_t);
3701553Srgrimeschar	*ttyname(int);
371248777Sjkimint	ttyname_r(int, char *, size_t);
3721553Srgrimesint	 unlink(const char *);
373248777Sjkimssize_t	 write(int, const void *, size_t);
3741553Srgrimes
3751553Srgrimes/* 1003.2-1992 */
3761553Srgrimes#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE
3771553Srgrimessize_t	 confstr(int, char *, size_t);
3781553Srgrimes#ifndef _GETOPT_DECLARED
379248777Sjkim#define	_GETOPT_DECLARED
380248777Sjkimint	 getopt(int, char * const [], const char *);
381248777Sjkim
382248777Sjkimextern char *optarg;			/* getopt(3) external variables */
383248777Sjkimextern int optind, opterr, optopt;
384248777Sjkim#endif /* _GETOPT_DECLARED */
3851553Srgrimes#endif
386248777Sjkim
3871553Srgrimes/* ISO/IEC 9945-1: 1996 */
3881553Srgrimes#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
3891553Srgrimesint	 fsync(int);
3901553Srgrimes
3911553Srgrimes/*
3921553Srgrimes * ftruncate() was in the POSIX Realtime Extension (it's used for shared
3931553Srgrimes * memory), but truncate() was not.
3941553Srgrimes */
3951553Srgrimes#ifndef _FTRUNCATE_DECLARED
3961553Srgrimes#define	_FTRUNCATE_DECLARED
3971553Srgrimesint	 ftruncate(int, off_t);
3981553Srgrimes#endif
3991553Srgrimes#endif
4001553Srgrimes
4011553Srgrimes#if __POSIX_VISIBLE >= 199506
4021553Srgrimesint	 getlogin_r(char *, int);
4031553Srgrimes#endif
4041553Srgrimes
4051553Srgrimes/* 1003.1-2001 */
4061553Srgrimes#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
4071553Srgrimesint	 fchown(int, uid_t, gid_t);
40872684Speterssize_t	 readlink(const char * __restrict, char * __restrict, size_t);
4091553Srgrimes#endif
41069004Simp#if __POSIX_VISIBLE >= 200112
4111553Srgrimesint	 gethostname(char *, size_t);
41269004Simpint	 setegid(gid_t);
41369004Simpint	 seteuid(uid_t);
41469004Simp#endif
41569004Simp
4161553Srgrimes/*
4171553Srgrimes * symlink() was originally in POSIX.1a, which was withdrawn after
41813400Speter * being overtaken by events (1003.1-2001).  It was in XPG4.2, and of
419169507Swkoszek * course has been in BSD since 4.2.
420169507Swkoszek */
421169507Swkoszek#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE
422169507Swkoszekint	 symlink(const char * __restrict, const char * __restrict);
42345744Speter#endif
424169507Swkoszek
425169507Swkoszek/* X/Open System Interfaces */
426169507Swkoszek#if __XSI_VISIBLE
427169507Swkoszekchar	*crypt(const char *, const char *);
428169507Swkoszek/* char	*ctermid(char *); */		/* XXX ??? */
429169507Swkoszekint	 encrypt(char *, int);
430169512Swkoszekint	 fchdir(int);
431169507Swkoszeklong	 gethostid(void);
432169507Swkoszekint	 getpgid(pid_t _pid);
433169507Swkoszekint	 getsid(pid_t _pid);
434169507Swkoszekchar	*getwd(char *);			/* LEGACY: obsoleted by getcwd() */
435169507Swkoszekint	 lchown(const char *, uid_t, gid_t);
436169507Swkoszekint	 lockf(int, int, off_t);
437169507Swkoszekint	 nice(int);
438169507Swkoszekssize_t	 pread(int, void *, size_t, off_t);
439169507Swkoszekssize_t	 pwrite(int, const void *, size_t, off_t);
440169507Swkoszekint	 setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */
441169507Swkoszekint	 setregid(gid_t, gid_t);
442169507Swkoszekint	 setreuid(uid_t, uid_t);
443169507Swkoszek
444169507Swkoszek#ifndef _SWAB_DECLARED
445169507Swkoszek#define _SWAB_DECLARED
446169507Swkoszekvoid	 swab(const void * __restrict, void * __restrict, ssize_t);
447169512Swkoszek#endif /* _SWAB_DECLARED */
448169512Swkoszek
449169512Swkoszekvoid	 sync(void);
450169512Swkoszekuseconds_t	 ualarm(useconds_t, useconds_t);
451169512Swkoszekint	 usleep(useconds_t);
452169512Swkoszekpid_t	 vfork(void);
453169512Swkoszek
454169512Swkoszek/* See comment at ftruncate() above. */
455169512Swkoszek#ifndef _TRUNCATE_DECLARED
456169512Swkoszek#define	_TRUNCATE_DECLARED
457169507Swkoszekint	 truncate(const char *, off_t);
458169507Swkoszek#endif
459169507Swkoszek#endif /* __XSI_VISIBLE */
460169507Swkoszek
461169507Swkoszek#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
462169507Swkoszekint	 brk(const void *);
463169507Swkoszekint	 chroot(const char *);
464169507Swkoszekint	 getdtablesize(void);
465169507Swkoszekint	 getpagesize(void) __pure2;
466169507Swkoszekchar	*getpass(const char *);
467169507Swkoszekvoid	*sbrk(intptr_t);
468169507Swkoszek#endif
469169507Swkoszek
470169507Swkoszek#if __BSD_VISIBLE
471169507Swkoszekstruct timeval;				/* select(2) */
472169507Swkoszekint	 acct(const char *);
473169507Swkoszekint	 async_daemon(void);
474169507Swkoszekint	 check_utility_compat(const char *);
475169507Swkoszekconst char *
476169507Swkoszek	 crypt_get_format(void);
477169507Swkoszekint	 crypt_set_format(const char *);
478169507Swkoszekint	 des_cipher(const char *, char *, long, int);
479188280Swkoszekint	 des_setkey(const char *key);
480188280Swkoszekvoid	 endusershell(void);
481188280Swkoszekint	 exect(const char *, char * const *, char * const *);
482188280Swkoszekint	 execvP(const char *, const char *, char * const *);
483188280Swkoszekint	 feature_present(const char *);
484169507Swkoszekchar	*fflagstostr(u_long);
485169507Swkoszekint	 getdomainname(char *, int);
486169507Swkoszekint	 getgrouplist(const char *, gid_t, gid_t *, int *);
487169507Swkoszekmode_t	 getmode(const void *, mode_t);
488169507Swkoszekint	 getpeereid(int, uid_t *, gid_t *);
489169507Swkoszekint	 getresgid(gid_t *, gid_t *, gid_t *);
490169507Swkoszekint	 getresuid(uid_t *, uid_t *, uid_t *);
491169507Swkoszekchar	*getusershell(void);
492169507Swkoszekint	 initgroups(const char *, gid_t);
493169507Swkoszekint	 iruserok(unsigned long, int, const char *, const char *);
494169507Swkoszekint	 iruserok_sa(const void *, int, int, const char *, const char *);
495169507Swkoszekint	 issetugid(void);
496169507Swkoszekchar	*mkdtemp(char *);
497169507Swkoszek#ifndef	_MKNOD_DECLARED
498169507Swkoszekint	 mknod(const char *, mode_t, dev_t);
499169507Swkoszek#define	_MKNOD_DECLARED
500169507Swkoszek#endif
501169507Swkoszek#ifndef _MKSTEMP_DECLARED
502169507Swkoszekint	 mkstemp(char *);
50361640Speter#define	_MKSTEMP_DECLARED
50416239Sjkh#endif
505169507Swkoszekint	 mkstemps(char *, int);
506169507Swkoszek#ifndef _MKTEMP_DECLARED
50716239Sjkhchar	*mktemp(char *);
508169507Swkoszek#define	_MKTEMP_DECLARED
509169507Swkoszek#endif
510169507Swkoszekint	 nfssvc(int, void *);
511169507Swkoszekint	 profil(char *, size_t, vm_offset_t, int);
512169507Swkoszekint	 rcmd(char **, int, const char *, const char *, const char *, int *);
51352098Speterint	 rcmd_af(char **, int, const char *,
51429451Scharnier		const char *, const char *, int *, int);
515169507Swkoszekint	 rcmdsh(char **, int, const char *,
516169507Swkoszek		const char *, const char *, const char *);
517169507Swkoszekchar	*re_comp(const char *);
518169507Swkoszekint	 re_exec(const char *);
519169507Swkoszekint	 reboot(int);
520169507Swkoszekint	 revoke(const char *);
521169507Swkoszekpid_t	 rfork(int);
522169507Swkoszekpid_t	 rfork_thread(int, void *, int (*)(void *), void *);
52316239Sjkhint	 rresvport(int *);
524169507Swkoszekint	 rresvport_af(int *, int);
525169507Swkoszekint	 ruserok(const char *, int, const char *, const char *);
526205880Sru#if __BSD_VISIBLE
527169507Swkoszek#ifndef _SELECT_DECLARED
528169507Swkoszek#define	_SELECT_DECLARED
529169507Swkoszekint	 select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
530169507Swkoszek#endif
531169507Swkoszek#endif
532169507Swkoszekint	 setdomainname(const char *, int);
533169507Swkoszekint	 setgroups(int, const gid_t *);
534169507Swkoszekvoid	 sethostid(long);
535169507Swkoszekint	 sethostname(const char *, int);
536169507Swkoszek#ifndef _SETKEY_DECLARED
537169507Swkoszekint	 setkey(const char *);
538169507Swkoszek#define	_SETKEY_DECLARED
53916239Sjkh#endif
54020940Speterint	 setlogin(const char *);
541169507Swkoszekvoid	*setmode(const char *);
54216239Sjkhint	 setresgid(gid_t, gid_t, gid_t);
54316239Sjkhint	 setresuid(uid_t, uid_t, uid_t);
54413400Speterint	 setrgid(gid_t);
54513400Speterint	 setruid(uid_t);
54613400Spetervoid	 setusershell(void);
54713400Speterint	 strtofflags(char **, u_long *, u_long *);
54813400Speterint	 swapon(const char *);
54913400Speterint	 swapoff(const char *);
55013400Speterint	 syscall(int, ...);
55113400Speteroff_t	 __syscall(quad_t, ...);
55213400Speterint	 ttyslot(void);
55313400Speterint	 undelete(const char *);
55413400Speterint	 unwhiteout(const char *);
55513400Spetervoid	*valloc(size_t);			/* obsoleted by malloc() */
55613400Speter
55713400Speter#ifndef _OPTRESET_DECLARED
55813400Speter#define	_OPTRESET_DECLARED
55913400Speterextern int optreset;			/* getopt(3) external variable */
56013400Speter#endif
56113400Speter#endif /* __BSD_VISIBLE */
56213400Speter
56313400Speter#if __BSD_VISIBLE
56413400Speterint	faccessat(int, const char *, int, int);
56513400Speterint	fchmodat(int, const char *, mode_t, int);
56613400Speterint	fchownat(int, const char *, uid_t, gid_t, int);
56713400Speterint	fexecve(int, char *const [], char *const []);
56813400Speterint	linkat(int, const char *, int, const char *, int);
56913400Speterssize_t	readlinkat(int, const char * __restrict, char * __restrict, size_t);
57013400Speterint	symlinkat(const char *, int, const char *);
57113400Speterint	unlinkat(int, const char *, int);
57213400Speter#endif /* __BSD_VISIBLE */
57313400Speter__END_DECLS
57413400Speter
57513400Speter#endif /* !_UNISTD_H_ */
57613400Speter