• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  *    this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  *    this list of conditions and the following disclaimer in the documentation
12  *    and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  *    derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25  * OF SUCH DAMAGE.
26  *
27  * This file is part of the lwIP TCP/IP stack.
28  *
29  * Author: Adam Dunkels <adam@sics.se>
30  *
31  */
32 #ifndef LWIP_ARCH_CC_H
33 #define LWIP_ARCH_CC_H
34 
35 /* see https://sourceforge.net/p/predef/wiki/OperatingSystems/ */
36 #if defined __ANDROID__
37 #define LWIP_UNIX_ANDROID
38 #elif defined __linux__
39 #define LWIP_UNIX_LINUX
40 #elif defined __APPLE__
41 #define LWIP_UNIX_MACH
42 #elif defined __OpenBSD__
43 #define LWIP_UNIX_OPENBSD
44 #elif defined __FreeBSD__
45 #define LWIP_UNIX_FREEBSD
46 #elif defined __FreeBSD_kernel__ && __GLIBC__
47 #define LWIP_UNIX_KFREEBSD
48 #elif defined __CYGWIN__
49 #define LWIP_UNIX_CYGWIN
50 #elif defined __GNU__
51 #define LWIP_UNIX_HURD
52 #endif
53 
54 #define LWIP_TIMEVAL_PRIVATE 0
55 #include <sys/time.h>
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 #define LWIP_ERRNO_INCLUDE <errno.h>
62 
63 #if defined(LWIP_UNIX_LINUX) || defined(LWIP_UNIX_HURD) || defined(LWIP_UNIX_KFREEBSD)
64 #define LWIP_ERRNO_STDINCLUDE	1
65 #endif
66 
67 extern unsigned int lwip_port_rand(void);
68 #define LWIP_RAND() (lwip_port_rand())
69 
70 /* different handling for unit test, normally not needed */
71 #ifdef LWIP_NOASSERT_ON_ERROR
72 #define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
73   handler;}} while(0)
74 #endif
75 
76 #if defined(LWIP_UNIX_ANDROID) && defined(FD_SET)
77 typedef __kernel_fd_set fd_set;
78 #endif
79 
80 #if defined(LWIP_UNIX_MACH)
81 /* sys/types.h and signal.h bring in Darwin byte order macros. pull the
82    header here and disable LwIP's version so that apps still can get
83    the macros via LwIP headers and use system headers */
84 #include <sys/types.h>
85 #define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS
86 #endif
87 
88 struct sio_status_s;
89 typedef struct sio_status_s sio_status_t;
90 #define sio_fd_t sio_status_t*
91 #define __sio_fd_t_defined
92 
93 typedef unsigned int sys_prot_t;
94 
95 #ifdef __cplusplus
96 }
97 #endif
98 
99 #endif /* LWIP_ARCH_CC_H */
100