summaryrefslogtreecommitdiff
path: root/include/curl/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/curl/system.h')
-rw-r--r--include/curl/system.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/include/curl/system.h b/include/curl/system.h
index faf8fcf84..67d383150 100644
--- a/include/curl/system.h
+++ b/include/curl/system.h
@@ -348,6 +348,27 @@
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
+#elif defined(FreeRTOS) /* Life on FreeRTOS */
+
+#if (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \
+ (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L)
+# define CURL_TYPEOF_CURL_OFF_T long long
+# define CURL_FORMAT_CURL_OFF_T "lld"
+# define CURL_FORMAT_CURL_OFF_TU "llu"
+# define CURL_SUFFIX_CURL_OFF_T LL
+# define CURL_SUFFIX_CURL_OFF_TU ULL
+#else
+# define CURL_TYPEOF_CURL_OFF_T long
+# define CURL_FORMAT_CURL_OFF_T "ld"
+# define CURL_FORMAT_CURL_OFF_TU "lu"
+# define CURL_SUFFIX_CURL_OFF_T L
+# define CURL_SUFFIX_CURL_OFF_TU UL
+# endif
+# define CURL_FREERTOS_SOCKETS_H 1
+# define CURL_TYPEOF_CURL_SOCKLEN_T uint32_t
+# define CURL_AVOID_SYS_TYPES_H 1
+# define CURL_AVOID_SYS_SOCKET_H 1
+
/* ===================================== */
/* KEEP MSVC THE PENULTIMATE ENTRY */
/* ===================================== */
@@ -430,6 +451,29 @@
# include <sys/types.h>
#endif
+#ifdef CURL_FREERTOS_SOCKETS_H
+# include <FreeRTOS.h>
+# include <FreeRTOS_Sockets.h>
+#include <stdint.h>
+#include <stddef.h>
+/* for the base type etc */
+#include "portmacro.h"
+#define curl_fd_set_typedefed
+typedef SocketSet_t curl_fd_set;
+#define curl_struct_sockaddr freertos_sockaddr
+#define curl_setsockopt(a,b,c,d,e) FreeRTOS_setsockopt(a,b,c,d,e)
+#define curl_connect(a,b,c) FreeRTOS_connect(a,b,c)
+#define curl_bind(a,b,c) FreeRTOS_bind(a,b,c)
+#define curl_recv(a,b,c,d) FreeRTOS_recv(a,b,c,d)
+#define curl_socket(a,b,c) FreeRTOS_socket(a,b,c)
+/* not quite socket-style API */
+#define CURL_FD_SET(a,b,c) FreeRTOS_FD_SET(a,b,c)
+/* struct sockaddr "fix" */
+#define sa_family sin_family
+/* use our private pollfd struct alternative */
+#define curl_pollfd curl_waitfd
+#endif
+
/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
/* sys/socket.h is required here to properly make type definitions below. */
#ifdef CURL_PULL_SYS_SOCKET_H
@@ -480,6 +524,38 @@
#endif
/*
+ * For the standard systems
+ */
+#ifndef curl_struct_sockaddr
+#define curl_struct_sockaddr sockaddr
+#endif
+#ifndef curl_fd_set_typedefed
+#define curl_fd_set_typedefed
+typedef fd_set curl_fd_set;
+#endif
+#ifndef curl_pollfd
+#define curl_pollfd pollfd
+#endif
+#ifndef curl_setsockopt
+#define curl_setsockopt(a,b,c,d,e) setsockopt(a,b,c,d,e)
+#endif
+#ifndef curl_bind
+#define curl_bind(a,b,c) bind(a,b,c)
+#endif
+#ifndef curl_connect
+#define curl_connect(a,b,c) connect(a,b,c)
+#endif
+#ifndef curl_recv
+#define curl_recv(a,b,c,d) recv(a,b,c,d)
+#endif
+#ifndef curl_socket
+#define curl_socket(a,b,c) socket(a,b,c)
+#endif
+#ifndef CURL_FD_SET
+#define CURL_FD_SET(a,b,c) FD_SET(a,b)
+#endif
+
+/*
* Macros for minimum-width signed and unsigned curl_off_t integer constants.
*/