Annotation of libelwix/inc/defs.h, revision 1.1
1.1 ! misho 1: /*************************************************************************
! 2: * (C) 2013 AITNET ltd - Sofia/Bulgaria - <misho@aitnet.org>
! 3: * by Michael Pounov <misho@elwix.org>
! 4: *
! 5: * $Author: misho $
! 6: * $Id: defs.h,v 1.8 2012/08/02 00:47:46 misho Exp $
! 7: *
! 8: **************************************************************************
! 9: The ELWIX and AITNET software is distributed under the following
! 10: terms:
! 11:
! 12: All of the documentation and software included in the ELWIX and AITNET
! 13: Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
! 14:
! 15: Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
! 16: by Michael Pounov <misho@elwix.org>. All rights reserved.
! 17:
! 18: Redistribution and use in source and binary forms, with or without
! 19: modification, are permitted provided that the following conditions
! 20: are met:
! 21: 1. Redistributions of source code must retain the above copyright
! 22: notice, this list of conditions and the following disclaimer.
! 23: 2. Redistributions in binary form must reproduce the above copyright
! 24: notice, this list of conditions and the following disclaimer in the
! 25: documentation and/or other materials provided with the distribution.
! 26: 3. All advertising materials mentioning features or use of this software
! 27: must display the following acknowledgement:
! 28: This product includes software developed by Michael Pounov <misho@elwix.org>
! 29: ELWIX - Embedded LightWeight unIX and its contributors.
! 30: 4. Neither the name of AITNET nor the names of its contributors
! 31: may be used to endorse or promote products derived from this software
! 32: without specific prior written permission.
! 33:
! 34: THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND
! 35: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 36: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 37: ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
! 38: FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 39: DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 40: OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 41: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 42: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 43: OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 44: SUCH DAMAGE.
! 45: */
! 46: #ifndef __DEFS_H
! 47: #define __DEFS_H
! 48:
! 49:
! 50: /* memory pool helper macros */
! 51:
! 52: #define MEM_MAGIC_START 0xAAAAAAAA
! 53: #define MEM_MAGIC_STOP 0x55555555
! 54: #define MEM_ALLOC_MAX 0xFFFFFFF3
! 55:
! 56: #define MEM_MIN_BUCKET 4
! 57: #define MEM_MAX_BUCKET 32
! 58:
! 59: #define MEM_PTR2LINT(x) ((u_int) ((uintptr_t)(x)) & 0xFFFFFFFF)
! 60: #define MEM_PTR2HINT(x) ((u_int) (sizeof(uintptr_t) == sizeof(u_int)) ? 0 : \
! 61: (((uintptr_t)(x)) >> 32) & 0xFFFFFFFF)
! 62: #define MEM_INT2PTR(x) ((void*) ((uintptr_t)(x)))
! 63:
! 64: #define MEM_BADADDR(x) (MEM_PTR2LINT(x) < 0x00001000U || MEM_PTR2LINT(x) > 0xFFFFF000U)
! 65: #define MEM_CORRUPT(x) (!(x) || ((u_int*)(x))[-1] != MEM_MAGIC_START || \
! 66: ((u_int*)(x))[((u_int*)(x))[-2]] != MEM_MAGIC_STOP)
! 67:
! 68: #define mem_data(x, _type) (assert((x)), (_type) ((x)->alloc_mem ? ((x)->alloc_mem + 2) : NULL))
! 69: #define mem_len(x) (assert((x)), (x)->alloc_mem ? *(x)->alloc_mem : 0)
! 70: #define mem_size(x) (mem_len((x)) * sizeof(u_int))
! 71:
! 72:
! 73: /* CRC helpers */
! 74:
! 75: #define MAX_FLETCHER16_DIGEST 21
! 76: #define MAX_FLETCHER_DIGEST 360
! 77: #define MAX_ADLER_DIGEST 5552
! 78:
! 79: #define POLY_CRC32 0xC0A0A0D5
! 80: #define INIT_BERNSTEIN 0x1505
! 81: #define INIT_FNV1 0x811c9dc5
! 82: #define POLY_FNV1 0x1000193
! 83: #define INIT_JENKINS32 0xDEADBEEF
! 84:
! 85: #define ROT32(x, k) (((x) << (k)) | ((x) >> (32 - (k))))
! 86: #define MIX32(a, b, c) \
! 87: do { \
! 88: a -= c; a ^= ROT32(c, 4); c += b; \
! 89: b -= a; b ^= ROT32(a, 6); a += c; \
! 90: c -= b; c ^= ROT32(b, 8); b += a; \
! 91: a -= c; a ^= ROT32(c, 16); c += b; \
! 92: b -= a; b ^= ROT32(a, 19); a += c; \
! 93: c -= b; c ^= ROT32(b, 4); b += a; \
! 94: } while (0)
! 95: #define FINAL32(a, b, c) \
! 96: do { \
! 97: c ^= b; c -= ROT32(b, 14); \
! 98: a ^= c; a -= ROT32(c, 11); \
! 99: b ^= a; b -= ROT32(a, 25); \
! 100: c ^= b; c -= ROT32(b, 16); \
! 101: a ^= c; a -= ROT32(c, 4); \
! 102: b ^= a; b -= ROT32(a, 14); \
! 103: c ^= b; c -= ROT32(b, 24); \
! 104: } while (0)
! 105:
! 106:
! 107: #define LOGERR { \
! 108: elwix_Errno = errno; \
! 109: strlcpy(elwix_Error, strerror(errno), sizeof elwix_Error); \
! 110: }
! 111:
! 112: extern mpool_t *elwix_mpool;
! 113: extern int use_mm;
! 114: extern const char elwix_Prog[STRSIZ];
! 115:
! 116: extern int elwix_Errno;
! 117: extern char elwix_Error[STRSIZ];
! 118:
! 119: inline void elwix_SetErr(int eno, char *estr, ...);
! 120:
! 121:
! 122: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>