syscalls: fix for os-test

This commit is contained in:
Matheus
2025-12-08 22:48:49 -03:00
parent 227fcb5386
commit 57e4a39f53
13 changed files with 73 additions and 19 deletions
+7 -2
View File
@@ -6,10 +6,12 @@
#include <kernel/file.h>
#include <kernel/alloc.h>
#define KNOWN_FLAGS (MSG_PEEK | MSG_WAITALL | MSG_CMSG_CLOEXEC)
#define KNOWN_FLAGS (MSG_PEEK | MSG_WAITALL | MSG_CMSG_CLOEXEC | MSG_DONTWAIT)
syscallret_t syscall_recvmsg(context_t *, int fd, msghdr_t *umsghdr, int flags) {
__assert((flags & ~KNOWN_FLAGS) == 0);
if (flags & ~KNOWN_FLAGS)
printf("recvmsg: unknown %x\n", flags);
syscallret_t ret = {
.ret = -1
};
@@ -55,6 +57,9 @@ syscallret_t syscall_recvmsg(context_t *, int fd, msghdr_t *umsghdr, int flags)
if (flags & MSG_WAITALL)
recvflags |= SOCKET_RECV_FLAGS_WAITALL;
if (flags & MSG_DONTWAIT)
recvflags |= V_FFLAGS_NONBLOCKING;
if (flags & MSG_CMSG_CLOEXEC)
recvflags |= SOCKET_RECV_FLAGS_CLOEXEC_CTRL;