1 /* 2 * Copyright (c) 2001, Swedish Institute of Computer Science. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the Institute nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * This file is part of the lwIP TCP/IP stack. 30 * 31 * Author: Adam Dunkels <adam@sics.se> 32 * 33 */ 34 #ifndef __ARCH_CC_H__ 35 #define __ARCH_CC_H__ 36 37 #include <stdint.h> 38 #include <errno.h> 39 #include <assert.h> 40 #include <stdio.h> 41 42 #include "arch/sys_arch.h" 43 44 #ifndef BYTE_ORDER 45 #define BYTE_ORDER LITTLE_ENDIAN 46 #endif // BYTE_ORDER 47 48 #ifndef CONFIG_LWIP_ESP_LWIP_ASSERT 49 #define LWIP_NOASSERT 1 50 #endif 51 52 typedef uint8_t u8_t; 53 typedef int8_t s8_t; 54 typedef uint16_t u16_t; 55 typedef int16_t s16_t; 56 typedef uint32_t u32_t; 57 typedef int32_t s32_t; 58 59 60 typedef int sys_prot_t; 61 62 #define S16_F "d" 63 #define U16_F "d" 64 #define X16_F "x" 65 66 #define S32_F "d" 67 #define U32_F "u" 68 #define X32_F "x" 69 70 #define PACK_STRUCT_FIELD(x) x 71 #define PACK_STRUCT_STRUCT __attribute__((packed)) 72 #define PACK_STRUCT_BEGIN 73 #define PACK_STRUCT_END 74 75 #include <stdio.h> 76 77 #define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0) 78 79 #ifdef NDEBUG 80 81 #define LWIP_NOASSERT 1 82 83 #else // Assertions enabled 84 85 #if CONFIG_OPTIMIZATION_ASSERTIONS_SILENT 86 #define LWIP_PLATFORM_ASSERT(message) abort() 87 #else 88 // __assert_func is the assertion failure handler from newlib, defined in assert.h 89 #define LWIP_PLATFORM_ASSERT(message) __assert_func(__FILE__, __LINE__, __ASSERT_FUNC, message) 90 #endif 91 92 // If assertions are on, the default LWIP_ERROR handler behaviour is to 93 // abort w/ an assertion failure. Don't do this, instead just print the error (if LWIP_DEBUG is set) 94 // and run the handler (same as the LWIP_ERROR behaviour if LWIP_NOASSERT is set). 95 #ifdef LWIP_DEBUG 96 #define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ 97 puts(message); handler;}} while(0) 98 #else 99 // If LWIP_DEBUG is not set, return the error silently (default LWIP behaviour, also.) 100 #define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ 101 handler;}} while(0) 102 #endif // LWIP_DEBUG 103 104 #endif /* NDEBUG */ 105 106 107 #endif /* __ARCH_CC_H__ */ 108