/* auto-generated by gensyscalls.py, do not touch */
#ifndef _BIONIC_LINUX_UNISTD_H_

#ifdef __cplusplus
extern "C" {
#endif

void             _exit (int);
void             _exit_thread (int);
pid_t            __fork (void);
pid_t            _waitpid (pid_t, int*, int, struct rusage*);
int              __waitid (int, pid_t, struct siginfo_t*, int,void*);
pid_t            __sys_clone (int, void*, int*, void*, int*);
int              execve (const char*, char* const*, char* const*);
int              __setuid (uid_t);
uid_t            getuid (void);
gid_t            getgid (void);
uid_t            geteuid (void);
gid_t            getegid (void);
uid_t            getresuid (void);
gid_t            getresgid (void);
pid_t            gettid (void);
int              getgroups (int, gid_t *);
pid_t            getpgid (pid_t);
pid_t            getppid (void);
pid_t            setsid (void);
int              setgid (gid_t);
int              seteuid (uid_t);
int              __setreuid (uid_t, uid_t);
int              __setresuid (uid_t, uid_t, uid_t);
int              setresgid (gid_t, gid_t, gid_t);
void*            __brk (void*);
int              kill (pid_t, int);
int              tkill (pid_t tid, int sig);
int              __ptrace (int request, int pid, void* addr, void* data);
int              __set_thread_area (void*  user_desc);
int              __getpriority (int, int);
int              setpriority (int, int, int);
int              setrlimit (int resource, const struct rlimit *rlp);
int              getrlimit (int resource, struct rlimit *rlp);
int              getrusage (int who, struct rusage*  r_usage);
int              setgroups (int, const gid_t *);
pid_t            getpgrp (void);
int              setpgid (pid_t, pid_t);
pid_t            vfork (void);
int              setregid (gid_t, gid_t);
int              chroot (const char *);
int              prctl (int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5);
int              capget (cap_user_header_t header, cap_user_data_t data);
int              capset (cap_user_header_t header, const cap_user_data_t data);
int              sigaltstack (const stack_t*, stack_t*);
int              acct (const char*  filepath);
ssize_t          read (int, void*, size_t);
ssize_t          write (int, const void*, size_t);
ssize_t          pread64 (int, void *, size_t, off64_t);
ssize_t          pwrite64 (int, void *, size_t, off64_t);
int              __open (const char*, int, mode_t);
int              __openat (int, const char*, int, mode_t);
int              close (int);
int              creat (const char*, mode_t);
off_t            lseek (int, off_t, int);
int              __llseek (int, unsigned long, unsigned long, loff_t*, int);
pid_t            getpid (void);
void *           mmap (void *, size_t, int, int, int, long);
void *           __mmap2 (void*, size_t, int, int, int, long);
int              munmap (void *, size_t);
void *           mremap (void *, size_t, size_t, unsigned long);
int              msync (const void *, size_t, int);
int              mprotect (const void *, size_t, int);
int              madvise (const void *, size_t, int);
int              mlock (const void *addr, size_t len);
int              munlock (const void *addr, size_t len);
int              mincore (void*  start, size_t  length, unsigned char*  vec);
int              __ioctl (int, int, void *);
int              readv (int, const struct iovec *, int);
int              writev (int, const struct iovec *, int);
int              __fcntl (int, int, void*);
int              flock (int, int);
int              fchmod (int, mode_t);
int              dup (int);
int              pipe (int *);
int              pipe2 (int *, int);
int              dup2 (int, int);
int              select (int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
int              ftruncate (int, off_t);
int              ftruncate64 (int, off64_t);
int              getdents (unsigned int, struct dirent *, unsigned int);
int              fsync (int);
int              fdatasync (int);
int              fchown (int, uid_t, gid_t);
void             sync (void);
int              __fcntl64 (int, int, void *);
int              __fstatfs64 (int, size_t, struct statfs *);
ssize_t          sendfile (int out_fd, int in_fd, off_t *offset, size_t count);
int              fstatat (int dirfd, const char *path, struct stat *buf, int flags);
int              mkdirat (int dirfd, const char *pathname, mode_t mode);
int              fchownat (int dirfd, const char *path, uid_t owner, gid_t group, int flags);
int              fchmodat (int dirfd, const char *path, mode_t mode, int flags);
int              renameat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
int              link (const char*, const char*);
int              unlink (const char*);
int              unlinkat (int, const char *, int);
int              chdir (const char*);
int              mknod (const char*, mode_t, dev_t);
int              chmod (const char*,mode_t);
int              chown (const char *, uid_t, gid_t);
int              lchown (const char*, uid_t, gid_t);
int              mount (const char*, const char*, const char*, unsigned long, const void*);
int              umount (const char*);
int              umount2 (const char*, int);
int              fstat (int, struct stat*);
int              stat (const char *, struct stat *);
int              lstat (const char *, struct stat *);
int              mkdir (const char *, mode_t);
int              readlink (const char *, char *, size_t);
int              rmdir (const char *);
int              rename (const char *, const char *);
int              __getcwd (char * buf, size_t size);
int              access (const char *, int);
int              symlink (const char *, const char *);
int              fchdir (int);
int              truncate (const char*, off_t);
int              __statfs64 (const char *, size_t, struct statfs *);
int              pause (void);
int              gettimeofday (struct timeval*, struct timezone*);
int              settimeofday (const struct timeval*, const struct timezone*);
clock_t          times (struct tms *);
int              nanosleep (const struct timespec *, struct timespec *);
int              clock_gettime (clockid_t clk_id, struct timespec *tp);
int              clock_settime (clockid_t clk_id, const struct timespec *tp);
int              clock_getres (clockid_t clk_id, struct timespec *res);
int              clock_nanosleep (const struct timespec *req, struct timespec *rem);
int              getitimer (int, const struct itimerval *);
int              setitimer (int, const struct itimerval *, struct itimerval *);
int              __timer_create (clockid_t clockid, struct sigevent *evp, timer_t *timerid);
int              __timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*);
int              __timer_gettime (timer_t, struct itimerspec*);
int              __timer_getoverrun (timer_t);
int              __timer_delete (timer_t);
int              utimes (const char*, const struct timeval tvp[2]);
int              utimensat (int, const char *, const struct timespec times[2], int);
int              sigaction (int, const struct sigaction *, struct sigaction *);
int              sigprocmask (int, const sigset_t *, sigset_t *);
int              __sigsuspend (int unused1, int unused2, unsigned mask);
int              __rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize);
int              __rt_sigprocmask (int  how, const sigset_t *set, sigset_t *oset, size_t sigsetsize);
int              __rt_sigtimedwait (const sigset_t *set, struct siginfo_t  *info, struct timespec_t  *timeout, size_t  sigset_size);
int              sigpending (sigset_t *);
int              socket (int, int, int);
int              socketpair (int, int, int, int*);
int              bind (int, struct sockaddr *, int);
int              connect (int, struct sockaddr *, socklen_t);
int              listen (int, int);
int              accept (int, struct sockaddr *, socklen_t *);
int              getsockname (int, struct sockaddr *, socklen_t *);
int              getpeername (int, struct sockaddr *, socklen_t *);
int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
int              shutdown (int, int);
int              setsockopt (int, int, int, const void *, socklen_t);
int              getsockopt (int, int, int, void *, socklen_t *);
int              sendmsg (int, const struct msghdr *, unsigned int);
int              recvmsg (int, struct msghdr *, unsigned int);
int              socket (int, int, int);
int              bind (int, struct sockaddr *, int);
int              connect (int, struct sockaddr *, socklen_t);
int              listen (int, int);
int              accept (int, struct sockaddr *, socklen_t *);
int              getsockname (int, struct sockaddr *, socklen_t *);
int              getpeername (int, struct sockaddr *, socklen_t *);
int              socketpair (int, int, int, int*);
int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
int              shutdown (int, int);
int              setsockopt (int, int, int, const void *, socklen_t);
int              getsockopt (int, int, int, void *, socklen_t *);
int              sendmsg (int, const struct msghdr *, unsigned int);
int              recvmsg (int, struct msghdr *, unsigned int);
int              __socketcall (int, unsigned long*);
int              sched_setscheduler (pid_t pid, int policy, const struct sched_param *param);
int              sched_getscheduler (pid_t pid);
int              sched_yield (void);
int              sched_setparam (pid_t pid, const struct sched_param *param);
int              sched_getparam (pid_t pid, struct sched_param *param);
int              sched_get_priority_max (int policy);
int              sched_get_priority_min (int policy);
int              sched_rr_get_interval (pid_t pid, struct timespec *interval);
int              sched_setaffinity (pid_t pid, size_t setsize, const cpu_set_t* set);
int              __sched_getaffinity (pid_t pid, size_t setsize, cpu_set_t* set);
int              __getcpu (unsigned *cpu, unsigned *node, void *unused);
int              ioprio_set (int which, int who, int ioprio);
int              ioprio_get (int which, int who);
int              uname (struct utsname *);
pid_t            __wait4 (pid_t pid, int *status, int options, struct rusage *rusage);
mode_t           umask (mode_t);
int              __reboot (int, int, int, void *);
int              __syslog (int, char *, int);
int              init_module (void *, unsigned long, const char *);
int              delete_module (const char*, unsigned int);
int              klogctl (int, char *, int);
int              sysinfo (struct sysinfo *);
int              personality (unsigned long);
int              futex (void *, int, int, void *, void *, int);
int              epoll_create (int size);
int              epoll_ctl (int epfd, int op, int fd, struct epoll_event *event);
int              epoll_wait (int epfd, struct epoll_event *events, int max, int timeout);
int              inotify_init (void);
int              inotify_add_watch (int, const char *, unsigned int);
int              inotify_rm_watch (int, unsigned int);
int              poll (struct pollfd *, unsigned int, long);
int              eventfd (unsigned int, int);
int              __set_tls (void*);
int              cacheflush (long start, long end, long flags);
#ifdef __cplusplus
}
#endif

#endif /* _BIONIC_LINUX_UNISTD_H_ */
