2 This file is part of GNUnet.
3 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2012 GNUnet e.V.
5 GNUnet is free software: you can redistribute it and/or modify it
6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Affero General Public License for more details.
15 You should have received a copy of the GNU Affero General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
21 * @author Christian Grothoff
24 * Plaform specific includes and defines.
26 * This file should never be included by installed
27 * header files (those starting with "gnunet_").
32 #ifndef HAVE_USED_CONFIG_H
33 #define HAVE_USED_CONFIG_H
35 #include "gnunet_config.h"
40 #define BREAKPOINT asm("int $3;");
41 #define GNUNET_SIGCHLD 17
44 #define GNUNET_SIGCHLD SIGCHLD
47 #ifdef HAVE_SYS_TYPES_H
48 #include <sys/types.h>
52 * These may be expensive, but good for debugging...
54 #define ALLOW_EXTRA_CHECKS GNUNET_YES
57 * For strptime (glibc2 needs this).
60 #define _XOPEN_SOURCE 499
67 /* configuration options */
69 #define VERBOSE_STATS 0
72 #include <sys/reent.h>
77 #define FD_SETSIZE 1024
84 #include <sys/socket.h>
87 #include <netinet/in.h>
89 #if HAVE_NETINET_IN_SYSTM_H
90 #include <netinet/in_systm.h>
93 #include <netinet/ip.h> /* superset of previous */
95 #include <arpa/inet.h>
96 #include <netinet/tcp.h>
98 #include <sys/ioctl.h>
116 #include <malloc.h> /* for alloca(), on other OSes it's in stdlib.h */
119 #include <malloc.h> /* for mallinfo on GNU */
122 #include <unistd.h> /* KLB_FIX */
124 #include <sys/stat.h>
125 #include <sys/types.h>
127 #include <dirent.h> /* KLB_FIX */
132 #include <sys/param.h>
134 #if TIME_WITH_SYS_TIME
135 #include <sys/time.h>
139 #include <sys/time.h>
149 #include <semaphore.h>
153 #include <semaphore.h>
156 #if defined(LINUX) || defined(GNU)
160 #include <sys/sockio.h>
161 #include <sys/filio.h>
162 #include <sys/loadavg.h>
163 #include <semaphore.h>
169 #include <sys/ucred.h>
173 #include <cygwin/if.h>
186 #if HAVE_SYS_RESOURCE_H
187 #include <sys/resource.h>
193 #if HAVE_SYS_ENDIAN_H
194 #include <sys/endian.h>
200 #ifndef FRAMEWORK_BUILD
203 * GNU gettext support macro.
205 #define _(String) dgettext("gnunet",String)
206 #define LIBEXTRACTOR_GETTEXT_DOMAIN "libextractor"
208 #include "libintlemu.h"
209 #define _(String) dgettext("org.gnunet.gnunet",String)
210 #define LIBEXTRACTOR_GETTEXT_DOMAIN "org.gnunet.libextractor"
214 #define SIOCGIFCONF _IOW('s', 100, struct ifconf) /* get if list */
215 #define SIOCGIFFLAGS _IOW('s', 101, struct ifreq) /* Get if flags */
216 #define SIOCGIFADDR _IOW('s', 102, struct ifreq) /* Get if addr */
220 #include <sys/mman.h>
224 #define __BYTE_ORDER BYTE_ORDER
225 #define __BIG_ENDIAN BIG_ENDIAN
229 #define __BYTE_ORDER BYTE_ORDER
230 #define __BIG_ENDIAN BIG_ENDIAN
231 /* not available on darwin, override configure */
239 atoll (const char *nptr);
243 #include "langinfo.h"
247 #define SIZE_MAX ((size_t)(-1))
251 #define O_LARGEFILE 0
255 * AI_NUMERICSERV not defined in windows. Then we just do without.
257 #ifndef AI_NUMERICSERV
258 #define AI_NUMERICSERV 0
262 #if defined(__sparc__)
263 #define MAKE_UNALIGNED(val) ({ __typeof__((val)) __tmp; memmove(&__tmp, &(val), sizeof((val))); __tmp; })
265 #define MAKE_UNALIGNED(val) val
269 #define FDTYPE HANDLE
270 #define SOCKTYPE SOCKET
277 * The termination signal
279 #define GNUNET_TERM_SIG SIGTERM