summaryrefslogtreecommitdiff
path: root/scalls/recvfrom.c
diff options
context:
space:
mode:
Diffstat (limited to 'scalls/recvfrom.c')
-rw-r--r--scalls/recvfrom.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/scalls/recvfrom.c b/scalls/recvfrom.c
new file mode 100644
index 0000000..0e37153
--- /dev/null
+++ b/scalls/recvfrom.c
@@ -0,0 +1,15 @@
+#include <fs/vfs.h>
+#include <poll.h>
+#include <scalls/recvfrom.h>
+
+size_t syscall_recvfrom(int socket, void *buffer, size_t length, int flags,
+ struct sockaddr *address, socklen_t *address_len) {
+ if (flags & MSG_WAITALL) {
+ struct pollfd fds[1];
+ fds[0].fd = socket;
+ fds[0].events = POLLIN;
+ poll(fds, 1, 0);
+ }
+ kprintf("got event\n");
+ return vfs_pread(socket, buffer, length, 0);
+}