18 #ifndef _XENOMAI_TRANK_RTDM_RTDM_H 19 #define _XENOMAI_TRANK_RTDM_RTDM_H 21 #include_next <rtdm/rtdm.h> 27 #ifndef RTDM_NO_DEFAULT_USER_API 29 #define rt_dev_call(__call, __args...) \ 32 __ret = __RT(__call(__args)); \ 33 __ret < 0 ? -errno : __ret; \ 36 #define rt_dev_open(__args...) rt_dev_call(open, __args) 37 #define rt_dev_ioctl(__args...) rt_dev_call(ioctl, __args) 38 #define rt_dev_recvfrom(__args...) rt_dev_call(recvfrom, __args) 40 static inline int rt_dev_socket(
int domain,
int type,
int protocol)
42 return rt_dev_call(socket, domain, type, protocol);
45 static inline ssize_t rt_dev_recvmsg(
int fd,
struct msghdr *msg,
int flags)
47 return rt_dev_call(recvmsg, fd, msg, flags);
50 static inline ssize_t rt_dev_recv(
int fd,
void *buf,
size_t len,
int flags)
52 return rt_dev_call(recvfrom, fd, buf, len, flags, NULL, NULL);
55 static inline ssize_t rt_dev_sendmsg(
int fd,
const struct msghdr *msg,
int flags)
57 return rt_dev_call(sendmsg, fd, msg, flags);
60 static inline ssize_t rt_dev_sendto(
int fd,
const void *buf,
size_t len,
61 int flags,
const struct sockaddr *to,
67 iov.iov_base = (
void *)buf;
70 msg.msg_name = (
struct sockaddr *)to;
71 msg.msg_namelen = tolen;
74 msg.msg_control = NULL;
75 msg.msg_controllen = 0;
77 return rt_dev_call(sendmsg, fd, &msg, flags);
80 static inline ssize_t rt_dev_send(
int fd,
const void *buf,
size_t len,
83 return rt_dev_call(sendto, fd, buf, len, flags, NULL, 0);
86 static inline int rt_dev_getsockopt(
int fd,
int level,
int optname,
87 void *optval, socklen_t *optlen)
89 struct _rtdm_getsockopt_args args = {
90 level, optname, optval, optlen
93 return rt_dev_call(ioctl, fd, _RTIOC_GETSOCKOPT, &args);
96 static inline int rt_dev_setsockopt(
int fd,
int level,
int optname,
97 const void *optval, socklen_t optlen)
99 struct _rtdm_setsockopt_args args = {
100 level, optname, (
void *)optval, optlen
103 return rt_dev_call(ioctl, fd, _RTIOC_SETSOCKOPT, &args);
106 static inline int rt_dev_bind(
int fd,
const struct sockaddr *my_addr,
109 struct _rtdm_setsockaddr_args args = { my_addr, addrlen };
111 return rt_dev_call(ioctl, fd, _RTIOC_BIND, &args);
114 static inline int rt_dev_connect(
int fd,
const struct sockaddr *serv_addr,
117 struct _rtdm_setsockaddr_args args = { serv_addr, addrlen };
119 return rt_dev_call(ioctl, fd, _RTIOC_CONNECT, &args);
122 static inline int rt_dev_listen(
int fd,
int backlog)
124 return rt_dev_call(ioctl, fd, _RTIOC_LISTEN, backlog);
127 static inline int rt_dev_accept(
int fd,
struct sockaddr *addr,
130 struct _rtdm_getsockaddr_args args = { addr, addrlen };
132 return rt_dev_call(ioctl, fd, _RTIOC_ACCEPT, &args);
135 static inline int rt_dev_getsockname(
int fd,
struct sockaddr *name,
138 struct _rtdm_getsockaddr_args args = { name, namelen };
140 return rt_dev_call(ioctl, fd, _RTIOC_GETSOCKNAME, &args);
143 static inline int rt_dev_getpeername(
int fd,
struct sockaddr *name,
146 struct _rtdm_getsockaddr_args args = { name, namelen };
148 return rt_dev_call(ioctl, fd, _RTIOC_GETPEERNAME, &args);
151 static inline int rt_dev_shutdown(
int fd,
int how)
153 return rt_dev_call(ioctl, fd, _RTIOC_SHUTDOWN, how);
156 static inline int rt_dev_close(
int fd)
158 return rt_dev_call(close, fd);
161 static inline ssize_t rt_dev_write(
int fd,
const void *buf,
size_t len)
163 return rt_dev_call(write, fd, buf, len);
166 static inline ssize_t rt_dev_read(
int fd,
void *buf,
size_t len)
168 return rt_dev_call(read, fd, buf, len);