1313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* 2313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * Copyright (C) 2008 The Android Open Source Project 3313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * All rights reserved. 4313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * 5313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * Redistribution and use in source and binary forms, with or without 6313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * modification, are permitted provided that the following conditions 7313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * are met: 8313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * * Redistributions of source code must retain the above copyright 9313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * notice, this list of conditions and the following disclaimer. 10313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * * Redistributions in binary form must reproduce the above copyright 11313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * notice, this list of conditions and the following disclaimer in 12313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * the documentation and/or other materials provided with the 13313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * distribution. 14313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * 15313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti * SUCH DAMAGE. 27313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti */ 28313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#ifndef _UNISTD_H_ 29313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define _UNISTD_H_ 30313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 31313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <stddef.h> 32313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <sys/cdefs.h> 33313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <sys/types.h> 34313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <sys/select.h> 35313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <sys/sysconf.h> 36313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <linux/capability.h> 37313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#include <pathconf.h> 38313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 39313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti__BEGIN_DECLS 40313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 41313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* Standard file descriptor numbers. */ 42313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define STDIN_FILENO 0 43313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define STDOUT_FILENO 1 44313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define STDERR_FILENO 2 45313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 46313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* Values for whence in fseek and lseek */ 47313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define SEEK_SET 0 48313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define SEEK_CUR 1 49313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define SEEK_END 2 50313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 51313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char **environ; 52313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern __noreturn void _exit(int); 53313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 54313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t fork(void); 55313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t vfork(void); 56313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t getpid(void); 57313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t gettid(void); 58313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t getpgid(pid_t); 59313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setpgid(pid_t, pid_t); 60313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t getppid(void); 61313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t getpgrp(void); 62313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setpgrp(void); 63313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t setsid(void); 64313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 65313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execv(const char *, char * const *); 66313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execvp(const char *, char * const *); 67313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execve(const char *, char * const *, char * const *); 68313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execl(const char *, const char *, ...); 69313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execlp(const char *, const char *, ...); 70313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execle(const char *, const char *, ...); 71313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int capget(cap_user_header_t hdrp, cap_user_data_t datap); 72313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int capset(cap_user_header_t hdrp, const cap_user_data_t datap); 73313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 74313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */ 75313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int prctl(int option, ...); 76313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 77313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int nice(int); 78313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 79313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setuid(uid_t); 80313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern uid_t getuid(void); 81313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int seteuid(uid_t); 82313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern uid_t geteuid(void); 83313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setgid(gid_t); 84313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern gid_t getgid(void); 85313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setegid(gid_t); 86313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern gid_t getegid(void); 87313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getgroups(int, gid_t *); 88313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setgroups(size_t, const gid_t *); 89313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setreuid(uid_t, uid_t); 90313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setregid(gid_t, gid_t); 91313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setresuid(uid_t, uid_t, uid_t); 92313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setresgid(gid_t, gid_t, gid_t); 93313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); 94313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); 95313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int issetugid(void); 96313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char* getlogin(void); 97313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char* getusershell(void); 98313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern void setusershell(void); 99313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern void endusershell(void); 100313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 101313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 102313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 103313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* Macros for access() */ 104313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define R_OK 4 /* Read */ 105313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define W_OK 2 /* Write */ 106313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define X_OK 1 /* Execute */ 107313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define F_OK 0 /* Existence */ 108313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 109313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int access(const char *, int); 110313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int link(const char *, const char *); 111313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int unlink(const char *); 112313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int chdir(const char *); 113313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int fchdir(int); 114313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int rmdir(const char *); 115313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int pipe(int *); 116313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#ifdef _GNU_SOURCE /* GLibc compatibility */ 117313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int pipe2(int *, int); 118313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#endif 119313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int chroot(const char *); 120313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int symlink(const char *, const char *); 121313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int readlink(const char *, char *, size_t); 122313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int chown(const char *, uid_t, gid_t); 123313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int fchown(int, uid_t, gid_t); 124313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int lchown(const char *, uid_t, gid_t); 125313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int truncate(const char *, off_t); 126313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char *getcwd(char *, size_t); 127313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 128313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int sync(void); 129313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 130313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int close(int); 131313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern off_t lseek(int, off_t, int); 132313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern off64_t lseek64(int, off64_t, int); 133313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 134313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t read(int, void *, size_t); 135313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t write(int, const void *, size_t); 136313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t pread(int, void *, size_t, off_t); 137313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t pread64(int, void *, size_t, off64_t); 138313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t pwrite(int, const void *, size_t, off_t); 139313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern ssize_t pwrite64(int, const void *, size_t, off64_t); 140313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 141313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int dup(int); 142313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int dup2(int, int); 143313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int fcntl(int, int, ...); 144313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int ioctl(int, int, ...); 145313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int flock(int, int); 146313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int fsync(int); 147313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int fdatasync(int); 148313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int ftruncate(int, off_t); 149313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int ftruncate64(int, off64_t); 150313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 151313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int pause(void); 152313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern unsigned int alarm(unsigned int); 153313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern unsigned int sleep(unsigned int); 154313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int usleep(unsigned long); 155313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 156313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int gethostname(char *, size_t); 157313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 158313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getdtablesize(void); 159313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 160313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern void *__brk(void *); 161313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int brk(void *); 162313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern void *sbrk(ptrdiff_t); 163313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 164313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getopt(int, char * const *, const char *); 165313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char *optarg; 166313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int optind, opterr, optopt; 167313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 168313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int isatty(int); 169313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern char* ttyname(int); 170313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int ttyname_r(int, char*, size_t); 171313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 172313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int acct(const char* filepath); 173313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 174313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittistatic __inline__ int getpagesize(void) { 175313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti extern unsigned int __page_size; 176313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti return __page_size; 177313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti} 178313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittistatic __inline__ int __getpageshift(void) { 179313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti extern unsigned int __page_shift; 180313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti return __page_shift; 181313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti} 182313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 183313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittilong sysconf(int); 184313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 185313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int daemon(int, int); 186313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 187313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* A special syscall that is only available on the ARM, not x86 function. */ 188313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int cacheflush(long start, long end, long flags); 189313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 190313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t tcgetpgrp(int fd); 191313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int tcsetpgrp(int fd, pid_t _pid); 192313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 193313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#if 0 /* MISSING FROM BIONIC */ 194313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern pid_t getsid(pid_t); 195313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execvpe(const char *, char * const *, char * const *); 196313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int execlpe(const char *, const char *, ...); 197313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getfsuid(uid_t); 198313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setfsuid(uid_t); 199313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getlogin_r(char* name, size_t namesize); 200313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int sethostname(const char *, size_t); 201313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int getdomainname(char *, size_t); 202313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiextern int setdomainname(const char *, size_t); 203313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#endif /* MISSING */ 204313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 205313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti/* Used to retry syscalls that can return EINTR. */ 206313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#define TEMP_FAILURE_RETRY(exp) ({ \ 207313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti typeof (exp) _rc; \ 208313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti do { \ 209313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti _rc = (exp); \ 210313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti } while (_rc == -1 && errno == EINTR); \ 211313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti _rc; }) 212313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 213313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti__END_DECLS 214313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti 215313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#endif /* _UNISTD_H_ */ 216313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti