19 #ifndef _COBALT_RTDM_RTDM_H 20 #define _COBALT_RTDM_RTDM_H 22 #include <linux/types.h> 23 #include <linux/fcntl.h> 24 #include <linux/ioctl.h> 25 #include <linux/sched.h> 26 #include <linux/socket.h> 27 #include <cobalt/kernel/ppd.h> 30 typedef __u32 socklen_t;
34 int __rtdm_dev_open(
const char *path,
int oflag);
36 int __rtdm_dev_socket(
int protocol_family,
37 int socket_type,
int protocol);
39 static inline int rtdm_open(
const char *path,
int oflag, ...)
41 return __rtdm_dev_open(path, oflag);
45 int socket_type,
int protocol)
47 return __rtdm_dev_socket(protocol_family, socket_type, protocol);
52 return rtdm_fd_close(fd, RTDM_FD_MAGIC);
55 #define rtdm_fcntl(__fd, __cmd, __args...) \ 56 rtdm_fd_fcntl(__fd, __cmd, ##__args) 58 #define rtdm_ioctl(__fd, __request, __args...) \ 59 rtdm_fd_ioctl(__fd, __request, ##__args) 61 static inline ssize_t
rtdm_read(
int fd,
void *buf,
size_t count)
63 return rtdm_fd_read(fd, buf, count);
66 static inline ssize_t
rtdm_write(
int fd,
const void *buf,
size_t count)
68 return rtdm_fd_write(fd, buf, count);
71 static inline ssize_t
rtdm_recvmsg(
int s,
struct user_msghdr *msg,
int flags)
73 return rtdm_fd_recvmsg(s, msg, flags);
76 static inline ssize_t
rtdm_sendmsg(
int s,
const struct user_msghdr *msg,
int flags)
78 return rtdm_fd_sendmsg(s, msg, flags);
82 ssize_t
rtdm_recvfrom(
int s,
void *buf,
size_t len,
int flags,
83 struct sockaddr *from,
86 struct user_msghdr msg;
93 msg.msg_namelen = from ? *fromlen : 0;
96 msg.msg_control = NULL;
97 msg.msg_controllen = 0;
104 *fromlen = msg.msg_namelen;
109 static inline ssize_t
rtdm_recv(
int s,
void *buf,
size_t len,
int flags)
114 static inline ssize_t
rtdm_sendto(
int s,
const void *buf,
size_t len,
115 int flags,
const struct sockaddr *to,
118 struct user_msghdr msg;
121 iov.iov_base = (
void *)buf;
123 msg.msg_name = (
struct sockaddr *)to;
124 msg.msg_namelen = tolen;
127 msg.msg_control = NULL;
128 msg.msg_controllen = 0;
133 static inline ssize_t
rtdm_send(
int s,
const void *buf,
size_t len,
int flags)
139 void *optval, socklen_t *optlen)
141 struct _rtdm_getsockopt_args args = {
142 level, optname, optval, optlen
145 return rtdm_ioctl(s, _RTIOC_GETSOCKOPT, &args);
149 const void *optval, socklen_t optlen)
151 struct _rtdm_setsockopt_args args = {
152 level, optname, (
void *)optval, optlen
155 return rtdm_ioctl(s, _RTIOC_SETSOCKOPT, &args);
158 static inline int rtdm_bind(
int s,
const struct sockaddr *my_addr,
161 struct _rtdm_setsockaddr_args args = {
168 static inline int rtdm_connect(
int s,
const struct sockaddr *serv_addr,
171 struct _rtdm_setsockaddr_args args = {
183 static inline int rtdm_accept(
int s,
struct sockaddr *addr,
186 struct _rtdm_getsockaddr_args args = {
196 struct _rtdm_getsockaddr_args args = {
200 return rtdm_ioctl(s, _RTIOC_GETSOCKNAME, &args);
206 struct _rtdm_getsockaddr_args args = {
210 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 user_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_recvmsg(int fd, struct user_msghdr *msg, int flags)
Receive message from 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.