aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAyushi Sharma <35501599+ais2397@users.noreply.github.com>2020-06-17 15:10:05 +0530
committerGitHub <noreply@github.com>2020-06-17 02:40:05 -0700
commitb6c46f43512613717ccfdfffd6e68ac943c0727a (patch)
tree5323da2ecf02b6ca9284a6bbb5c2b27e7b29a2f6
parentb9f3810bc5c0698096fc7a54efc13d314e0dfca0 (diff)
sys/netbsd: adding filesystem and communication syscalls (#1826)
-rw-r--r--sys/netbsd/fs.txt19
-rw-r--r--sys/netbsd/fs_amd64.const1
-rw-r--r--sys/netbsd/socket.txt18
-rw-r--r--sys/netbsd/socket_amd64.const52
-rw-r--r--sys/netbsd/sys.txt29
-rw-r--r--sys/netbsd/sys_amd64.const21
6 files changed, 125 insertions, 15 deletions
diff --git a/sys/netbsd/fs.txt b/sys/netbsd/fs.txt
index b68e04fa3..f4eb9d7b0 100644
--- a/sys/netbsd/fs.txt
+++ b/sys/netbsd/fs.txt
@@ -18,6 +18,7 @@ resource mode[int32]: 0, 0xffffffffffffffff
resource ino[int64]: 0, 0xffffffffffffffff
resource nlink[int32]: 0, 0xffffffffffffffff
+compat_43_ocreat(path ptr[in, filename], mode flags[open_mode])
open(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
# Just so that we have something that creates fd_dir resources.
open$dir(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd_dir
@@ -72,6 +73,24 @@ stat {
spare2 int32
}
+stat43 {
+ dev int16
+ ino int32
+ mode int16
+ nlink int16
+ uid int16
+ gid int16
+ rdev int16
+ size int32
+ atim timespec50
+ mtim timespec50
+ ctim timespec50
+ blksize int32
+ blocks int32
+ flags int32
+ gen int32
+}
+
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
diff --git a/sys/netbsd/fs_amd64.const b/sys/netbsd/fs_amd64.const
index 173195455..d865ad0dc 100644
--- a/sys/netbsd/fs_amd64.const
+++ b/sys/netbsd/fs_amd64.const
@@ -25,6 +25,7 @@ SEEK_CUR = 1
SEEK_END = 2
SEEK_SET = 0
SYS_close = 6
+SYS_compat_43_ocreat = 8
SYS_dup = 41
SYS_dup2 = 90
SYS_lseek = 199
diff --git a/sys/netbsd/socket.txt b/sys/netbsd/socket.txt
index d8168dc68..c2ec6e3bb 100644
--- a/sys/netbsd/socket.txt
+++ b/sys/netbsd/socket.txt
@@ -15,13 +15,16 @@ type sock_port proc[20000, 4, int16be]
# TODO: describe socketcall syscall
socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock
+compat_30_socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock
socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, sock_pair])
bind(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
connect(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
-accept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]]) sock
+accept(s sock, addr ptr[out, sockaddr_storage, opt], addrlen ptr[inout, len[addr, int32]]) sock
+compat_43_oaccept(s sock, name buffer[out], namelen ptr[inout, len[name, int32]]) sock
paccept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock
sendto(fd sock, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_storage, opt], addrlen len[addr])
-recvfrom(fd sock, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_storage, opt], addrlen len[addr])
+recvfrom(fd sock, buf buffer[out], len len[buf], f flags[recv_flags], frm ptr[in, sockaddr_storage, opt], frmlen len[frm])
+compat_43_orecvfrom(s sock, buf buffer[out], len len[buf], f flags[recv_flags], frm buffer[in], frmlen len[frm])
getsockname(fd sock, addr ptr[out, sockaddr_storage], addrlen ptr[inout, len[addr, int32]])
getpeername(fd sock, peer ptr[out, sockaddr_storage], peerlen ptr[inout, len[peer, int32]])
@@ -34,13 +37,14 @@ shutdown(fd sock, how flags[shutdown_flags])
getsockopt(fd sock, level int32, optname int32, optval buffer[out], optlen ptr[inout, len[optval, int32]])
setsockopt(fd sock, level int32, optname int32, optval buffer[in], optlen len[optval])
-socket_domain = AF_LOCAL, AF_INET, AF_INET6, AF_NS, AF_BLUETOOTH, AF_APPLETALK
+socket_domain = PF_LOCAL, PF_INET, PF_INET6, PF_NS, PF_BLUETOOTH, PF_APPLETALK, PF_CAN
socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SOCK_NONBLOCK, SOCK_CLOEXEC, SOCK_NOSIGPIPE
accept_flags = SOCK_NONBLOCK, SOCK_CLOEXEC, SOCK_NOSIGPIPE
shutdown_flags = SHUT_RD, SHUT_WR, SHUT_RDWR
send_flags = MSG_OOB, MSG_PEEK, MSG_DONTROUTE, MSG_EOR, MSG_NOSIGNAL
recv_flags = MSG_CMSG_CLOEXEC, MSG_OOB, MSG_PEEK, MSG_WAITALL
cmsg_levels = SOL_SOCKET, IPPROTO_ICMP, LINUX_SOL_IP, LINUX_SOL_TCP, LINUX_SOL_UDP, LINUX_SOL_IPV6, LINUX_SOL_IPX, LINUX_SOL_AX25
+addr_family = AF_UNSPEC, AF_LOCAL, AF_UNIX, AF_INET, AF_IMPLINK, AF_PUP, AF_CHAOS, AF_NS, AF_ISO, AF_OSI, AF_ECMA, AF_DATAKIT, AF_CCITT, AF_SNA, AF_DECnet, AF_DLI, AF_LAT, AF_HYLINK, AF_APPLETALK, AF_OROUTE, AF_LINK, AF_COIP, AF_CNT, pseudo_AF_RTIP, pseudo_AF_PIP, pseudo_AF_XTP, AF_IPX, AF_INET6, AF_ISDN, AF_E164, AF_NATM, AF_ARP, pseudo_AF_KEY, pseudo_AF_HDRCMPLT, AF_BLUETOOTH, AF_IEEE80211, AF_MPLS, AF_ROUTE, AF_CAN, AF_ETHER, AF_MAX
sock_pair {
fd0 sock
@@ -49,10 +53,10 @@ sock_pair {
# This sockaddr type corresponds to the sockaddr_storage type and is 128 bytes size.
sockaddr_storage [
- un sockaddr_un
- in sockaddr_in
- in6 sockaddr_in6
-] [varlen]
+ len int8
+ family flags[addr_family, int8]
+ data array[int8, 14]
+]
send_msghdr {
msg_name ptr[in, sockaddr_storage, opt]
diff --git a/sys/netbsd/socket_amd64.const b/sys/netbsd/socket_amd64.const
index d565dc5f9..4dd88e997 100644
--- a/sys/netbsd/socket_amd64.const
+++ b/sys/netbsd/socket_amd64.const
@@ -1,14 +1,50 @@
# AUTOGENERATED FILE
AF_APPLETALK = 16
+AF_ARP = 28
AF_BLUETOOTH = 31
+AF_CAN = 35
+AF_CCITT = 10
+AF_CHAOS = 5
+AF_CNT = 21
+AF_COIP = 20
+AF_DATAKIT = 9
+AF_DECnet = 12
+AF_DLI = 13
+AF_E164 = 26
+AF_ECMA = 8
+AF_ETHER = 36
+AF_HYLINK = 15
+AF_IEEE80211 = 32
+AF_IMPLINK = 3
AF_INET = 2
AF_INET6 = 24
+AF_IPX = 23
+AF_ISDN = 26
+AF_ISO = 7
+AF_LAT = 14
+AF_LINK = 18
AF_LOCAL = 1
+AF_MAX = 37
+AF_MPLS = 33
+AF_NATM = 27
AF_NS = 6
+AF_OROUTE = 17
+AF_OSI = 7
+AF_PUP = 4
+AF_ROUTE = 34
+AF_SNA = 11
+AF_UNIX = 1
+AF_UNSPEC = 0
IPPROTO_ICMP = 1
LINUX_AF_APPLETALK = 5
+LINUX_AF_DECnet = 12
LINUX_AF_INET = 2
LINUX_AF_INET6 = 10
+LINUX_AF_IPX = 4
+LINUX_AF_MAX = 32
+LINUX_AF_SNA = 22
+LINUX_AF_UNIX = 1
+LINUX_AF_UNSPEC = 0
LINUX_MSG_DONTROUTE = 4
LINUX_MSG_EOR = 128
LINUX_MSG_NOSIGNAL = 16384
@@ -38,6 +74,7 @@ LINUX_SO_SNDLOWAT = 19
LINUX_SO_SNDTIMEO = 21
LINUX_SO_TIMESTAMP = 29
LINUX_SO_TYPE = 3
+LINUX_pseudo_AF_KEY = 15
MSG_CMSG_CLOEXEC = 2048
MSG_DONTROUTE = 4
MSG_EOR = 8
@@ -45,6 +82,13 @@ MSG_NOSIGNAL = 1024
MSG_OOB = 1
MSG_PEEK = 2
MSG_WAITALL = 64
+PF_APPLETALK = 16
+PF_BLUETOOTH = 31
+PF_CAN = 35
+PF_INET = 2
+PF_INET6 = 24
+PF_LOCAL = 1
+PF_NS = 6
SHUT_RD = 0
SHUT_RDWR = 2
SHUT_WR = 1
@@ -79,6 +123,9 @@ SO_TIMESTAMP = 8192
SO_TYPE = 4104
SYS_accept = 30
SYS_bind = 104
+SYS_compat_30_socket = 97
+SYS_compat_43_oaccept = 99
+SYS_compat_43_orecvfrom = 125
SYS_connect = 98
SYS_getpeername = 31
SYS_getsockname = 32
@@ -93,3 +140,8 @@ SYS_setsockopt = 105
SYS_shutdown = 134
SYS_socket = 394
SYS_socketpair = 135
+pseudo_AF_HDRCMPLT = 30
+pseudo_AF_KEY = 29
+pseudo_AF_PIP = 25
+pseudo_AF_RTIP = 22
+pseudo_AF_XTP = 19
diff --git a/sys/netbsd/sys.txt b/sys/netbsd/sys.txt
index e888155c6..8434d0411 100644
--- a/sys/netbsd/sys.txt
+++ b/sys/netbsd/sys.txt
@@ -24,11 +24,20 @@ syz_execute_func(text ptr[in, text[target]])
pipe(pipefd ptr[out, pipefd])
-stat(file ptr[in, filename], statbuf ptr[out, stat])
-lstat(file ptr[in, filename], statbuf ptr[out, stat])
+compat_43_stat43(file ptr[in, filename], ua ptr[out, stat43])
+__stat50(file ptr[in, filename], ua ptr[out, stat])
+compat_43_lstat43(file ptr[in, filename], ua ptr[out, stat43])
+__lstat50(file ptr[in, filename], ua ptr[out, stat])
+compat_43_fstat43(fd fd, sb ptr[out, stat43])
+__fstat50(fd fd, sb ptr[out, stat])
+profil(samples buffer[inout], size len[samples], offt intptr, scale int32)
+
+compat_12_msync(addr vma, len int32)
+__msync13(addr vma, len int32, f flags[msync_flags])
poll(fds ptr[in, array[pollfd]], nfds len[fds], timeout int32)
-select(n len[inp], inp ptr[inout, fd_set], outp ptr[inout, fd_set], exp ptr[inout, fd_set], tvp ptr[inout, timeval])
+compat_50_select(nd len[inp], inp ptr[inout, fd_set], ou ptr[inout, fd_set], ex ptr[inout, fd_set], tv ptr[inout, timeval50])
+__select50(n len[inp], inp ptr[inout, fd_set], ou ptr[inout, fd_set], ex ptr[inout, fd_set], tv ptr[inout, timeval])
mincore(addr vma, size len[addr], vec buffer[out])
minherit(addr vma, len len[addr], inherit flags[minherit_flags])
@@ -97,8 +106,10 @@ renameat(oldfd fd_dir, old ptr[in, filename], newfd fd_dir, new ptr[in, filename
mkdir(path ptr[in, filename], mode flags[open_mode])
mkdirat(fd fd_dir, path ptr[in, filename], mode flags[open_mode])
rmdir(path ptr[in, filename])
-truncate(file ptr[in, filename], len intptr)
-ftruncate(fd fd, len intptr)
+truncate(file ptr[in, filename], pad const[0], len intptr)
+compat_43_otruncate(file ptr[in, filename], len intptr)
+ftruncate(fd fd, pad const[0], len intptr)
+compat_43_oftruncate(fd fd, len intptr)
flock(fd fd, op flags[flock_op])
fsync(fd fd)
fdatasync(fd fd)
@@ -123,6 +134,7 @@ getitimer(which flags[getitimer_which], cur ptr[out, itimerval])
setitimer(which flags[getitimer_which], new ptr[in, itimerval], old ptr[out, itimerval, opt])
wait4(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
@@ -152,6 +164,11 @@ timeval {
usec intptr
}
+timeval50 {
+ sec intptr
+ usec intptr
+}
+
itimerval {
interv timeval
value timeval
@@ -255,6 +272,7 @@ sched_param {
pollfd_events = POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL, POLLRDNORM, POLLRDBAND, POLLWRNORM, POLLWRBAND
mknod_mode = S_IFREG, S_IFCHR, S_IFBLK, S_IFIFO, S_IFSOCK, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH
+msync_flags = MS_ASYNC, MS_SYNC, MS_INVALIDATE
at_flags = AT_SYMLINK_NOFOLLOW, AT_SYMLINK_FOLLOW
access_mode = R_OK, W_OK, X_OK, F_OK
linkat_flags = AT_SYMLINK_FOLLOW
@@ -278,3 +296,4 @@ flock_type = F_RDLCK, F_WRLCK, F_UNLCK
chflags_flags = SF_APPEND, SF_IMMUTABLE, SF_ARCHIVED, UF_OPAQUE, UF_APPEND, UF_IMMUTABLE, UF_NODUMP
clone_flags = CLONE_CSIGNAL, CLONE_VM, CLONE_FS, CLONE_FILES, CLONE_SIGHAND, CLONE_PID, CLONE_PTRACE, CLONE_VFORK
sa_flags = SA_ONSTACK, SA_RESTART, SA_RESETHAND, SA_NODEFER, SA_NOCLDSTOP, SA_NOCLDWAIT, SA_SIGINFO, SA_NOKERNINFO, SA_ALLBITS
+dup_flags = O_CLOEXEC, O_NONBLOCK, O_NOSIGPIPE
diff --git a/sys/netbsd/sys_amd64.const b/sys/netbsd/sys_amd64.const
index 57b60ab8f..c71335f0a 100644
--- a/sys/netbsd/sys_amd64.const
+++ b/sys/netbsd/sys_amd64.const
@@ -48,9 +48,13 @@ MAP_INHERIT_COPY = 1
MAP_INHERIT_NONE = 2
MAP_INHERIT_SHARE = 0
MAP_INHERIT_ZERO = 4
+MS_ASYNC = 1
+MS_INVALIDATE = 2
+MS_SYNC = 4
O_ALT_IO = 262144
O_APPEND = 8
O_ASYNC = 64
+O_CLOEXEC = 4194304
O_DIRECT = 524288
O_DSYNC = 65536
O_NONBLOCK = 4
@@ -93,8 +97,13 @@ SF_APPEND = 262144
SF_ARCHIVED = 65536
SF_IMMUTABLE = 131072
SYS___clone = 287
+SYS___fstat50 = 440
SYS___getcwd = 296
SYS___getlogin = 49
+SYS___lstat50 = 441
+SYS___msync13 = 277
+SYS___select50 = 417
+SYS___stat50 = 439
SYS___vfork14 = 282
SYS_access = 33
SYS_chdir = 12
@@ -106,6 +115,14 @@ SYS_clock_getres = 429
SYS_clock_gettime = 427
SYS_clock_nanosleep = 477
SYS_clock_settime = 428
+SYS_compat_12_msync = 65
+SYS_compat_43_fstat43 = 62
+SYS_compat_43_lstat43 = 40
+SYS_compat_43_oftruncate = 130
+SYS_compat_43_otruncate = 129
+SYS_compat_43_stat43 = 38
+SYS_compat_50_select = 93
+SYS_dup3 = 454
SYS_execve = 59
SYS_exit = 1
SYS_faccessat = 462
@@ -141,7 +158,6 @@ SYS_lchmod = 274
SYS_lchown = 275
SYS_link = 9
SYS_linkat = 457
-SYS_lstat = 441
SYS_mincore = 78
SYS_minherit = 273
SYS_mkdir = 136
@@ -152,13 +168,13 @@ SYS_nanosleep = 430
SYS_pipe = 42
SYS_poll = 209
SYS_posix_spawn = 474
+SYS_profil = 44
SYS_ptrace = 26
SYS_readlink = 58
SYS_readlinkat = 469
SYS_rename = 128
SYS_renameat = 458
SYS_rmdir = 137
-SYS_select = 417
SYS_setegid = 182
SYS_seteuid = 183
SYS_setgid = 181
@@ -169,7 +185,6 @@ SYS_setregid = 127
SYS_setreuid = 126
SYS_setrlimit = 195
SYS_setuid = 23
-SYS_stat = 439
SYS_symlink = 57
SYS_symlinkat = 470
SYS_sync = 36