Free (GPLv2) TCP/IP stack developed by TASS Belgium
Dependents: lpc1768-picotcp-demo ZeroMQ_PicoTCP_Publisher_demo TCPSocket_HelloWorld_PicoTCP Pico_TCP_UDP_Test ... more
pico_config.h
00001 /********************************************************************* 00002 PicoTCP. Copyright (c) 2012-2015 Altran Intelligent Systems. Some rights reserved. 00003 See LICENSE and COPYING for usage. 00004 00005 *********************************************************************/ 00006 #include "pico_defines.h" 00007 #ifndef INCLUDE_PICO_CONFIG 00008 #define INCLUDE_PICO_CONFIG 00009 #ifndef __KERNEL__ 00010 #include <stdint.h> 00011 #include <stdlib.h> 00012 #include <string.h> 00013 #else 00014 #include <linux/types.h> 00015 #endif 00016 00017 #if defined __IAR_SYSTEMS_ICC__ || defined ATOP 00018 # define PACKED_STRUCT_DEF __packed struct 00019 # define PEDANTIC_STRUCT_DEF __packed struct 00020 # define PACKED_UNION_DEF __packed union 00021 # define WEAK 00022 #elif defined __WATCOMC__ 00023 # define PACKED_STRUCT_DEF _Packed struct 00024 # define PEDANTIC_STRUCT_DEF struct 00025 # define PACKED_UNION_DEF _Packed union 00026 # define WEAK 00027 #else 00028 # define PACKED_STRUCT_DEF struct __attribute__((packed)) 00029 # define PEDANTIC_STRUCT_DEF struct 00030 # define PACKED_UNION_DEF union /* Sane compilers do not require packed unions */ 00031 # define WEAK __attribute__((weak)) 00032 # ifdef __GNUC__ 00033 # define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) 00034 # if ((GCC_VERSION >= 40800)) 00035 # define BYTESWAP_GCC 00036 # endif 00037 # endif 00038 #endif 00039 00040 #ifdef PICO_BIGENDIAN 00041 00042 # define PICO_IDETH_IPV4 0x0800 00043 # define PICO_IDETH_ARP 0x0806 00044 # define PICO_IDETH_IPV6 0x86DD 00045 00046 # define PICO_ARP_REQUEST 0x0001 00047 # define PICO_ARP_REPLY 0x0002 00048 # define PICO_ARP_HTYPE_ETH 0x0001 00049 00050 #define short_be(x) (x) 00051 #define long_be(x) (x) 00052 #define long_long_be(x) (x) 00053 00054 static inline uint16_t short_from(void *_p) 00055 { 00056 unsigned char *p = (unsigned char *)_p; 00057 uint16_t r, p0, p1; 00058 p0 = p[0]; 00059 p1 = p[1]; 00060 r = (p0 << 8) + p1; 00061 return r; 00062 } 00063 00064 static inline uint32_t long_from(void *_p) 00065 { 00066 unsigned char *p = (unsigned char *)_p; 00067 uint32_t r, p0, p1, p2, p3; 00068 p0 = p[0]; 00069 p1 = p[1]; 00070 p2 = p[2]; 00071 p3 = p[3]; 00072 r = (p0 << 24) + (p1 << 16) + (p2 << 8) + p3; 00073 return r; 00074 } 00075 00076 #else 00077 00078 static inline uint16_t short_from(void *_p) 00079 { 00080 unsigned char *p = (unsigned char *)_p; 00081 uint16_t r, _p0, _p1; 00082 _p0 = p[0]; 00083 _p1 = p[1]; 00084 r = (uint16_t)((_p1 << 8u) + _p0); 00085 return r; 00086 } 00087 00088 static inline uint32_t long_from(void *_p) 00089 { 00090 unsigned char *p = (unsigned char *)_p; 00091 uint32_t r, _p0, _p1, _p2, _p3; 00092 _p0 = p[0]; 00093 _p1 = p[1]; 00094 _p2 = p[2]; 00095 _p3 = p[3]; 00096 r = (_p3 << 24) + (_p2 << 16) + (_p1 << 8) + _p0; 00097 return r; 00098 } 00099 00100 00101 # define PICO_IDETH_IPV4 0x0008 00102 # define PICO_IDETH_ARP 0x0608 00103 # define PICO_IDETH_IPV6 0xDD86 00104 00105 # define PICO_ARP_REQUEST 0x0100 00106 # define PICO_ARP_REPLY 0x0200 00107 # define PICO_ARP_HTYPE_ETH 0x0100 00108 00109 # ifndef BYTESWAP_GCC 00110 static inline uint16_t short_be(uint16_t le) 00111 { 00112 return (uint16_t)(((le & 0xFFu) << 8) | ((le >> 8u) & 0xFFu)); 00113 } 00114 00115 static inline uint32_t long_be(uint32_t le) 00116 { 00117 uint8_t *b = (uint8_t *)≤ 00118 uint32_t be = 0; 00119 uint32_t b0, b1, b2; 00120 b0 = b[0]; 00121 b1 = b[1]; 00122 b2 = b[2]; 00123 be = b[3] + (b2 << 8) + (b1 << 16) + (b0 << 24); 00124 return be; 00125 } 00126 static inline uint64_t long_long_be(uint64_t le) 00127 { 00128 uint8_t *b = (uint8_t *)≤ 00129 uint64_t be = 0; 00130 uint64_t b0, b1, b2, b3, b4, b5, b6; 00131 b0 = b[0]; 00132 b1 = b[1]; 00133 b2 = b[2]; 00134 b3 = b[3]; 00135 b4 = b[4]; 00136 b5 = b[5]; 00137 b6 = b[6]; 00138 be = b[7] + (b6 << 8) + (b5 << 16) + (b4 << 24) + (b3 << 32) + (b2 << 40) + (b1 << 48) + (b0 << 56); 00139 return be; 00140 } 00141 # else 00142 /* 00143 extern uint32_t __builtin_bswap32(uint32_t); 00144 extern uint16_t __builtin_bswap16(uint16_t); 00145 extern uint64_t __builtin_bswap64(uint64_t); 00146 */ 00147 00148 static inline uint32_t long_be(uint32_t le) 00149 { 00150 return (uint32_t)__builtin_bswap32(le); 00151 } 00152 00153 static inline uint16_t short_be(uint16_t le) 00154 { 00155 return (uint16_t)__builtin_bswap16(le); 00156 } 00157 00158 static inline uint64_t long_long_be(uint64_t le) 00159 { 00160 return (uint64_t)__builtin_bswap64(le); 00161 } 00162 00163 # endif /* BYTESWAP_GCC */ 00164 #endif 00165 00166 00167 /* Mockables */ 00168 #if defined UNIT_TEST 00169 # define MOCKABLE __attribute__((weak)) 00170 #else 00171 # define MOCKABLE 00172 #endif 00173 00174 #include "pico_constants.h" 00175 #include "pico_mm.h" 00176 00177 #define IGNORE_PARAMETER(x) ((void)x) 00178 00179 #define PICO_MEM_DEFAULT_SLAB_SIZE 1600 00180 #define PICO_MEM_PAGE_SIZE 4096 00181 #define PICO_MEM_PAGE_LIFETIME 100 00182 #define PICO_MIN_HEAP_SIZE 600 00183 #define PICO_MIN_SLAB_SIZE 1200 00184 #define PICO_MAX_SLAB_SIZE 1600 00185 #define PICO_MEM_MINIMUM_OBJECT_SIZE 4 00186 00187 00188 /*** *** *** *** *** *** *** 00189 *** PLATFORM SPECIFIC *** 00190 *** *** *** *** *** *** ***/ 00191 #if defined PICO_PORT_CUSTOM 00192 # include "pico_port.h" 00193 #elif defined CORTEX_M4_HARDFLOAT 00194 # include "arch/pico_cortex_m.h" 00195 #elif defined CORTEX_M4_SOFTFLOAT 00196 # include "arch/pico_cortex_m.h" 00197 #elif defined CORTEX_M3 00198 # include "arch/pico_cortex_m.h" 00199 #elif defined PIC24 00200 # include "arch/pico_pic24.h" 00201 #elif defined MSP430 00202 # include "arch/pico_msp430.h" 00203 #elif defined MBED_TEST 00204 # include "arch/pico_mbed.h" 00205 #elif defined AVR 00206 # include "arch/pico_avr.h" 00207 #elif defined ARM9 00208 # include "arch/pico_arm9.h" 00209 #elif defined ESP8266 00210 # include "arch/pico_esp8266.h" 00211 #elif defined MT7681 00212 # include "arch/pico_generic_gcc.h" 00213 #elif defined FAULTY 00214 # include "../test/pico_faulty.h" 00215 #elif defined ARCHNONE 00216 # include "arch/pico_none.h" 00217 #elif defined GENERIC 00218 # include "arch/pico_generic_gcc.h" 00219 #elif defined __KERNEL__ 00220 # include "arch/pico_linux.h" 00221 /* #elif defined ... */ 00222 #else 00223 # include "arch/pico_posix.h" 00224 #endif 00225 00226 #ifdef PICO_SUPPORT_MM 00227 #define PICO_ZALLOC(x) pico_mem_zalloc(x) 00228 #define PICO_FREE(x) pico_mem_free(x) 00229 #else 00230 #define PICO_ZALLOC(x) pico_zalloc(x) 00231 #define PICO_FREE(x) pico_free(x) 00232 #endif /* PICO_SUPPORT_MM */ 00233 00234 #endif
Generated on Tue Jul 12 2022 15:59:21 by 1.7.2