Adding stat(2) and statfs(2) related syscalls (#1855)

* sys/netbsd: adding filesystem and communication syscalls

* sys/netbsd: add fix for struct sockaddr_storage and profil(2)

* sys/netbsd: add common ioctl(2) commands

* sys/netbsd: resolving conflicts

* sys/netbsd: adding stat() and statfs() related syscalls

* sys/netbsd: adding missing flags for getfsstat(2)

Co-authored-by: Siddharth M <siddharth.muralee@gmail.com>
This commit is contained in:
Ayushi Sharma 2020-06-27 01:56:51 +05:30 committed by GitHub
parent 4b0871d90d
commit ffec44b5d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 95 additions and 2 deletions

View File

@ -2,7 +2,11 @@
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <sys/types.h>
include <sys/fstypes.h>
include <sys/mount.h>
include <sys/param.h>
include <sys/stat.h>
include <sys/ucred.h>
include <fcntl.h>
include <unistd.h>
@ -36,8 +40,11 @@ lseek(fd fd, pad const[0], offset fileoff, whence flags[seek_whence])
compat_43_olseek(fd fd, offset fileoff[int64], whence flags[seek_whence])
dup(oldfd fd) fd
dup2(oldfd fd, newfd fd) fd
dup3(oldfd fd, newfd fd, flags flags[dup_flags]) fd
pipe2(pipefd ptr[out, pipefd], flags flags[pipe_flags])
compat_20_getfsstat(buf ptr[out, statfs12], size intptr, f flags[getfsstat_flags])
pipefd {
rfd fd
wfd fd
@ -74,6 +81,26 @@ stat {
spare2 int32
}
stat12 {
dev int32
ino int32
mode int16
nlink int16
uid uid
gid gid
rdev int32
atim timespec50
mtim timespec50
ctim timespec50
size int32
blocks int64
blksize int32
flags int32
gen int32
lspare int32
qspare array[int64, 2]
}
stat43 {
dev int16
ino int32
@ -92,7 +119,37 @@ stat43 {
gen int32
}
define MFSNAMELEN 16
define MNAMELEN 90
statfs12 {
type int16
oflags int16
bsize intptr
iosize intptr
blocks intptr
bfree intptr
bavail intptr
files intptr
ffree intptr
fsid fsid_t
owner uid
flags flags[statfs_flags, intptr]
swrites intptr
aswrites intptr
spare array[intptr, 1]
fstype array[int8, MFSNAMELEN]
mnton array[int8, MNAMELEN]
mntfrom array[int8, MNAMELEN]
}
fsid_t {
val array[int32, 2]
}
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
open_mode = S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH
seek_whence = SEEK_SET, SEEK_CUR, SEEK_END
pipe_flags = O_NONBLOCK, O_CLOEXEC, O_NOSIGPIPE
statfs_flags = MNT_RDONLY, MNT_NOEXEC, MNT_NOSUID, MNT_NODEV, MNT_SYNCHRONOUS, MNT_ASYNC, MNT_UNION, MNT_NOCOREDUMP, MNT_SYMPERM, MNT_NODEVMTIME, MNT_SOFTDEP, MNT_LOCAL, MNT_QUOTA, MNT_ROOTFS, MNT_EXRDONLY, MNT_EXPORTED, MNT_DEFEXPORTED, MNT_EXPORTANON, MNT_EXKERB, MNT_EXNORESPORT, MNT_EXPUBLIC
getfsstat_flags = MNT_NOWAIT, MNT_WAIT, MNT_LAZY

View File

@ -1,5 +1,31 @@
# AUTOGENERATED FILE
AT_FDCWD = 18446744073709551516
MFSNAMELEN = 16
MNAMELEN = 90
MNT_ASYNC = 64
MNT_DEFEXPORTED = 512
MNT_EXKERB = 2048
MNT_EXNORESPORT = 134217728
MNT_EXPORTANON = 1024
MNT_EXPORTED = 256
MNT_EXPUBLIC = 268435456
MNT_EXRDONLY = 128
MNT_LAZY = 3
MNT_LOCAL = 4096
MNT_NOCOREDUMP = 32768
MNT_NODEV = 16
MNT_NODEVMTIME = 1073741824
MNT_NOEXEC = 4
MNT_NOSUID = 8
MNT_NOWAIT = 2
MNT_QUOTA = 8192
MNT_RDONLY = 1
MNT_ROOTFS = 16384
MNT_SOFTDEP = 2147483648
MNT_SYMPERM = 536870912
MNT_SYNCHRONOUS = 2
MNT_UNION = 32
MNT_WAIT = 1
O_ALT_IO = 262144
O_APPEND = 8
O_ASYNC = 64
@ -25,10 +51,12 @@ SEEK_CUR = 1
SEEK_END = 2
SEEK_SET = 0
SYS_close = 6
SYS_compat_20_getfsstat = 18
SYS_compat_43_ocreat = 8
SYS_compat_43_olseek = 19
SYS_dup = 41
SYS_dup2 = 90
SYS_dup3 = 454
SYS_lseek = 199
SYS_open = 5
SYS_openat = 468

View File

@ -25,12 +25,17 @@ syz_execute_func(text ptr[in, text[target]])
pipe(pipefd ptr[out, pipefd])
compat_12_stat12(file ptr[in, filename], ub ptr[out, stat12])
compat_43_stat43(file ptr[in, filename], ua ptr[out, stat43])
__stat50(file ptr[in, filename], ua ptr[out, stat])
compat_12_lstat12(file ptr[in, filename], ub ptr[out, stat12])
compat_43_lstat43(file ptr[in, filename], ua ptr[out, stat43])
__lstat50(file ptr[in, filename], ua ptr[out, stat])
compat_12_fstat12(fd fd, sb ptr[out, stat12])
compat_43_fstat43(fd fd, sb ptr[out, stat43])
__fstat50(fd fd, sb ptr[out, stat])
compat_20_statfs(path ptr[in, filename], buf ptr[out, statfs12])
compat_20_fstatfs(fd fd, buf ptr[out, statfs12])
profil(samples buffer[inout], size len[samples], offt intptr, scale int32)
compat_12_msync(addr vma, len int32)
@ -165,7 +170,6 @@ __nanosleep50(rqtp ptr[in, timespec], rmtp ptr[out, timespec, opt])
compat_50_wait4(pid pid, status ptr[out, int32, opt], options flags[wait_options], ru ptr[out, rusage50, opt])
__wait450(pid pid, status ptr[out, int32, opt], options flags[wait_options], ru ptr[out, rusage, opt])
dup3(oldfd fd, newfd fd, flags flags[dup_flags]) fd
exit(code intptr)
ptrace(request intptr, pid pid, addr ptr[out, intptr], data intptr)
__clone(flags flags[clone_flags], sp buffer[in]) pid

View File

@ -139,7 +139,12 @@ SYS_chmod = 15
SYS_chown = 16
SYS_chroot = 61
SYS_clock_nanosleep = 477
SYS_compat_12_fstat12 = 189
SYS_compat_12_lstat12 = 190
SYS_compat_12_msync = 65
SYS_compat_12_stat12 = 188
SYS_compat_20_fstatfs = 158
SYS_compat_20_statfs = 157
SYS_compat_30_getdents = 272
SYS_compat_43_fstat43 = 62
SYS_compat_43_lstat43 = 40
@ -159,7 +164,6 @@ SYS_compat_50_select = 93
SYS_compat_50_setitimer = 83
SYS_compat_50_utimes = 138
SYS_compat_50_wait4 = 7
SYS_dup3 = 454
SYS_execve = 59
SYS_exit = 1
SYS_faccessat = 462