|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/LWIP PATCH 3/5] sockets: Add recvmsg() function
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
exportsyms.uk | 1 +
include/sys/socket.h | 1 +
sockets.c | 19 +++++++++++++++++++
3 files changed, 21 insertions(+)
diff --git a/exportsyms.uk b/exportsyms.uk
index 1ca43f8..2f9f4f6 100644
--- a/exportsyms.uk
+++ b/exportsyms.uk
@@ -38,6 +38,7 @@ pbuf_ref
poll
recv
recvfrom
+recvmsg
select
send
sendmsg
diff --git a/include/sys/socket.h b/include/sys/socket.h
index aff064e..7e027b9 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -70,6 +70,7 @@ int listen(int s, int backlog);
int recv(int s, void *mem, size_t len, int flags);
int recvfrom(int s, void *mem, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen);
+int recvmsg(int s, struct msghdr *msg, int flags);
int send(int s, const void *dataptr, size_t size, int flags);
int sendmsg(int s, const struct msghdr *message, int flags);
int sendto(int s, const void *dataptr, size_t size, int flags,
diff --git a/sockets.c b/sockets.c
index aa772da..1806846 100644
--- a/sockets.c
+++ b/sockets.c
@@ -755,6 +755,25 @@ EXIT:
return ret;
}
+int recvmsg(int s, struct msghdr *msg, int flags)
+{
+ int ret = 0;
+ struct sock_net_file *file = NULL;
+
+ file = sock_net_file_get(s);
+ if (PTRISERR(file)) {
+ LWIP_DEBUGF(SOCKETS_DEBUG,
+ ("failed to identify socket descriptor\n"));
+ ret = -1;
+ SOCK_NET_SET_ERRNO(PTR2ERR(file));
+ goto EXIT;
+ }
+ ret = lwip_recvmsg(file->sock_fd, msg, flags);
+ vfscore_put_file(file->vfscore_file); /* release refcount */
+EXIT:
+ return ret;
+}
+
int send(int s, const void *dataptr, size_t size, int flags)
{
int ret = 0;
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |