From 8df85ed9883abc2a200858f44f22c11c602d218a Mon Sep 17 00:00:00 2001 From: Ayushi Sharma <35501599+ais2397@users.noreply.github.com> Date: Thu, 30 Jul 2020 18:12:32 +0530 Subject: sys/netbsd: Adding syscalls related to mount(2),uname(2) and sockets (#1976) * sys/netbsd: Adding syscalls related to mount(2),uname(2) and sockets * sys/netbsd: Adding missing flags for fstatat(2) * sys/netbsd: reordering rlimit_type * sys/netbsd: reordering flags for stat(2) and mount(2) --- sys/netbsd/fs.txt | 11 ++++++++--- sys/netbsd/fs_amd64.const | 16 ++++++++++++++++ sys/netbsd/socket.txt | 16 +++++++++++++++- sys/netbsd/socket_amd64.const | 15 +++++++++++++++ sys/netbsd/sys.txt | 28 +++++++++++++++++++++++++--- sys/netbsd/sys_amd64.const | 7 +++++++ 6 files changed, 86 insertions(+), 7 deletions(-) (limited to 'sys/netbsd') diff --git a/sys/netbsd/fs.txt b/sys/netbsd/fs.txt index 3e0821d8a..38250e144 100644 --- a/sys/netbsd/fs.txt +++ b/sys/netbsd/fs.txt @@ -43,6 +43,10 @@ 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_40_mount(type ptr[in, string[filesystem_types]], path ptr[in, filename], flags flags[mount_flags], data buffer[in]) +__mount50(type ptr[in, string[filesystem_types]], path ptr[in, filename], flags flags[mount_flags], data buffer[in], len len[data]) +unmount(path ptr[in, filename], flags flags[mount_flags]) + compat_20_getfsstat(buf ptr[out, statfs12], size intptr, f flags[getfsstat_flags]) pipefd { @@ -134,7 +138,7 @@ statfs12 { ffree intptr fsid fsid_t owner uid - flags flags[statfs_flags, intptr] + flags flags[mount_flags, intptr] swrites intptr aswrites intptr spare array[intptr, 1] @@ -147,9 +151,10 @@ fsid_t { val array[int32, 2] } +filesystem_types = "ffs", "nfs", "mfs", "msdos", "lfs", "fdesc", "null", "overlay", "umap", "kernfs", "procfs", "afs", "cd9660", "union", "adosfs", "ext2fs", "coda", "filecore", "ntfs", "smbfs", "ptyfs", "tmpfs", "udf", "sysvbfs", "puffs", "hfs", "efs", "zfs", "nilfs", "rumpfs", "v7fs", "autofs" 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 +open_mode = S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR, S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP, S_IRWXO, S_IROTH, S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, S_ISVTX 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 +mount_flags = MNT_RDONLY, MNT_SYNCHRONOUS, MNT_NOEXEC, MNT_NOSUID, MNT_NODEV, MNT_UNION, MNT_ASYNC, MNT_NOCOREDUMP, MNT_RELATIME, MNT_IGNORE, MNT_DISCARD, MNT_EXTATTR, MNT_LOG, MNT_NOATIME, MNT_AUTOMOUNTED, MNT_SYMPERM, MNT_NODEVMTIME, MNT_SOFTDEP, MNT_EXRDONLY, MNT_EXPORTED, MNT_DEFEXPORTED, MNT_EXPORTANON, MNT_EXKERB, MNT_EXNORESPORT, MNT_EXPUBLIC, MNT_LOCAL, MNT_QUOTA, MNT_ROOTFS getfsstat_flags = MNT_NOWAIT, MNT_WAIT, MNT_LAZY diff --git a/sys/netbsd/fs_amd64.const b/sys/netbsd/fs_amd64.const index a8e73d8d8..aae6710c9 100644 --- a/sys/netbsd/fs_amd64.const +++ b/sys/netbsd/fs_amd64.const @@ -3,15 +3,21 @@ AT_FDCWD = 18446744073709551516 MFSNAMELEN = 16 MNAMELEN = 90 MNT_ASYNC = 64 +MNT_AUTOMOUNTED = 268435456 MNT_DEFEXPORTED = 512 +MNT_DISCARD = 8388608 MNT_EXKERB = 2048 MNT_EXNORESPORT = 134217728 MNT_EXPORTANON = 1024 MNT_EXPORTED = 256 MNT_EXPUBLIC = 268435456 MNT_EXRDONLY = 128 +MNT_EXTATTR = 16777216 +MNT_IGNORE = 1048576 MNT_LAZY = 3 MNT_LOCAL = 4096 +MNT_LOG = 33554432 +MNT_NOATIME = 67108864 MNT_NOCOREDUMP = 32768 MNT_NODEV = 16 MNT_NODEVMTIME = 1073741824 @@ -20,6 +26,7 @@ MNT_NOSUID = 8 MNT_NOWAIT = 2 MNT_QUOTA = 8192 MNT_RDONLY = 1 +MNT_RELATIME = 131072 MNT_ROOTFS = 16384 MNT_SOFTDEP = 2147483648 MNT_SYMPERM = 536870912 @@ -50,8 +57,10 @@ O_WRONLY = 1 SEEK_CUR = 1 SEEK_END = 2 SEEK_SET = 0 +SYS___mount50 = 410 SYS_close = 6 SYS_compat_20_getfsstat = 18 +SYS_compat_40_mount = 21 SYS_compat_43_ocreat = 8 SYS_compat_43_olseek = 19 SYS_dup = 41 @@ -67,11 +76,18 @@ SYS_pwrite = 174 SYS_pwritev = 290 SYS_read = 3 SYS_readv = 120 +SYS_unmount = 22 SYS_write = 4 SYS_writev = 121 S_IRGRP = 32 S_IROTH = 4 S_IRUSR = 256 +S_IRWXG = 56 +S_IRWXO = 7 +S_IRWXU = 448 +S_ISGID = 1024 +S_ISUID = 2048 +S_ISVTX = 512 S_IWGRP = 16 S_IWOTH = 2 S_IWUSR = 128 diff --git a/sys/netbsd/socket.txt b/sys/netbsd/socket.txt index c2ec6e3bb..3bda257c4 100644 --- a/sys/netbsd/socket.txt +++ b/sys/netbsd/socket.txt @@ -26,10 +26,14 @@ sendto(fd sock, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, 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]]) +compat_43_ogetsockname(fdec sock, asa buffer[out], alen ptr[inout, len[asa, int32]]) getpeername(fd sock, peer ptr[out, sockaddr_storage], peerlen ptr[inout, len[peer, int32]]) +compat_43_ogetpeername(fdes sock, asa buffer[out], alen ptr[inout, len[asa, int32]]) sendmsg(fd sock, msg ptr[in, send_msghdr], f flags[send_flags]) +sendmmsg(s sock, mmsg ptr[inout, send_mmsghdr], len len[mmsg], f flags[send_flags], timeout ptr[in, timespec, opt]) recvmsg(fd sock, msg ptr[inout, recv_msghdr], f flags[recv_flags]) +recvmmsg(s sock, mmsg ptr[inout, recv_mmsghdr], len len[mmsg], f flags[recv_flags], timeout ptr[in, timespec, opt]) listen(fd sock, backlog int32) shutdown(fd sock, how flags[shutdown_flags]) @@ -42,7 +46,7 @@ socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SOCK_ 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 +recv_flags = MSG_OOB, MSG_PEEK, MSG_DONTROUTE, MSG_EOR, MSG_TRUNC, MSG_CTRUNC, MSG_WAITALL, MSG_DONTWAIT, MSG_BCAST, MSG_MCAST, MSG_NOSIGNAL, MSG_CMSG_CLOEXEC, MSG_NBIO, MSG_WAITFORONE, MSG_NOTIFICATION 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 @@ -58,6 +62,11 @@ sockaddr_storage [ data array[int8, 14] ] +send_mmsghdr { + hdr ptr[inout, send_msghdr] + len int32 +} + send_msghdr { msg_name ptr[in, sockaddr_storage, opt] msg_namelen len[msg_name, int32] @@ -68,6 +77,11 @@ send_msghdr { msg_flags const[0, int32] } +recv_mmsghdr { + hdr ptr[inout, recv_msghdr] + len int32 +} + recv_msghdr { msg_name ptr[out, sockaddr_storage, opt] msg_namelen len[msg_name, int32] diff --git a/sys/netbsd/socket_amd64.const b/sys/netbsd/socket_amd64.const index 4dd88e997..df418a7ba 100644 --- a/sys/netbsd/socket_amd64.const +++ b/sys/netbsd/socket_amd64.const @@ -45,11 +45,14 @@ LINUX_AF_MAX = 32 LINUX_AF_SNA = 22 LINUX_AF_UNIX = 1 LINUX_AF_UNSPEC = 0 +LINUX_MSG_CTRUNC = 8 LINUX_MSG_DONTROUTE = 4 +LINUX_MSG_DONTWAIT = 64 LINUX_MSG_EOR = 128 LINUX_MSG_NOSIGNAL = 16384 LINUX_MSG_OOB = 1 LINUX_MSG_PEEK = 2 +LINUX_MSG_TRUNC = 32 LINUX_MSG_WAITALL = 256 LINUX_SOL_AX25 = 257 LINUX_SOL_IP = 0 @@ -75,13 +78,21 @@ LINUX_SO_SNDTIMEO = 21 LINUX_SO_TIMESTAMP = 29 LINUX_SO_TYPE = 3 LINUX_pseudo_AF_KEY = 15 +MSG_BCAST = 256 MSG_CMSG_CLOEXEC = 2048 +MSG_CTRUNC = 32 MSG_DONTROUTE = 4 +MSG_DONTWAIT = 128 MSG_EOR = 8 +MSG_MCAST = 512 +MSG_NBIO = 4096 MSG_NOSIGNAL = 1024 +MSG_NOTIFICATION = 16384 MSG_OOB = 1 MSG_PEEK = 2 +MSG_TRUNC = 16 MSG_WAITALL = 64 +MSG_WAITFORONE = 8192 PF_APPLETALK = 16 PF_BLUETOOTH = 31 PF_CAN = 35 @@ -125,6 +136,8 @@ SYS_accept = 30 SYS_bind = 104 SYS_compat_30_socket = 97 SYS_compat_43_oaccept = 99 +SYS_compat_43_ogetpeername = 141 +SYS_compat_43_ogetsockname = 150 SYS_compat_43_orecvfrom = 125 SYS_connect = 98 SYS_getpeername = 31 @@ -133,7 +146,9 @@ SYS_getsockopt = 118 SYS_listen = 106 SYS_paccept = 456 SYS_recvfrom = 29 +SYS_recvmmsg = 475 SYS_recvmsg = 27 +SYS_sendmmsg = 476 SYS_sendmsg = 28 SYS_sendto = 133 SYS_setsockopt = 105 diff --git a/sys/netbsd/sys.txt b/sys/netbsd/sys.txt index 43c05c14a..cb4a2ae04 100644 --- a/sys/netbsd/sys.txt +++ b/sys/netbsd/sys.txt @@ -36,8 +36,11 @@ 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]) +fstatat(fd fd, path ptr[in, filename], buf ptr[out, stat], flag flags[fstatat_flags]) profil(samples buffer[inout], size len[samples], offt intptr, scale int32) +compat_09_ouname(name ptr[out, outsname]) + compat_12_msync(addr vma, len int32) __msync13(addr vma, len int32, f flags[msync_flags]) @@ -72,6 +75,7 @@ compat_50_mknod(file ptr[in, filename], mode flags[mknod_mode], dev int32) mknod(file ptr[in, filename], mode flags[mknod_mode], dev dev) mknod$loop(file ptr[in, filename], mode flags[mknod_mode], dev proc[1792, 2]) mknodat(dirfd fd_dir, file ptr[in, filename], mode flags[mknod_mode], dev int32) +umask(mode flags[open_mode]) chmod(file ptr[in, filename], mode flags[open_mode]) lchmod(file ptr[in, filename], mode flags[open_mode]) fchmod(fd fd, mode flags[open_mode]) @@ -85,6 +89,8 @@ chflags(file ptr[in, filename], flags flags[chflags_flags]) fchflags(fd fd, flags flags[chflags_flags]) lchflags(file ptr[in, filename], flags flags[chflags_flags]) faccessat(dirfd fd_dir, pathname ptr[in, filename], mode flags[access_mode], flags flags[faccessat_flags]) +compat_50_quotactl(path ptr[in, filename], cmd int32, id uid, addr buffer[in]) + compat_50_utimes(filename ptr[in, filename], times ptr[in, timeval50]) compat_50_futimes(fd fd, times ptr[in, timeval50]) compat_50_lutimes(link ptr[in, filename], times ptr[in, timeval50]) @@ -151,8 +157,10 @@ acct(filename ptr[in, filename, opt]) compat_50_getrusage(who flags[rusage_who], usage ptr[out, rusage50]) __getrusage50(who flags[rusage_who], usage ptr[out, rusage]) -getrlimit(res flags[rlimit_type], rlim ptr[out, rlimit]) -setrlimit(res flags[rlimit_type], rlim ptr[in, rlimit]) +getrlimit(res flags[rlimit_type], rlp ptr[out, rlimit]) +compat_43_ogetrlimit(res flags[rlimit_type], rlp ptr[out, orlimit]) +setrlimit(res flags[rlimit_type], rlp ptr[in, rlimit]) +compat_43_osetrlimit(res flags[rlimit_type], rlp ptr[in, orlimit]) compat_50_clock_gettime(id flags[clock_id], tp ptr[out, timespec50]) compat_50_clock_settime(id flags[clock_id], tp ptr[in, timespec50]) @@ -178,6 +186,14 @@ __vfork14() pid vfork() pid posix_spawn(pid pid, path ptr[in, string], file_actions ptr[in, posix_spawn_file_actions], attrp ptr[in, posix_spawnattr], argv ptr[in, array[string]], envp ptr[in, array[string]]) pid +outsname { + sname array[int8, 32] + nname array[int8, 32] + release array[int8, 32] + version array[int8, 32] + mach array[int8, 32] +} + pollfd { fd fd events flags[pollfd_events, int16] @@ -269,6 +285,11 @@ rlimit { hard intptr } +orlimit { + cur int32 + max int32 +} + flock { type flags[flock_type, int16] whence flags[seek_whence, int16] @@ -329,6 +350,7 @@ sched_param { sched_priority int32 } +fstatat_flags = AT_SYMLINK_NOFOLLOW, AT_SYMLINK_FOLLOW, AT_EACCESS, AT_REMOVEDIR 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 @@ -340,7 +362,7 @@ unlinkat_flags = 0, AT_REMOVEDIR flock_op = LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB faccessat_flags = AT_EACCESS, AT_SYMLINK_NOFOLLOW rusage_who = RUSAGE_SELF, RUSAGE_CHILDREN -rlimit_type = RLIMIT_AS, RLIMIT_CORE, RLIMIT_CPU, RLIMIT_DATA, RLIMIT_FSIZE, RLIMIT_MEMLOCK, RLIMIT_NOFILE, RLIMIT_NPROC, RLIMIT_RSS, RLIMIT_STACK, RLIMIT_NTHR, RLIMIT_STACK +rlimit_type = RLIMIT_CPU, RLIMIT_FSIZE, RLIMIT_DATA, RLIMIT_STACK, RLIMIT_CORE, RLIMIT_RSS, RLIMIT_MEMLOCK, RLIMIT_NPROC, RLIMIT_NOFILE, RLIMIT_SBSIZE, RLIMIT_AS, RLIMIT_NTHR timer_flags = TIMER_RELTIME, TIMER_ABSTIME clock_id = CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_VIRTUAL, CLOCK_PROF, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID getitimer_which = ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF, ITIMER_MONOTONIC diff --git a/sys/netbsd/sys_amd64.const b/sys/netbsd/sys_amd64.const index c4af74108..57adb5527 100644 --- a/sys/netbsd/sys_amd64.const +++ b/sys/netbsd/sys_amd64.const @@ -94,6 +94,7 @@ RLIMIT_NOFILE = 8 RLIMIT_NPROC = 7 RLIMIT_NTHR = 11 RLIMIT_RSS = 5 +RLIMIT_SBSIZE = 9 RLIMIT_STACK = 3 RUSAGE_CHILDREN = 18446744073709551615 RUSAGE_SELF = 0 @@ -139,6 +140,7 @@ SYS_chmod = 15 SYS_chown = 16 SYS_chroot = 61 SYS_clock_nanosleep = 477 +SYS_compat_09_ouname = 164 SYS_compat_12_fstat12 = 189 SYS_compat_12_lstat12 = 190 SYS_compat_12_msync = 65 @@ -149,6 +151,8 @@ SYS_compat_30_getdents = 272 SYS_compat_43_fstat43 = 62 SYS_compat_43_lstat43 = 40 SYS_compat_43_oftruncate = 130 +SYS_compat_43_ogetrlimit = 144 +SYS_compat_43_osetrlimit = 145 SYS_compat_43_otruncate = 129 SYS_compat_43_stat43 = 38 SYS_compat_50_clock_getres = 234 @@ -160,6 +164,7 @@ SYS_compat_50_getrusage = 117 SYS_compat_50_lutimes = 276 SYS_compat_50_mknod = 14 SYS_compat_50_nanosleep = 240 +SYS_compat_50_quotactl = 148 SYS_compat_50_select = 93 SYS_compat_50_setitimer = 83 SYS_compat_50_utimes = 138 @@ -178,6 +183,7 @@ SYS_fcntl = 92 SYS_fdatasync = 241 SYS_flock = 131 SYS_fork = 2 +SYS_fstatat = 466 SYS_fsync = 95 SYS_ftruncate = 201 SYS_getegid = 43 @@ -228,6 +234,7 @@ SYS_symlink = 57 SYS_symlinkat = 470 SYS_sync = 36 SYS_truncate = 200 +SYS_umask = 60 SYS_unlink = 10 SYS_unlinkat = 471 SYS_utimensat = 467 -- cgit mrf-deployment