unistd.h revision 183390
190075Sobrien/*- 2169689Skan * Copyright (c) 1991, 1993, 1994 3169689Skan * The Regents of the University of California. All rights reserved. 4169689Skan * 590075Sobrien * Redistribution and use in source and binary forms, with or without 690075Sobrien * modification, are permitted provided that the following conditions 7132718Skan * are met: 890075Sobrien * 1. Redistributions of source code must retain the above copyright 9132718Skan * notice, this list of conditions and the following disclaimer. 10132718Skan * 2. Redistributions in binary form must reproduce the above copyright 11132718Skan * notice, this list of conditions and the following disclaimer in the 12132718Skan * documentation and/or other materials provided with the distribution. 1390075Sobrien * 3. All advertising materials mentioning features or use of this software 14132718Skan * must display the following acknowledgement: 15132718Skan * This product includes software developed by the University of 16132718Skan * California, Berkeley and its contributors. 17132718Skan * 4. Neither the name of the University nor the names of its contributors 1890075Sobrien * may be used to endorse or promote products derived from this software 19132718Skan * without specific prior written permission. 20132718Skan * 21169689Skan * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22169689Skan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2390075Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2490075Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2590075Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26132718Skan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27132718Skan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2890075Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2990075Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3090075Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3190075Sobrien * SUCH DAMAGE. 3290075Sobrien * 3390075Sobrien * @(#)unistd.h 8.12 (Berkeley) 4/27/95 3490075Sobrien * $FreeBSD: head/include/unistd.h 183390 2008-09-26 19:23:22Z peter $ 3590075Sobrien */ 3690075Sobrien 3790075Sobrien#ifndef _UNISTD_H_ 3890075Sobrien#define _UNISTD_H_ 3990075Sobrien 4090075Sobrien#include <sys/cdefs.h> 4190075Sobrien#include <sys/types.h> /* XXX adds too much pollution. */ 4290075Sobrien#include <sys/unistd.h> 4390075Sobrien#include <sys/_null.h> 4490075Sobrien#include <sys/_types.h> 4590075Sobrien 4690075Sobrien#ifndef _GID_T_DECLARED 4790075Sobrientypedef __gid_t gid_t; 4890075Sobrien#define _GID_T_DECLARED 4990075Sobrien#endif 5090075Sobrien 5190075Sobrien#ifndef _OFF_T_DECLARED 5290075Sobrientypedef __off_t off_t; 5390075Sobrien#define _OFF_T_DECLARED 54132718Skan#endif 55132718Skan 56169689Skan#ifndef _PID_T_DECLARED 57169689Skantypedef __pid_t pid_t; 58169689Skan#define _PID_T_DECLARED 59169689Skan#endif 60132718Skan 61132718Skan#ifndef _SIZE_T_DECLARED 62132718Skantypedef __size_t size_t; 63169689Skan#define _SIZE_T_DECLARED 64169689Skan#endif 65169689Skan 6690075Sobrien#ifndef _SSIZE_T_DECLARED 6790075Sobrientypedef __ssize_t ssize_t; 6890075Sobrien#define _SSIZE_T_DECLARED 6990075Sobrien#endif 7090075Sobrien 7190075Sobrien#ifndef _UID_T_DECLARED 7290075Sobrientypedef __uid_t uid_t; 7390075Sobrien#define _UID_T_DECLARED 74132718Skan#endif 75132718Skan 76132718Skan#ifndef _USECONDS_T_DECLARED 77132718Skantypedef __useconds_t useconds_t; 78132718Skan#define _USECONDS_T_DECLARED 79132718Skan#endif 80132718Skan 81132718Skan#define STDIN_FILENO 0 /* standard input file descriptor */ 82132718Skan#define STDOUT_FILENO 1 /* standard output file descriptor */ 83132718Skan#define STDERR_FILENO 2 /* standard error file descriptor */ 84169689Skan 85169689Skan#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 86132718Skan#define F_ULOCK 0 /* unlock locked section */ 87132718Skan#define F_LOCK 1 /* lock a section for exclusive use */ 88132718Skan#define F_TLOCK 2 /* test and lock a section for exclusive use */ 89132718Skan#define F_TEST 3 /* test a section for locks by other procs */ 90132718Skan#endif 91132718Skan 92132718Skan/* 93132718Skan * POSIX options and option groups we unconditionally do or don't 94132718Skan * implement. This list includes those options which are exclusively 95132718Skan * implemented (or not) in user mode. Please keep this list in 96132718Skan * alphabetical order. 97132718Skan * 98132718Skan * Anything which is defined as zero below **must** have an 99132718Skan * implementation for the corresponding sysconf() which is able to 100132718Skan * determine conclusively whether or not the feature is supported. 101132718Skan * Anything which is defined as other than -1 below **must** have 102132718Skan * complete headers, types, and function declarations as specified by 103132718Skan * the POSIX standard; however, if the relevant sysconf() function 104132718Skan * returns -1, the functions may be stubbed out. 105132718Skan */ 106132718Skan#define _POSIX_BARRIERS 200112L 107132718Skan#define _POSIX_READER_WRITER_LOCKS 200112L 108132718Skan#define _POSIX_REGEXP 1 109132718Skan#define _POSIX_SHELL 1 110132718Skan#define _POSIX_SPAWN 200112L 111132718Skan#define _POSIX_SPIN_LOCKS 200112L 112132718Skan#define _POSIX_THREAD_ATTR_STACKADDR 200112L 113132718Skan#define _POSIX_THREAD_ATTR_STACKSIZE 200112L 114169689Skan#define _POSIX_THREAD_CPUTIME 200112L 115169689Skan#define _POSIX_THREAD_PRIO_INHERIT 200112L 116169689Skan#define _POSIX_THREAD_PRIO_PROTECT 200112L 117169689Skan#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L 118169689Skan#define _POSIX_THREAD_PROCESS_SHARED -1 119169689Skan#define _POSIX_THREAD_SAFE_FUNCTIONS -1 120169689Skan#define _POSIX_THREAD_SPORADIC_SERVER -1 121169689Skan#define _POSIX_THREADS 200112L 122169689Skan#define _POSIX_TRACE -1 123169689Skan#define _POSIX_TRACE_EVENT_FILTER -1 124169689Skan#define _POSIX_TRACE_INHERIT -1 125169689Skan#define _POSIX_TRACE_LOG -1 126169689Skan#define _POSIX2_C_BIND 200112L /* mandatory */ 127169689Skan#define _POSIX2_C_DEV -1 /* need c99 utility */ 128169689Skan#define _POSIX2_CHAR_TERM 1 129169689Skan#define _POSIX2_FORT_DEV -1 /* need fort77 utility */ 130169689Skan#define _POSIX2_FORT_RUN 200112L 13190075Sobrien#define _POSIX2_LOCALEDEF -1 13290075Sobrien#define _POSIX2_PBS -1 13390075Sobrien#define _POSIX2_PBS_ACCOUNTING -1 13490075Sobrien#define _POSIX2_PBS_CHECKPOINT -1 13590075Sobrien#define _POSIX2_PBS_LOCATE -1 13690075Sobrien#define _POSIX2_PBS_MESSAGE -1 13790075Sobrien#define _POSIX2_PBS_TRACK -1 13890075Sobrien#define _POSIX2_SW_DEV -1 /* XXX ??? */ 13990075Sobrien#define _POSIX2_UPE 200112L 14090075Sobrien#define _V6_ILP32_OFF32 -1 14190075Sobrien#define _V6_ILP32_OFFBIG 0 142132718Skan#define _V6_LP64_OFF64 0 143132718Skan#define _V6_LPBIG_OFFBIG -1 144132718Skan 145132718Skan#if __XSI_VISIBLE 146132718Skan#define _XOPEN_CRYPT -1 /* XXX ??? */ 147132718Skan#define _XOPEN_ENH_I18N -1 /* mandatory in XSI */ 148132718Skan#define _XOPEN_LEGACY -1 149132718Skan#define _XOPEN_REALTIME -1 150132718Skan#define _XOPEN_REALTIME_THREADS -1 151132718Skan#define _XOPEN_UNIX -1 152132718Skan#endif 153132718Skan 154132718Skan/* Define the POSIX.2 version we target for compliance. */ 155132718Skan#define _POSIX2_VERSION 199212L 156169689Skan 157169689Skan/* 158169689Skan * POSIX-style system configuration variable accessors (for the 159169689Skan * sysconf function). The kernel does not directly implement the 16090075Sobrien * sysconf() interface; rather, a C library stub translates references 16190075Sobrien * to sysconf() into calls to sysctl() using a giant switch statement. 162169689Skan * Those that are marked `user' are implemented entirely in the C 163169689Skan * library and never query the kernel. pathconf() is implemented 164169689Skan * directly by the kernel so those are not defined here. 165169689Skan */ 16690075Sobrien#define _SC_ARG_MAX 1 16790075Sobrien#define _SC_CHILD_MAX 2 168117395Skan#define _SC_CLK_TCK 3 169117395Skan#define _SC_NGROUPS_MAX 4 170117395Skan#define _SC_OPEN_MAX 5 171132718Skan#define _SC_JOB_CONTROL 6 172132718Skan#define _SC_SAVED_IDS 7 173132718Skan#define _SC_VERSION 8 174169689Skan#define _SC_BC_BASE_MAX 9 /* user */ 175169689Skan#define _SC_BC_DIM_MAX 10 /* user */ 176132718Skan#define _SC_BC_SCALE_MAX 11 /* user */ 177117395Skan#define _SC_BC_STRING_MAX 12 /* user */ 178132718Skan#define _SC_COLL_WEIGHTS_MAX 13 /* user */ 17990075Sobrien#define _SC_EXPR_NEST_MAX 14 /* user */ 18090075Sobrien#define _SC_LINE_MAX 15 /* user */ 18190075Sobrien#define _SC_RE_DUP_MAX 16 /* user */ 18290075Sobrien#define _SC_2_VERSION 17 /* user */ 18390075Sobrien#define _SC_2_C_BIND 18 /* user */ 18490075Sobrien#define _SC_2_C_DEV 19 /* user */ 18590075Sobrien#define _SC_2_CHAR_TERM 20 /* user */ 18690075Sobrien#define _SC_2_FORT_DEV 21 /* user */ 18790075Sobrien#define _SC_2_FORT_RUN 22 /* user */ 18890075Sobrien#define _SC_2_LOCALEDEF 23 /* user */ 18990075Sobrien#define _SC_2_SW_DEV 24 /* user */ 19090075Sobrien#define _SC_2_UPE 25 /* user */ 191132718Skan#define _SC_STREAM_MAX 26 /* user */ 19290075Sobrien#define _SC_TZNAME_MAX 27 /* user */ 19390075Sobrien 19490075Sobrien#if __POSIX_VISIBLE >= 199309 19590075Sobrien#define _SC_ASYNCHRONOUS_IO 28 19690075Sobrien#define _SC_MAPPED_FILES 29 19790075Sobrien#define _SC_MEMLOCK 30 19890075Sobrien#define _SC_MEMLOCK_RANGE 31 19990075Sobrien#define _SC_MEMORY_PROTECTION 32 20090075Sobrien#define _SC_MESSAGE_PASSING 33 20190075Sobrien#define _SC_PRIORITIZED_IO 34 20290075Sobrien#define _SC_PRIORITY_SCHEDULING 35 203132718Skan#define _SC_REALTIME_SIGNALS 36 204132718Skan#define _SC_SEMAPHORES 37 205132718Skan#define _SC_FSYNC 38 206132718Skan#define _SC_SHARED_MEMORY_OBJECTS 39 20790075Sobrien#define _SC_SYNCHRONIZED_IO 40 20890075Sobrien#define _SC_TIMERS 41 20990075Sobrien#define _SC_AIO_LISTIO_MAX 42 210169689Skan#define _SC_AIO_MAX 43 211169689Skan#define _SC_AIO_PRIO_DELTA_MAX 44 21290075Sobrien#define _SC_DELAYTIMER_MAX 45 21390075Sobrien#define _SC_MQ_OPEN_MAX 46 21490075Sobrien#define _SC_PAGESIZE 47 21590075Sobrien#define _SC_RTSIG_MAX 48 21690075Sobrien#define _SC_SEM_NSEMS_MAX 49 21790075Sobrien#define _SC_SEM_VALUE_MAX 50 218169689Skan#define _SC_SIGQUEUE_MAX 51 219169689Skan#define _SC_TIMER_MAX 52 220132718Skan#endif 221169689Skan 222146895Skan#if __POSIX_VISIBLE >= 200112 223169689Skan#define _SC_2_PBS 59 /* user */ 224169689Skan#define _SC_2_PBS_ACCOUNTING 60 /* user */ 225146895Skan#define _SC_2_PBS_CHECKPOINT 61 /* user */ 226117395Skan#define _SC_2_PBS_LOCATE 62 /* user */ 227117395Skan#define _SC_2_PBS_MESSAGE 63 /* user */ 228117395Skan#define _SC_2_PBS_TRACK 64 /* user */ 229117395Skan#define _SC_ADVISORY_INFO 65 230117395Skan#define _SC_BARRIERS 66 /* user */ 231117395Skan#define _SC_CLOCK_SELECTION 67 232117395Skan#define _SC_CPUTIME 68 233117395Skan#define _SC_FILE_LOCKING 69 23490075Sobrien#define _SC_GETGR_R_SIZE_MAX 70 /* user */ 23590075Sobrien#define _SC_GETPW_R_SIZE_MAX 71 /* user */ 23690075Sobrien#define _SC_HOST_NAME_MAX 72 23790075Sobrien#define _SC_LOGIN_NAME_MAX 73 238169689Skan#define _SC_MONOTONIC_CLOCK 74 239169689Skan#define _SC_MQ_PRIO_MAX 75 240169689Skan#define _SC_READER_WRITER_LOCKS 76 /* user */ 241169689Skan#define _SC_REGEXP 77 /* user */ 242169689Skan#define _SC_SHELL 78 /* user */ 24390075Sobrien#define _SC_SPAWN 79 /* user */ 244132718Skan#define _SC_SPIN_LOCKS 80 /* user */ 245132718Skan#define _SC_SPORADIC_SERVER 81 246132718Skan#define _SC_THREAD_ATTR_STACKADDR 82 /* user */ 247132718Skan#define _SC_THREAD_ATTR_STACKSIZE 83 /* user */ 248169689Skan#define _SC_THREAD_CPUTIME 84 /* user */ 249169689Skan#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */ 250169689Skan#define _SC_THREAD_KEYS_MAX 86 /* user */ 251169689Skan#define _SC_THREAD_PRIO_INHERIT 87 /* user */ 252169689Skan#define _SC_THREAD_PRIO_PROTECT 88 /* user */ 253169689Skan#define _SC_THREAD_PRIORITY_SCHEDULING 89 /* user */ 254169689Skan#define _SC_THREAD_PROCESS_SHARED 90 /* user */ 255169689Skan#define _SC_THREAD_SAFE_FUNCTIONS 91 /* user */ 256169689Skan#define _SC_THREAD_SPORADIC_SERVER 92 /* user */ 257169689Skan#define _SC_THREAD_STACK_MIN 93 /* user */ 258169689Skan#define _SC_THREAD_THREADS_MAX 94 /* user */ 259169689Skan#define _SC_TIMEOUTS 95 /* user */ 260117395Skan#define _SC_THREADS 96 /* user */ 261117395Skan#define _SC_TRACE 97 /* user */ 262117395Skan#define _SC_TRACE_EVENT_FILTER 98 /* user */ 263117395Skan#define _SC_TRACE_INHERIT 99 /* user */ 264117395Skan#define _SC_TRACE_LOG 100 /* user */ 265117395Skan#define _SC_TTY_NAME_MAX 101 /* user */ 266117395Skan#define _SC_TYPED_MEMORY_OBJECTS 102 267117395Skan#define _SC_V6_ILP32_OFF32 103 /* user */ 268117395Skan#define _SC_V6_ILP32_OFFBIG 104 /* user */ 269117395Skan#define _SC_V6_LP64_OFF64 105 /* user */ 270169689Skan#define _SC_V6_LPBIG_OFFBIG 106 /* user */ 271169689Skan#define _SC_IPV6 118 272117395Skan#define _SC_RAW_SOCKETS 119 273169689Skan#define _SC_SYMLOOP_MAX 120 274169689Skan#endif 275169689Skan 276169689Skan#if __XSI_VISIBLE 277169689Skan#define _SC_ATEXIT_MAX 107 /* user */ 278169689Skan#define _SC_IOV_MAX 56 279169689Skan#define _SC_PAGE_SIZE _SC_PAGESIZE 280169689Skan#define _SC_XOPEN_CRYPT 108 /* user */ 281169689Skan#define _SC_XOPEN_ENH_I18N 109 /* user */ 282169689Skan#define _SC_XOPEN_LEGACY 110 /* user */ 283169689Skan#define _SC_XOPEN_REALTIME 111 284169689Skan#define _SC_XOPEN_REALTIME_THREADS 112 285169689Skan#define _SC_XOPEN_SHM 113 286169689Skan#define _SC_XOPEN_STREAMS 114 287169689Skan#define _SC_XOPEN_UNIX 115 288169689Skan#define _SC_XOPEN_VERSION 116 289169689Skan#define _SC_XOPEN_XCU_VERSION 117 /* user */ 290169689Skan#endif 291169689Skan 292169689Skan#if __BSD_VISIBLE 293169689Skan#define _SC_NPROCESSORS_CONF 57 294169689Skan#define _SC_NPROCESSORS_ONLN 58 295169689Skan#endif 296169689Skan 297169689Skan/* Extensions found in Solaris and Linux. */ 298169689Skan#define _SC_PHYS_PAGES 121 299169689Skan 300169689Skan/* Keys for the confstr(3) function. */ 301169689Skan#if __POSIX_VISIBLE >= 199209 302169689Skan#define _CS_PATH 1 /* default value of PATH */ 303169689Skan#endif 304169689Skan 305169689Skan#if __POSIX_VISIBLE >= 200112 306169689Skan#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2 307169689Skan#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3 308169689Skan#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4 309169689Skan#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5 310169689Skan#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6 311169689Skan#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7 312169689Skan#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8 313169689Skan#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9 314169689Skan#define _CS_POSIX_V6_LP64_OFF64_LIBS 10 315169689Skan#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11 316169689Skan#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12 317169689Skan#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13 318169689Skan#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14 319169689Skan#endif 320169689Skan 321169689Skan__BEGIN_DECLS 322169689Skan/* 1003.1-1990 */ 323169689Skanvoid _exit(int) __dead2; 324169689Skanint access(const char *, int); 325169689Skanunsigned int alarm(unsigned int); 326169689Skanint chdir(const char *); 327169689Skanint chown(const char *, uid_t, gid_t); 328169689Skanint close(int); 329169689Skanint dup(int); 330169689Skanint dup2(int, int); 331169689Skanint eaccess(const char *, int); 332169689Skanint execl(const char *, const char *, ...); 333169689Skanint execle(const char *, const char *, ...); 334169689Skanint execlp(const char *, const char *, ...); 335169689Skanint execv(const char *, char * const *); 336169689Skanint execve(const char *, char * const *, char * const *); 337169689Skanint execvp(const char *, char * const *); 338169689Skanpid_t fork(void); 339169689Skanlong fpathconf(int, int); 340169689Skanchar *getcwd(char *, size_t); 341169689Skangid_t getegid(void); 342169689Skanuid_t geteuid(void); 343169689Skangid_t getgid(void); 344169689Skanint getgroups(int, gid_t []); 345169689Skanchar *getlogin(void); 346169689Skanpid_t getpgrp(void); 347169689Skanpid_t getpid(void); 348169689Skanpid_t getppid(void); 349169689Skanuid_t getuid(void); 350169689Skanint isatty(int); 351169689Skanint link(const char *, const char *); 352169689Skan#ifndef _LSEEK_DECLARED 353169689Skan#define _LSEEK_DECLARED 354169689Skanoff_t lseek(int, off_t, int); 355169689Skan#endif 356169689Skanlong pathconf(const char *, int); 357169689Skanint pause(void); 358169689Skanint pipe(int *); 359169689Skanssize_t read(int, void *, size_t); 360169689Skanint rmdir(const char *); 361169689Skanint setgid(gid_t); 362169689Skanint setpgid(pid_t, pid_t); 363169689Skanvoid setproctitle(const char *_fmt, ...) __printf0like(1, 2); 364169689Skanpid_t setsid(void); 365169689Skanint setuid(uid_t); 366169689Skanunsigned int sleep(unsigned int); 367169689Skanlong sysconf(int); 368169689Skanpid_t tcgetpgrp(int); 369169689Skanint tcsetpgrp(int, pid_t); 370169689Skanchar *ttyname(int); 371169689Skanint ttyname_r(int, char *, size_t); 372169689Skanint unlink(const char *); 373169689Skanssize_t write(int, const void *, size_t); 374169689Skan 375169689Skan/* 1003.2-1992 */ 376169689Skan#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE 377169689Skansize_t confstr(int, char *, size_t); 378169689Skan#ifndef _GETOPT_DECLARED 379169689Skan#define _GETOPT_DECLARED 380169689Skanint getopt(int, char * const [], const char *); 381169689Skan 382169689Skanextern char *optarg; /* getopt(3) external variables */ 383169689Skanextern int optind, opterr, optopt; 384169689Skan#endif /* _GETOPT_DECLARED */ 385169689Skan#endif 386169689Skan 387169689Skan/* ISO/IEC 9945-1: 1996 */ 388169689Skan#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE 389169689Skanint fsync(int); 390169689Skan 391169689Skan/* 392169689Skan * ftruncate() was in the POSIX Realtime Extension (it's used for shared 393169689Skan * memory), but truncate() was not. 394169689Skan */ 395169689Skan#ifndef _FTRUNCATE_DECLARED 396169689Skan#define _FTRUNCATE_DECLARED 397169689Skanint ftruncate(int, off_t); 398169689Skan#endif 399169689Skan#endif 400169689Skan 401169689Skan#if __POSIX_VISIBLE >= 199506 402169689Skanint getlogin_r(char *, int); 403169689Skan#endif 404169689Skan 405169689Skan/* 1003.1-2001 */ 406169689Skan#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE 407169689Skanint fchown(int, uid_t, gid_t); 408169689Skanssize_t readlink(const char * __restrict, char * __restrict, size_t); 409169689Skan#endif 410169689Skan#if __POSIX_VISIBLE >= 200112 411169689Skanint gethostname(char *, size_t); 412169689Skanint setegid(gid_t); 413169689Skanint seteuid(uid_t); 414169689Skan#endif 415169689Skan 416169689Skan/* 417169689Skan * symlink() was originally in POSIX.1a, which was withdrawn after 418169689Skan * being overtaken by events (1003.1-2001). It was in XPG4.2, and of 419169689Skan * course has been in BSD since 4.2. 420169689Skan */ 421169689Skan#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE 422169689Skanint symlink(const char * __restrict, const char * __restrict); 423169689Skan#endif 424169689Skan 425169689Skan/* X/Open System Interfaces */ 426169689Skan#if __XSI_VISIBLE 427169689Skanchar *crypt(const char *, const char *); 428169689Skan/* char *ctermid(char *); */ /* XXX ??? */ 429169689Skanint encrypt(char *, int); 430169689Skanint fchdir(int); 431169689Skanlong gethostid(void); 432169689Skanint getpgid(pid_t _pid); 433169689Skanint getsid(pid_t _pid); 434169689Skanchar *getwd(char *); /* LEGACY: obsoleted by getcwd() */ 435169689Skanint lchown(const char *, uid_t, gid_t); 436169689Skanint lockf(int, int, off_t); 437169689Skanint nice(int); 438169689Skanssize_t pread(int, void *, size_t, off_t); 439169689Skanssize_t pwrite(int, const void *, size_t, off_t); 440169689Skanint setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */ 441169689Skanint setregid(gid_t, gid_t); 442169689Skanint setreuid(uid_t, uid_t); 443169689Skan 444169689Skan#ifndef _SWAB_DECLARED 445169689Skan#define _SWAB_DECLARED 446169689Skanvoid swab(const void * __restrict, void * __restrict, ssize_t); 447169689Skan#endif /* _SWAB_DECLARED */ 448169689Skan 449169689Skanvoid sync(void); 450169689Skanuseconds_t ualarm(useconds_t, useconds_t); 451169689Skanint usleep(useconds_t); 452169689Skanpid_t vfork(void); 453169689Skan 454169689Skan/* See comment at ftruncate() above. */ 455169689Skan#ifndef _TRUNCATE_DECLARED 456169689Skan#define _TRUNCATE_DECLARED 457169689Skanint truncate(const char *, off_t); 458169689Skan#endif 459169689Skan#endif /* __XSI_VISIBLE */ 460169689Skan 461169689Skan#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE 462169689Skanint brk(const void *); 463169689Skanint chroot(const char *); 464169689Skanint getdtablesize(void); 465169689Skanint getpagesize(void) __pure2; 466169689Skanchar *getpass(const char *); 467169689Skanvoid *sbrk(intptr_t); 468169689Skan#endif 469169689Skan 470169689Skan#if __BSD_VISIBLE 471169689Skanstruct timeval; /* select(2) */ 472169689Skanint acct(const char *); 473169689Skanint async_daemon(void); 474169689Skanint check_utility_compat(const char *); 475169689Skanconst char * 476169689Skan crypt_get_format(void); 477169689Skanint crypt_set_format(const char *); 478169689Skanint des_cipher(const char *, char *, long, int); 479169689Skanint des_setkey(const char *key); 480169689Skanvoid endusershell(void); 481169689Skanint exect(const char *, char * const *, char * const *); 482169689Skanint execvP(const char *, const char *, char * const *); 483169689Skanint feature_present(const char *); 484169689Skanchar *fflagstostr(u_long); 485169689Skanint getdomainname(char *, int); 486169689Skanint getgrouplist(const char *, gid_t, gid_t *, int *); 487169689Skanmode_t getmode(const void *, mode_t); 488169689Skanint getosreldate(void); 489169689Skanint getpeereid(int, uid_t *, gid_t *); 490169689Skanint getresgid(gid_t *, gid_t *, gid_t *); 491169689Skanint getresuid(uid_t *, uid_t *, uid_t *); 492169689Skanchar *getusershell(void); 493169689Skanint initgroups(const char *, gid_t); 494169689Skanint iruserok(unsigned long, int, const char *, const char *); 495169689Skanint iruserok_sa(const void *, int, int, const char *, const char *); 496169689Skanint issetugid(void); 497169689Skanchar *mkdtemp(char *); 498169689Skan#ifndef _MKNOD_DECLARED 499169689Skanint mknod(const char *, mode_t, dev_t); 500169689Skan#define _MKNOD_DECLARED 501169689Skan#endif 502169689Skan#ifndef _MKSTEMP_DECLARED 503169689Skanint mkstemp(char *); 504169689Skan#define _MKSTEMP_DECLARED 505169689Skan#endif 506169689Skanint mkstemps(char *, int); 507169689Skan#ifndef _MKTEMP_DECLARED 508169689Skanchar *mktemp(char *); 509169689Skan#define _MKTEMP_DECLARED 510169689Skan#endif 511169689Skanint nfssvc(int, void *); 512169689Skanint profil(char *, size_t, vm_offset_t, int); 513169689Skanint rcmd(char **, int, const char *, const char *, const char *, int *); 514169689Skanint rcmd_af(char **, int, const char *, 515169689Skan const char *, const char *, int *, int); 516169689Skanint rcmdsh(char **, int, const char *, 517169689Skan const char *, const char *, const char *); 518169689Skanchar *re_comp(const char *); 519169689Skanint re_exec(const char *); 520169689Skanint reboot(int); 521169689Skanint revoke(const char *); 522169689Skanpid_t rfork(int); 523169689Skanpid_t rfork_thread(int, void *, int (*)(void *), void *); 524169689Skanint rresvport(int *); 525169689Skanint rresvport_af(int *, int); 526169689Skanint ruserok(const char *, int, const char *, const char *); 527169689Skan#if __BSD_VISIBLE 528169689Skan#ifndef _SELECT_DECLARED 529169689Skan#define _SELECT_DECLARED 530169689Skanint select(int, fd_set *, fd_set *, fd_set *, struct timeval *); 531169689Skan#endif 532169689Skan#endif 533169689Skanint setdomainname(const char *, int); 534169689Skanint setgroups(int, const gid_t *); 535169689Skanvoid sethostid(long); 536169689Skanint sethostname(const char *, int); 537169689Skan#ifndef _SETKEY_DECLARED 538169689Skanint setkey(const char *); 539169689Skan#define _SETKEY_DECLARED 540169689Skan#endif 541169689Skanint setlogin(const char *); 542169689Skanvoid *setmode(const char *); 543169689Skanint setresgid(gid_t, gid_t, gid_t); 544169689Skanint setresuid(uid_t, uid_t, uid_t); 545169689Skanint setrgid(gid_t); 546169689Skanint setruid(uid_t); 547169689Skanvoid setusershell(void); 548169689Skanint strtofflags(char **, u_long *, u_long *); 549169689Skanint swapon(const char *); 550169689Skanint swapoff(const char *); 551169689Skanint syscall(int, ...); 552169689Skanoff_t __syscall(quad_t, ...); 553169689Skanint ttyslot(void); 554169689Skanint undelete(const char *); 555169689Skanint unwhiteout(const char *); 556169689Skanvoid *valloc(size_t); /* obsoleted by malloc() */ 557169689Skan 558169689Skan#ifndef _OPTRESET_DECLARED 559169689Skan#define _OPTRESET_DECLARED 560169689Skanextern int optreset; /* getopt(3) external variable */ 561169689Skan#endif 562169689Skan#endif /* __BSD_VISIBLE */ 563169689Skan 564169689Skan#if __BSD_VISIBLE 565169689Skanint faccessat(int, const char *, int, int); 566169689Skanint fchmodat(int, const char *, mode_t, int); 567169689Skanint fchownat(int, const char *, uid_t, gid_t, int); 568169689Skanint fexecve(int, char *const [], char *const []); 569169689Skanint linkat(int, const char *, int, const char *, int); 570169689Skanssize_t readlinkat(int, const char * __restrict, char * __restrict, size_t); 571169689Skanint symlinkat(const char *, int, const char *); 572169689Skanint unlinkat(int, const char *, int); 573169689Skan#endif /* __BSD_VISIBLE */ 574169689Skan__END_DECLS 575169689Skan 576132718Skan#endif /* !_UNISTD_H_ */ 577169689Skan