diff options
Diffstat (limited to 'scalls')
-rw-r--r-- | scalls/recvfrom.c | 15 | ||||
-rw-r--r-- | scalls/recvfrom.h | 4 |
2 files changed, 19 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); +} diff --git a/scalls/recvfrom.h b/scalls/recvfrom.h new file mode 100644 index 0000000..9897899 --- /dev/null +++ b/scalls/recvfrom.h @@ -0,0 +1,4 @@ +#include <socket.h> + +size_t syscall_recvfrom(int socket, void *buffer, size_t length, int flags, + struct sockaddr *address, socklen_t *address_len); |