# syscall.conf -- system call prototypes
# See ltrace.conf(5) for description of syntax of this file.

# Special value used to indicate the *at functions should use the
# current working directory.
typedef at_dirfd_t = enum[int](AT_FDCWD=-100);

addr brk(addr);
int close(int);
int execve(string,addr,addr);
void exit(int);
void exit_group(int);
int fork();
int getcwd(+string2,ulong);
int getpid();

# XXX the last argument should be off_t
addr mmap(addr,ulong,int,int,int,long);

int munmap(addr,ulong);
int open(string, hex(uint), oct(uint));
int personality(uint);
long read(int,+string0,ulong);
int stat(string,addr);
octal umask(octal);
int uname(addr);
long write(int,string3,ulong);
int sync();
int setxattr(string,string,addr,uint,int);
int lsetxattr(string,string,addr,uint,int);
int fsetxattr(int,string,addr,uint,int);
int getxattr(string,string,addr,uint);
int lgetxattr(string,string,addr,uint);
int fgetxattr(int,string,addr,uint);
int listxattr(string,addr,uint);
int llistxattr(string,addr,uint);
int flistxattr(int,addr,uint);
int removexattr(string,string);
int lremovexattr(string,string);
int fremovexattr(int,string);
int chdir(string);
int fchdir(int);
int chmod(string,octal);
int fchmod(int,octal);
int chown(string,int,int);
int fchown(int,int,int);
int lchown(string,int,int);
int chroot(string);
int dup(int);
int dup2(int,int);
int fdatasync(int);
int fsync(int);
int getpriority(int,int);
int setpriority(int,int,int);
int getrlimit(int,addr);
int setrlimit(int,addr);
int gettimeofday(addr,addr);
int settimeofday(addr,addr);
int setfsgid(int);
int setfsuid(int);
int getuid();
int setuid(int);
int getgid();
int setgid(int);
int getsid(int);
int setsid(int);
int setreuid(int,int);
int setregid(int,int);
int geteuid();
int getegid();
int setpgid(int,int);
int getresuid(addr,addr,addr);
int setresuid(int,int,int);
int getresgid(addr,addr,addr);
int setresgid(int,int,int);
int kill(int,int);
int link(string,string);
int madvise(addr,ulong,int);
int mkdir(string,octal);
int mknod(string,octal,int);
int msync(addr,ulong,int);
int nice(int);
int poll(addr,uint,int);
int readdir(uint,addr,uint);
int readlink(string,string,ulong);
int reboot(int,int,int,addr);
int rename(string,string);
int rmdir(string);
int sigaltstack(addr,addr);
int statfs(string,addr);
int fstatfs(int,addr);
int fstat(int,addr);
int lstat(string,addr);
int stime(addr);
int symlink(string, string);
int sysinfo(addr);
int syslog(int,string,int);
int truncate(string,long);
int ftruncate(int,long);
int mount(string,string,string,ulong,addr);
int umount(string);
int umount2(string,int);
int unlink(string);
int utime(string,addr);
long lseek(int,long,int);
addr signal(int,addr);
int sigaction(int,addr,addr);
int pause();
int sigpending(addr);
int sigprocmask(int,addr,addr);
int sigqueue(int,int,addr);
int sigsuspend(addr);
int wait(addr);
int waitpid(int,addr,int);
ulong readv(int,addr,int);
ulong writev(int,addr,int);
int mprotect(addr,int,int);
int access(string,octal);
int getdents(uint, void *, uint);

int openat(at_dirfd_t, string, hex(uint), oct(uint));
int mknodat(at_dirfd_t, string, oct(uint), ushort)
int mkdirat(at_dirfd_t, string, oct(uint));
int unlinkat(at_dirfd_t, string, hex(uint));
int symlinkat(string, at_dirfd_t, string);
int linkat(at_dirfd_t, string, at_dirfd_t, string, hex(uint));
int renameat(at_dirfd_t, string, at_dirfd_t, string);
int faccessat(at_dirfd_t, string, oct(uint), hex(uint));
int fchmodat(at_dirfd_t, string, oct(uint), hex(uint));
int fchownat(at_dirfd_t, string, int, int, hex(uint));
int readlinkat(at_dirfd_t, string, +string[arg4], ulong);
int fstatat(at_dirfd_t, string, addr, hex(uint));
int utimensat(at_dirfd_t, string, addr, hex(uint));
int futimens(int, addr);
int futimesat(at_dirfd_t, string, addr);
addr shmat(int, addr, hex(uint));
int shmdt(addr);

typedef fid_type = enum(FILEID_ROOT=0, FILEID_INO32_GEN=1, FILEID_INO32_GEN_PARENT=2, FILEID_BTRFS_WITHOUT_PARENT=0x4d, FILEID_BTRFS_WITH_PARENT=0x4e, FILEID_BTRFS_WITH_PARENT_ROOT=0x4f, FILEID_UDF_WITHOUT_PARENT=0x51, FILEID_UDF_WITH_PARENT=0x52, FILEID_NILFS_WITHOUT_PARENT=0x61, FILEID_NILFS_WITH_PARENT=0x62);
typedef file_handle = struct(uint, fid_type, array(hex(char), elt1)*);
int name_to_handle_at(at_dirfd_t, string, file_handle, int*, hex(uint));
int open_by_handle_at(at_dirfd_t, file_handle, hex(uint));

int newfstatat(at_dirfd_t, string, addr, hex(uint));
int creat(string, oct(int));
int ustat(ushort, addr);
