/* 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);
int              __setuid (uid_t);
uid_t            getuid (void);
uid_t            getuid (void);
gid_t            getgid (void);
gid_t            getgid (void);
uid_t            geteuid (void);
uid_t            geteuid (void);
gid_t            getegid (void);
gid_t            getegid (void);
uid_t            getresuid (void);
uid_t            getresuid (void);
gid_t            getresgid (void);
gid_t            getresgid (void);
pid_t            gettid (void);
int              getgroups (int, gid_t *);
int              getgroups (int, gid_t *);
pid_t            getpgid (pid_t);
pid_t            getppid (void);
pid_t            setsid (void);
int              setgid (gid_t);
int              setgid (gid_t);
int              seteuid (uid_t);
int              __setreuid (uid_t, uid_t);
int              __setreuid (uid_t, uid_t);
int              __setresuid (uid_t, uid_t, uid_t);
int              __setresuid (uid_t, uid_t, uid_t);
int              setresgid (gid_t, gid_t, gid_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              getrlimit (int resource, struct rlimit *rlp);
int              getrusage (int who, struct rusage*  r_usage);
int              setgroups (int, const gid_t *);
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              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);
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              chown (const char *, uid_t, gid_t);
int              lchown (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              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);
int              _flush_cache (char *addr, const int nbytes, const int op);
int              syscall (int number,...);
#ifdef __cplusplus
}
#endif

#endif /* _BIONIC_LINUX_UNISTD_H_ */
