/*
* $Id: compat.h,v 0.0.0.1 2004/11/14
*
- * AUTHOR: Jan Kiszka jan.kiszka@web.de
+ * -------------------------------------------------------------------
+ * ORTE
+ * Open Real-Time Ethernet
*
- * ORTE - OCERA Real-Time Ethernet http://www.ocera.org/
+ * Copyright (C) 2001-2006
+ * Department of Control Engineering FEE CTU Prague, Czech Republic
+ * http://dce.felk.cvut.cz
+ * http://www.ocera.org
+ *
+ * Author: Petr Smolik petr@smoliku.cz
+ * Author - this code: Jan Kiszka jan.kiszka@web.de
+ * Advisor: Pavel Pisa
+ * Project Responsible: Zdenek Hanzalek
* --------------------------------------------------------------------
*
* This program is free software; you can redistribute it and/or modify
*
*/
-#include "defines.h" //macro MALLOC
+#ifndef _COMPAT_H
+#define _COMPAT_H
+
+#include <linux/if.h>
+#include <linux/in.h>
+#include <rtnet.h>
+#include "rtai_posix.h.patched"
+#include <defines.h> //macro MALLOC
/* This should become a bit more generic for all platforms... */
#define rtl_printf rt_printk
typedef __u32 in_addr_t;
-static inline in_addr_t inet_addr(const char *cp)
+static inline in_addr_t
+inet_addr(const char *cp)
{
- return rt_inet_aton(cp);
+ return rt_inet_aton(cp);
}
static char inet_ntoa_buf[16];
-static inline char *inet_ntoa(struct in_addr in)
+static inline char *
+inet_ntoa(struct in_addr in)
{
- unsigned char *octet;
+ unsigned char *octet;
- octet = (unsigned char *)&(in.s_addr);
- sprintf(inet_ntoa_buf, "%u.%u.%u.%u", octet[0], octet[1], octet[2], octet[3]);
+ octet = (unsigned char *)&(in.s_addr);
+ sprintf(inet_ntoa_buf, "%u.%u.%u.%u", octet[0], octet[1], octet[2], octet[3]);
- return inet_ntoa_buf;
+ return inet_ntoa_buf;
}
#define CLOCK_REALTIME 0
-static inline void clock_gettime(int dummy, struct timespec *time)
+static inline void
+clock_gettime(int dummy, struct timespec *time)
{
- count2timespec(rt_get_time(), time);
+ count2timespec(rt_get_time(), time);
}
-static inline int atoi(const char* nptr)
+static inline int
+atoi(const char *nptr)
{
- return simple_strtol(nptr, (char **)NULL, 10);
+ return simple_strtol(nptr, (char **)NULL, 10);
}
-static inline char *strdup(const char *s)
-{
- size_t len = strlen(s)+1;
- char *new_s;
-
- new_s = MALLOC(len);
- if (new_s == NULL)
- return NULL;
-
- memcpy(new_s, s, len);
- return new_s;
-}
+#define sem_init sem_init_rt
+#define sem_destroy sem_destroy_rt
+#define sem_timedwait sem_timedwait_rt
+#define sem_post sem_post_rt
+#define sem_getvalue sem_getvalue_rt
#define pthread_rwlock_init pthread_rwlock_init_rt
#define pthread_rwlock_rdlock pthread_rwlock_rdlock_rt
#define pthread_join pthread_join_rt
#define pthread_exit pthread_exit_rt
+#define pthread_cond_init pthread_cond_init_rt
+#define pthread_cond_timedwait pthread_cond_timedwait_rt
+#define pthread_cond_signal pthread_cond_signal_rt
+#define pthread_cond_destroy pthread_cond_destroy_rt
+
+#define socket socket_rt
+#define setsockopt setsockopt_rt
+#define getsockopt getsockopt_rt
+#define ioctl ioctl_rt
+#define bind bind_rt
+#define getsockname getsockname_rt
+#define recvfrom recvfrom_rt
+#define sendto sendto_rt
+
+static inline int
+close(int s)
+{
+ int result;
+
+ while ((result = close_rt(s)) == -EAGAIN)
+ rt_sleep(nano2count(100000000));
+ return result;
+}
-#define socket rt_socket
-#define close rt_socket_close
-#define setsockopt rt_socket_setsockopt
-#define getsockopt(a, b, c, d, e) -1
-#define ioctl rt_socket_ioctl
-#define bind rt_socket_bind
-#define getsockname rt_socket_getsockname
-#define recvfrom rt_socket_recvfrom
-#define sendto rt_socket_sendto
+#endif /* _COMPAT_H */