[PATCH v2 11/20] lib/cobalt: rtdm: Move all time64 related services to wrappers_time64.c
Florian Bezdeka <[email protected]>
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <20260302-wip-flo-fix-time64-32bit-native-v2-11-7caefce29bcd@siemens.com> |
Code movement only. Signed-off-by: Florian Bezdeka <[email protected]> --- lib/cobalt/rtdm.c | 71 ------------------------------------------ lib/cobalt/wrappers_time64.c | 74 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 71 deletions(-) diff --git a/lib/cobalt/rtdm.c b/lib/cobalt/rtdm.c index ec950e15db921b32458d746d300ff6c542a8b23b..df7aa7eb69904f0953be2d324f29d60913916a4a 100644 --- a/lib/cobalt/rtdm.c +++ b/lib/cobalt/rtdm.c @@ -169,24 +169,6 @@ COBALT_IMPL(int, fcntl, (int fd, int cmd, ...)) return __STD(fcntl(fd, cmd, arg)); } -COBALT_IMPL_TIME64(int, ioctl, __ioctl_time64, - (int fd, unsigned int request, ...)) -{ - va_list ap; - void *arg; - int ret; - - va_start(ap, request); - arg = va_arg(ap, void *); - va_end(ap); - - ret = do_ioctl(fd, request, arg); - if (ret != -EADV && ret != -ENOSYS) - return set_errno(ret); - - return __STD(ioctl(fd, request, arg)); -} - COBALT_IMPL(ssize_t, read, (int fd, void *buf, size_t nbyte)) { int ret, oldtype; @@ -243,29 +225,6 @@ COBALT_IMPL(ssize_t, recvmsg, (int fd, struct msghdr *msg, int flags)) return __STD(recvmsg(fd, msg, flags)); } -COBALT_IMPL_TIME64(int, recvmmsg, __recvmmsg64, - (int fd, struct mmsghdr *msgvec, unsigned int vlen, - unsigned int flags, struct timespec *timeout)) -{ - int ret, oldtype; - - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype); - -#ifdef __USE_TIME_BITS64 - ret = XENOMAI_SYSCALL5(sc_cobalt_recvmmsg64, fd, msgvec, - vlen, flags, timeout); -#else - ret = XENOMAI_SYSCALL5(sc_cobalt_recvmmsg, fd, msgvec, vlen, flags, timeout); -#endif - - pthread_setcanceltype(oldtype, NULL); - - if (ret != -EADV && ret != -ENOSYS) - return set_errno(ret); - - return __STD(recvmmsg(fd, msgvec, vlen, flags, timeout)); -} - static ssize_t do_sendmsg(int fd, const struct msghdr *msg, int flags) { int ret, oldtype; @@ -408,36 +367,6 @@ COBALT_IMPL(ssize_t, send, (int fd, const void *buf, size_t len, int flags)) return __STD(send(fd, buf, len, flags)); } -COBALT_IMPL_TIME64(int, getsockopt, __getsockopt64, - (int fd, int level, int optname, void *optval, - socklen_t *optlen)) -{ - struct _rtdm_getsockopt_args args = { level, optname, optval, optlen }; - int ret; - - ret = do_ioctl(fd, _RTIOC_GETSOCKOPT, &args); - if (ret != -EADV && ret != -ENOSYS) - return set_errno(ret); - - return __STD(getsockopt(fd, level, optname, optval, optlen)); -} - -COBALT_IMPL_TIME64(int, setsockopt, __setsockopt64, - (int fd, int level, int optname, const void *optval, - socklen_t optlen)) -{ - struct _rtdm_setsockopt_args args = { - level, optname, (void *)optval, optlen - }; - int ret; - - ret = do_ioctl(fd, _RTIOC_SETSOCKOPT, &args); - if (ret != -EADV && ret != -ENOSYS) - return set_errno(ret); - - return __STD(setsockopt(fd, level, optname, optval, optlen)); -} - COBALT_IMPL(int, bind, (int fd, const struct sockaddr *my_addr, socklen_t addrlen)) { struct _rtdm_setsockaddr_args args = { my_addr, addrlen }; diff --git a/lib/cobalt/wrappers_time64.c b/lib/cobalt/wrappers_time64.c index 404e0c63f8a1241b5a34ad663e5ac020dcf0b44a..1e830945f381117ac6180476dd95a3608b5596b6 100644 --- a/lib/cobalt/wrappers_time64.c +++ b/lib/cobalt/wrappers_time64.c @@ -16,13 +16,16 @@ #include "internal.h" #include "mq.h" #include "mutex.h" +#include "rtdm.h" #include <asm/xenomai/syscall.h> #include <cobalt/uapi/syscall.h> +#include <rtdm/rtdm.h> #include <errno.h> #include <mqueue.h> #include <pthread.h> +#include <sys/socket.h> #include <sys/time.h> #include <time.h> @@ -687,3 +690,74 @@ int pthread_timedmutex_lock_interruptible_np(pthread_mutex_t *mutex, return __pthread_mutex_timedlock(mutex, to); } #endif + +COBALT_IMPL_TIME64(int, ioctl, __ioctl_time64, + (int fd, unsigned int request, ...)) +{ + va_list ap; + void *arg; + int ret; + + va_start(ap, request); + arg = va_arg(ap, void *); + va_end(ap); + + ret = do_ioctl(fd, request, arg); + if (ret != -EADV && ret != -ENOSYS) + return set_errno(ret); + + return __STD(ioctl(fd, request, arg)); +} + +COBALT_IMPL_TIME64(int, recvmmsg, __recvmmsg64, + (int fd, struct mmsghdr *msgvec, unsigned int vlen, + unsigned int flags, struct timespec *timeout)) +{ + int ret, oldtype; + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype); + +#ifdef __USE_TIME_BITS64 + ret = XENOMAI_SYSCALL5(sc_cobalt_recvmmsg64, fd, msgvec, vlen, flags, + timeout); +#else + ret = XENOMAI_SYSCALL5(sc_cobalt_recvmmsg, fd, msgvec, vlen, flags, + timeout); +#endif + + pthread_setcanceltype(oldtype, NULL); + + if (ret != -EADV && ret != -ENOSYS) + return set_errno(ret); + + return __STD(recvmmsg(fd, msgvec, vlen, flags, timeout)); +} + +COBALT_IMPL_TIME64(int, getsockopt, __getsockopt64, + (int fd, int level, int optname, void *optval, + socklen_t *optlen)) +{ + struct _rtdm_getsockopt_args args = { level, optname, optval, optlen }; + int ret; + + ret = do_ioctl(fd, _RTIOC_GETSOCKOPT, &args); + if (ret != -EADV && ret != -ENOSYS) + return set_errno(ret); + + return __STD(getsockopt(fd, level, optname, optval, optlen)); +} + +COBALT_IMPL_TIME64(int, setsockopt, __setsockopt64, + (int fd, int level, int optname, const void *optval, + socklen_t optlen)) +{ + struct _rtdm_setsockopt_args args = { level, optname, (void *)optval, + optlen }; + int ret; + + ret = do_ioctl(fd, _RTIOC_SETSOCKOPT, &args); + if (ret != -EADV && ret != -ENOSYS) + return set_errno(ret); + + return __STD(setsockopt(fd, level, optname, optval, optlen)); +} -- 2.53.0