All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.