20 #ifndef _COBALT_RTDM_RTDM_H
21 #define _COBALT_RTDM_RTDM_H
23 #include <linux/types.h>
24 #include <linux/fcntl.h>
25 #include <linux/ioctl.h>
26 #include <linux/sched.h>
27 #include <linux/socket.h>
28 #include <cobalt/kernel/ppd.h>
31 typedef __u32 socklen_t;
35 int __rtdm_dev_open(
const char *path,
int oflag);
37 int __rtdm_dev_socket(
int protocol_family,
38 int socket_type,
int protocol);
40 static inline int rtdm_open(
const char *path,
int oflag, ...)
42 return __rtdm_dev_open(path, oflag);
46 int socket_type,
int protocol)
48 return __rtdm_dev_socket(protocol_family, socket_type, protocol);
53 return rtdm_fd_close(fd, RTDM_FD_MAGIC);
56 #define rtdm_fcntl(__fd, __cmd, __args...) \
57 rtdm_fd_fcntl(__fd, __cmd, ##__args)
59 #define rtdm_ioctl(__fd, __request, __args...) \
60 rtdm_fd_ioctl(__fd, __request, ##__args)
62 static inline ssize_t
rtdm_read(
int fd,
void *buf,
size_t count)
64 return rtdm_fd_read(fd, buf, count);
67 static inline ssize_t
rtdm_write(
int fd,
const void *buf,
size_t count)
69 return rtdm_fd_write(fd, buf, count);
72 static inline ssize_t
rtdm_recvmsg(
int s,
struct msghdr *msg,
int flags)
74 return rtdm_fd_recvmsg(s, msg, flags);
77 static inline ssize_t
rtdm_sendmsg(
int s,
const struct msghdr *msg,
int flags)
79 return rtdm_fd_sendmsg(s, msg, flags);
83 ssize_t
rtdm_recvfrom(
int s,
void *buf,
size_t len,
int flags,
84 struct sockaddr *from,
94 msg.msg_namelen = from ? *fromlen : 0;
97 msg.msg_control = NULL;
98 msg.msg_controllen = 0;
105 *fromlen = msg.msg_namelen;
110 static inline ssize_t
rtdm_recv(
int s,
void *buf,
size_t len,
int flags)
115 static inline ssize_t
rtdm_sendto(
int s,
const void *buf,
size_t len,
116 int flags,
const struct sockaddr *to,
122 iov.iov_base = (
void *)buf;
124 msg.msg_name = (
struct sockaddr *)to;
125 msg.msg_namelen = tolen;
128 msg.msg_control = NULL;
129 msg.msg_controllen = 0;
134 static inline ssize_t
rtdm_send(
int s,
const void *buf,
size_t len,
int flags)
140 void *optval, socklen_t *optlen)
142 struct _rtdm_getsockopt_args args = {
143 level, optname, optval, optlen
146 return rtdm_ioctl(s, _RTIOC_GETSOCKOPT, &args);
150 const void *optval, socklen_t optlen)
152 struct _rtdm_setsockopt_args args = {
153 level, optname, (
void *)optval, optlen
156 return rtdm_ioctl(s, _RTIOC_SETSOCKOPT, &args);
159 static inline int rtdm_bind(
int s,
const struct sockaddr *my_addr,
162 struct _rtdm_setsockaddr_args args = {
169 static inline int rtdm_connect(
int s,
const struct sockaddr *serv_addr,
172 struct _rtdm_setsockaddr_args args = {
184 static inline int rtdm_accept(
int s,
struct sockaddr *addr,
187 struct _rtdm_getsockaddr_args args = {
197 struct _rtdm_getsockaddr_args args = {
201 return rtdm_ioctl(s, _RTIOC_GETSOCKNAME, &args);
207 struct _rtdm_getsockaddr_args args = {
211 return rtdm_ioctl(s, _RTIOC_GETPEERNAME, &args);
int rtdm_connect(int fd, const struct sockaddr *serv_addr, socklen_t addrlen)
Connect to remote address.
int rtdm_shutdown(int fd, int how)
Shut down parts of a connection.
int rtdm_setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)
Set socket option.
int rtdm_bind(int fd, const struct sockaddr *my_addr, socklen_t addrlen)
Bind to local address.
int rtdm_open(const char *path, int oflag,...)
Open a device.
ssize_t rtdm_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
Transmit message to socket.
int rtdm_ioctl(int fd, int request,...)
Issue an IOCTL.
int rtdm_getpeername(int fd, struct sockaddr *name, socklen_t *namelen)
Get socket destination address.
int rtdm_socket(int protocol_family, int socket_type, int protocol)
Create a socket.
int rtdm_listen(int fd, int backlog)
Listen to incoming connection requests.
Real-Time Driver Model for Xenomai, user API header.
int rtdm_close(int fd)
Close a device or socket.
ssize_t rtdm_sendmsg(int fd, const struct msghdr *msg, int flags)
Transmit message to socket.
ssize_t rtdm_read(int fd, void *buf, size_t nbyte)
Read from device.
ssize_t rtdm_send(int fd, const void *buf, size_t len, int flags)
Transmit message to socket.
ssize_t rtdm_write(int fd, const void *buf, size_t nbyte)
Write to device.
int rtdm_accept(int fd, struct sockaddr *addr, socklen_t *addrlen)
Accept a connection request.
ssize_t rtdm_recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen)
Receive message from socket.
int rtdm_getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlen)
Get socket option.
int rtdm_getsockname(int fd, struct sockaddr *name, socklen_t *namelen)
Get local socket address.
ssize_t rtdm_recv(int fd, void *buf, size_t len, int flags)
Receive message from socket.
ssize_t rtdm_recvmsg(int fd, struct msghdr *msg, int flags)
Receive message from socket.