From 8187446866c8c58279c91dec6d29841979757efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Wi=C5=9Bniewski?= Date: Thu, 16 Apr 2026 18:59:55 +0200 Subject: [PATCH 1/2] use non-static inlines for `send()` and `receive()` TASK: RTOS-1289 --- include/sys/socket.h | 13 +++++++++++-- sys/socket.c | 17 +++++------------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/include/sys/socket.h b/include/sys/socket.h index dab6fb53..e1a7751f 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -72,10 +72,8 @@ int bind(int socket, const struct sockaddr *address, socklen_t address_len); int listen(int socket, int backlog); int accept4(int socket, struct sockaddr *address, socklen_t *address_len, int flags); int accept(int socket, struct sockaddr *address, socklen_t *address_len); -ssize_t send(int socket, const void *message, size_t length, int flags); ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len); ssize_t sendmsg(int socket, const struct msghdr *msg, int flags) __attribute__((warning("sendmsg() is not fully supported"))); -ssize_t recv(int socket, void *message, size_t length, int flags); ssize_t recvfrom(int socket, void *message, size_t length, int flags, struct sockaddr *src_addr, socklen_t *src_len); ssize_t recvmsg(int socket, struct msghdr *msg, int flags) __attribute__((warning("recvmsg() is not fully supported"))); int getpeername(int socket, struct sockaddr *address, socklen_t *address_len); @@ -86,6 +84,17 @@ int shutdown(int socket, int how); int socketpair(int domain, int type, int protocol, int socket_vector[2]); +inline ssize_t send(int socket, const void *message, size_t length, int flags) +{ + return sendto(socket, message, length, flags, NULL, 0); +} + + +inline ssize_t recv(int socket, void *message, size_t length, int flags) +{ + return recvfrom(socket, message, length, flags, NULL, 0); +} + #ifdef __cplusplus } #endif diff --git a/sys/socket.c b/sys/socket.c index c3594618..55434e13 100644 --- a/sys/socket.c +++ b/sys/socket.c @@ -53,6 +53,11 @@ extern ssize_t sys_sendmsg(int socket, const struct msghdr *msg, int flags); int h_errno; +/* inline wrappers defined in sys/socket.h */ +extern inline ssize_t send(int socket, const void *message, size_t length, int flags); +extern inline ssize_t recv(int socket, void *message, size_t length, int flags); + + static int socksrvcall(msg_t *msg) { oid_t oid; @@ -66,18 +71,6 @@ static int socksrvcall(msg_t *msg) } -ssize_t send(int socket, const void *message, size_t length, int flags) -{ - return sendto(socket, message, length, flags, NULL, 0); -} - - -ssize_t recv(int socket, void *message, size_t length, int flags) -{ - return recvfrom(socket, message, length, flags, NULL, 0); -} - - static inline ssize_t iov_total_len(const struct iovec *iov, size_t iovcnt) { ssize_t tot_len = 0; From b590d94a5f7c1b6f240b431c911fe6a4e327a3c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Wi=C5=9Bniewski?= Date: Thu, 16 Apr 2026 17:34:26 +0200 Subject: [PATCH 2/2] socket: implement `accept()` with `syscalls_sys_accept4` This will allow to deprecate/remove `accept` syscall. TASK: RTOS-1289 --- include/sys/socket.h | 7 ++++++- sys/socket.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/sys/socket.h b/include/sys/socket.h index e1a7751f..52d9a8a9 100644 --- a/include/sys/socket.h +++ b/include/sys/socket.h @@ -71,7 +71,6 @@ int connect(int socket, const struct sockaddr *address, socklen_t address_len); int bind(int socket, const struct sockaddr *address, socklen_t address_len); int listen(int socket, int backlog); int accept4(int socket, struct sockaddr *address, socklen_t *address_len, int flags); -int accept(int socket, struct sockaddr *address, socklen_t *address_len); ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len); ssize_t sendmsg(int socket, const struct msghdr *msg, int flags) __attribute__((warning("sendmsg() is not fully supported"))); ssize_t recvfrom(int socket, void *message, size_t length, int flags, struct sockaddr *src_addr, socklen_t *src_len); @@ -84,6 +83,12 @@ int shutdown(int socket, int how); int socketpair(int domain, int type, int protocol, int socket_vector[2]); +inline int accept(int socket, struct sockaddr *address, socklen_t *address_len) +{ + return accept4(socket, address, address_len, 0); +} + + inline ssize_t send(int socket, const void *message, size_t length, int flags) { return sendto(socket, message, length, flags, NULL, 0); diff --git a/sys/socket.c b/sys/socket.c index 55434e13..c75e048e 100644 --- a/sys/socket.c +++ b/sys/socket.c @@ -31,7 +31,6 @@ #include #include -WRAP_ERRNO_DEF(int, accept, (int socket, struct sockaddr *address, socklen_t *address_len), (socket, address, address_len)) WRAP_ERRNO_DEF(int, accept4, (int socket, struct sockaddr *address, socklen_t *address_len, int flags), (socket, address, address_len, flags)) WRAP_ERRNO_DEF(int, bind, (int socket, const struct sockaddr *address, socklen_t address_len), (socket, address, address_len)) WRAP_ERRNO_DEF(int, connect, (int socket, const struct sockaddr *address, socklen_t address_len), (socket, address, address_len)) @@ -54,6 +53,7 @@ extern ssize_t sys_sendmsg(int socket, const struct msghdr *msg, int flags); int h_errno; /* inline wrappers defined in sys/socket.h */ +extern inline int accept(int socket, struct sockaddr *address, socklen_t *address_len); extern inline ssize_t send(int socket, const void *message, size_t length, int flags); extern inline ssize_t recv(int socket, void *message, size_t length, int flags);