Home | History | Annotate | Download | only in netbsd
      1 # Copyright 2017 syzkaller project authors. All rights reserved.
      2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
      3 
      4 include <sys/types.h>
      5 include <sys/stat.h>
      6 include <fcntl.h>
      7 include <unistd.h>
      8 
      9 resource fd[int32]: 0xffffffffffffffff, AT_FDCWD
     10 resource fd_dir[fd]
     11 
     12 resource pid[int32]: 0, 0xffffffffffffffff
     13 resource uid[int32]: 0, 0xffffffffffffffff
     14 resource gid[int32]: 0, 0xffffffffffffffff
     15 
     16 open(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
     17 # Just so that we have something that creates fd_dir resources.
     18 open$dir(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd_dir
     19 openat(fd fd_dir[opt], file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
     20 close(fd fd)
     21 read(fd fd, buf buffer[out], count len[buf])
     22 readv(fd fd, vec ptr[in, array[iovec_out]], vlen len[vec])
     23 preadv(fd fd, vec ptr[in, array[iovec_out]], vlen len[vec], off fileoff)
     24 write(fd fd, buf buffer[in], count len[buf])
     25 writev(fd fd, vec ptr[in, array[iovec_in]], vlen len[vec])
     26 pwritev(fd fd, vec ptr[in, array[iovec_in]], vlen len[vec], off fileoff)
     27 lseek(fd fd, offset fileoff, whence flags[seek_whence])
     28 dup(oldfd fd) fd
     29 dup2(oldfd fd, newfd fd) fd
     30 pipe2(pipefd ptr[out, pipefd], flags flags[pipe_flags])
     31 
     32 pipefd {
     33 	rfd	fd
     34 	wfd	fd
     35 }
     36 
     37 iovec_in {
     38 	addr	buffer[in]
     39 	len	len[addr, intptr]
     40 }
     41 
     42 iovec_out {
     43 	addr	buffer[out]
     44 	len	len[addr, intptr]
     45 }
     46 
     47 stat {
     48 	dev	int64
     49 	ino	int64
     50 	mode	int32
     51 	nlink	int32
     52 	rdev	int64
     53 	size	int64
     54 	blksize	int32
     55 	blocks	int64
     56 	atime	int64
     57 	ansec	int64
     58 	mtime	int64
     59 	mnsec	int64
     60 	ctime	int64
     61 	cnsec	int64
     62 	pad1	int32
     63 	pad2	int32
     64 }
     65 
     66 open_flags = O_RDONLY, O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_TRUNC, O_EXCL, O_SHLOCK, O_EXLOCK, O_NOFOLLOW, O_CLOEXEC, O_NOSIGPIPE, O_DSYNC, O_SYNC, O_RSYNC, O_ALT_IO, O_NOCTTY, O_DIRECT, O_DIRECTORY, O_ASYNC
     67 open_mode = S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH
     68 seek_whence = SEEK_SET, SEEK_CUR, SEEK_END
     69 pipe_flags = O_NONBLOCK, O_CLOEXEC, O_NOSIGPIPE
     70