* [PATCH v2] Fix missing time64 wrappers
@ 2026-10-12 16:49 François Legal
2026-10-12 19:54 ` Florian Bezdeka
0 siblings, 1 reply; 2+ messages in thread
From: François Legal @ 2026-10-12 16:49 UTC (permalink / raw)
To: xenomai
There are missing wrappers for 64 bits time in xenomai 3.3 :
- __recvmsg64
- __sendmsg64
- __sendmmsg64
For __recvmsg64, the only options which shall write to msghdr.msg_control are :
-RTCAN_RTIOC_TAKE_TIMESTAMP which always writes RTCAN_TIMESTAMP_SIZE (64) bits
so it is correct to route the time64 service to ne native "time_t" syscall.
Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
---
diff --git a/lib/cobalt/cobalt-glibc-time64.wrappers b/lib/cobalt/cobalt-glibc-time64.wrappers
index 0bf895ca9..483a8ce24 100644
--- a/lib/cobalt/cobalt-glibc-time64.wrappers
+++ b/lib/cobalt/cobalt-glibc-time64.wrappers
@@ -8,7 +8,10 @@
--wrap __mq_timedsend_time64
--wrap __mq_timedreceive_time64
--wrap __sigtimedwait64
+--wrap __recvmsg64
--wrap __recvmmsg64
+--wrap __sendmsg64
+--wrap __sendmmsg64
--wrap __pthread_cond_timedwait64
--wrap __timer_settime64
--wrap __timer_gettime64
diff --git a/lib/cobalt/rtdm.c b/lib/cobalt/rtdm.c
index 00c1aaf4b..264de8ace 100644
--- a/lib/cobalt/rtdm.c
+++ b/lib/cobalt/rtdm.c
@@ -254,7 +256,7 @@ static ssize_t do_recvmsg(int fd, struct msghdr *msg, int flags)
return ret;
}
-COBALT_IMPL(ssize_t, recvmsg, (int fd, struct msghdr *msg, int flags))
+COBALT_IMPL_TIME64(ssize_t, recvmsg, __recvmsg64,
+ (int fd,struct msghdr *msg, int flags))
{
int ret;
@@ -301,7 +301,7 @@ static ssize_t do_sendmsg(int fd, const struct msghdr *msg, int flags)
return ret;
}
-COBALT_IMPL(ssize_t, sendmsg, (int fd, const struct msghdr *msg, int flags))
+COBALT_IMPL_TIME64(ssize_t, sendmsg, __sendmsg64,
+ (int fd, const struct msghdr *msg, int flags))
{
int ret;
@@ -312,7 +312,7 @@ COBALT_IMPL(ssize_t, sendmsg, (int fd, const struct msghdr *msg, int flags))
return __STD(sendmsg(fd, msg, flags));
}
-COBALT_IMPL(int, sendmmsg, (int fd, struct mmsghdr *msgvec,
+COBALT_IMPL_TIME64(int, sendmmsg, sendmmsg64, (int fd, struct mmsghdr *msgvec,
unsigned int vlen, unsigned int flags))
{
int ret, oldtype;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] Fix missing time64 wrappers
2026-10-12 16:49 [PATCH v2] Fix missing time64 wrappers François Legal
@ 2026-10-12 19:54 ` Florian Bezdeka
0 siblings, 0 replies; 2+ messages in thread
From: Florian Bezdeka @ 2026-10-12 19:54 UTC (permalink / raw)
To: François Legal, xenomai; +Cc: Jan Kiszka
Hi François,
thanks a lot for v2. Some minor stuff below, Jan might even fix that up
on merge.
On Mon, 2026-10-12 at 18:49 +0200, François Legal wrote:
> There are missing wrappers for 64 bits time in xenomai 3.3 :
> - __recvmsg64
> - __sendmsg64
> - __sendmmsg64
>
> For __recvmsg64, the only options which shall write to msghdr.msg_control are :
> -RTCAN_RTIOC_TAKE_TIMESTAMP which always writes RTCAN_TIMESTAMP_SIZE (64) bits
> so it is correct to route the time64 service to ne native "time_t" syscall.
^^^
Typo.
s/ne/the
Should we add an additional note that we do not implement anything
regarding TX? Seems we do not support something like SO_TIMESTAMP,
SO_TIMESTAMPNS or SCM_TIMESTAMPING. Thats the reason why the send{m}msg
services are fine.
>
> Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
> ---
> diff --git a/lib/cobalt/cobalt-glibc-time64.wrappers b/lib/cobalt/cobalt-glibc-time64.wrappers
> index 0bf895ca9..483a8ce24 100644
> --- a/lib/cobalt/cobalt-glibc-time64.wrappers
> +++ b/lib/cobalt/cobalt-glibc-time64.wrappers
> @@ -8,7 +8,10 @@
> --wrap __mq_timedsend_time64
> --wrap __mq_timedreceive_time64
> --wrap __sigtimedwait64
> +--wrap __recvmsg64
> --wrap __recvmmsg64
> +--wrap __sendmsg64
> +--wrap __sendmmsg64
> --wrap __pthread_cond_timedwait64
> --wrap __timer_settime64
> --wrap __timer_gettime64
> diff --git a/lib/cobalt/rtdm.c b/lib/cobalt/rtdm.c
> index 00c1aaf4b..264de8ace 100644
> --- a/lib/cobalt/rtdm.c
> +++ b/lib/cobalt/rtdm.c
> @@ -254,7 +256,7 @@ static ssize_t do_recvmsg(int fd, struct msghdr *msg, int flags)
> return ret;
> }
>
> -COBALT_IMPL(ssize_t, recvmsg, (int fd, struct msghdr *msg, int flags))
> +COBALT_IMPL_TIME64(ssize_t, recvmsg, __recvmsg64,
> + (int fd,struct msghdr *msg, int flags))
^^
Missing space.
> {
> int ret;
>
> @@ -301,7 +301,7 @@ static ssize_t do_sendmsg(int fd, const struct msghdr *msg, int flags)
> return ret;
> }
>
> -COBALT_IMPL(ssize_t, sendmsg, (int fd, const struct msghdr *msg, int flags))
> +COBALT_IMPL_TIME64(ssize_t, sendmsg, __sendmsg64,
> + (int fd, const struct msghdr *msg, int flags))
> {
> int ret;
>
> @@ -312,7 +312,7 @@ COBALT_IMPL(ssize_t, sendmsg, (int fd, const struct msghdr *msg, int flags))
> return __STD(sendmsg(fd, msg, flags));
> }
>
> -COBALT_IMPL(int, sendmmsg, (int fd, struct mmsghdr *msgvec,
> +COBALT_IMPL_TIME64(int, sendmmsg, sendmmsg64, (int fd, struct mmsghdr *msgvec,
> unsigned int vlen, unsigned int flags))
> {
> int ret, oldtype;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-12 21:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-12 16:49 [PATCH v2] Fix missing time64 wrappers François Legal
2026-10-12 19:54 ` Florian Bezdeka
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.