Changeset 3526 for trunk/kProfile/kDbgBase.h
- Timestamp:
- Aug 20, 2007, 12:46:14 AM (18 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/kProfile/kDbgBase.h
r3525 r3526 2 2 /** @file 3 3 * 4 * k Ldr - The Dynamic Loader, Base Definitions and Typedefs.4 * kDbg - The Debug Info Reader, Base Definitions and Typedefs. 5 5 * 6 6 * Copyright (c) 2006-2007 knut st. osmundsen <bird@anduin.net> 7 7 * 8 8 * 9 * This file is part of k Ldr.9 * This file is part of kDbg. 10 10 * 11 * k Ldris free software; you can redistribute it and/or modify11 * kDbg is free software; you can redistribute it and/or modify 12 12 * it under the terms of the GNU General Public License as published by 13 13 * the Free Software Foundation; either version 2 of the License, or 14 14 * (at your option) any later version. 15 15 * 16 * k Ldris distributed in the hope that it will be useful,16 * kDbg is distributed in the hope that it will be useful, 17 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the … … 20 20 * 21 21 * You should have received a copy of the GNU General Public License 22 * along with k Ldr; if not, write to the Free Software22 * along with kDbg; if not, write to the Free Software 23 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 24 * 25 25 */ 26 26 27 #ifndef ___k LdrBase_h___28 #define ___k LdrBase_h___27 #ifndef ___kDbgBase_h___ 28 #define ___kDbgBase_h___ 29 29 30 30 31 /** @defgroup grp_k LdrBase kLdrBase - Base Definitions And Typedefs31 /** @defgroup grp_kDbgBase kDbgBase - Base Definitions And Typedefs 32 32 * @{ */ 33 33 34 34 /* 35 * kLdr depend on size_t, [u]intNN_t, [u]intptr_t and some related constants. 36 * If KLDR_ALREADY_INCLUDED_STD_TYPES is defined, these has already been defined. 35 * kDbg depend on size_t, [u]intNN_t, [u]intptr_t and some related constants. 36 * If KDBG_ALREADY_INCLUDED_STD_TYPES or KCOMMON_ALREADY_INCLUDED_STD_TYPES 37 * is defined, these has already been defined. 37 38 */ 38 #ifndef KLDR_ALREADY_INCLUDED_STD_TYPES 39 #if !defined(KDBG_ALREADY_INCLUDED_STD_TYPES) && !defined(KCOMMON_ALREADY_INCLUDED_STD_TYPES) 40 # define KCOMMON_ALREADY_INCLUDED_STD_TYPES 1 39 41 # include <sys/types.h> 40 42 # include <stddef.h> … … 73 75 # include <stdint.h> 74 76 # endif 75 #endif /* !K LDR_ALREADY_INCLUDED_STD_TYPES */77 #endif /* !KDBG_ALREADY_INCLUDED_STD_TYPES && !KCOMMON_ALREADY_INCLUDED_STD_TYPES */ 76 78 77 79 78 80 /** Get the minimum of two values. */ 79 #define K LDR_MIN(a, b) ((a) <= (b) ? (a) : (b))81 #define KDBG_MIN(a, b) ((a) <= (b) ? (a) : (b)) 80 82 /** Get the maximum of two values. */ 81 #define K LDR_MAX(a, b) ((a) >= (b) ? (a) : (b))83 #define KDBG_MAX(a, b) ((a) >= (b) ? (a) : (b)) 82 84 /** Calculate the offset of a structure member. */ 83 #define K LDR_OFFSETOF(strct, memb) ( (size_t)( &((strct *)0)->memb ) )85 #define KDBG_OFFSETOF(strct, memb) ( (size_t)( &((strct *)0)->memb ) ) 84 86 /** Align a size_t value. */ 85 #define K LDR_ALIGN_Z(val, align) ( ((val) + ((align) - 1)) & ~(size_t)((align) - 1) )87 #define KDBG_ALIGN_Z(val, align) ( ((val) + ((align) - 1)) & ~(size_t)((align) - 1) ) 86 88 /** Align a void * value. */ 87 #define K LDR_ALIGN_P(pv, align) ( (void *)( ((uintptr_t)(pv) + ((align) - 1)) & ~(uintptr_t)((align) - 1) ) )89 #define KDBG_ALIGN_P(pv, align) ( (void *)( ((uintptr_t)(pv) + ((align) - 1)) & ~(uintptr_t)((align) - 1) ) ) 88 90 /** Align a size_t value. */ 89 #define K LDR_ALIGN_ADDR(val, align) ( ((val) + ((align) - 1)) & ~(KLDRADDR)((align) - 1) )91 #define KDBG_ALIGN_ADDR(val, align) ( ((val) + ((align) - 1)) & ~(KLDRADDR)((align) - 1) ) 90 92 /** Number of elements in an array. */ 91 #define K LDR_ELEMENTS(a) ( sizeof(a) / sizeof((a)[0]) )93 #define KDBG_ELEMENTS(a) ( sizeof(a) / sizeof((a)[0]) ) 92 94 93 95 94 /** @def K LDR_LITTLE_ENDIAN95 * The k Ldrbuild is for a little endian target. */96 /** @def K LDR_BIG_ENDIAN97 * The k Ldrbuild is for a big endian target. */98 #if !defined(K LDR_LITTLE_ENDIAN) && !defined(KLDR_BIG_ENDIAN)99 # define K LDR_LITTLE_ENDIAN96 /** @def KDBG_LITTLE_ENDIAN 97 * The kDbg build is for a little endian target. */ 98 /** @def KDBG_BIG_ENDIAN 99 * The kDbg build is for a big endian target. */ 100 #if !defined(KDBG_LITTLE_ENDIAN) && !defined(KDBG_BIG_ENDIAN) 101 # define KDBG_LITTLE_ENDIAN 100 102 #endif 101 103 #ifdef __DOXYGEN__ 102 # define K LDR_BIG_ENDIAN104 # define KDBG_BIG_ENDIAN 103 105 #endif 104 106 … … 107 109 * @{ */ 108 110 109 /** @def K LDR_E2E_U16111 /** @def KDBG_E2E_U16 110 112 * Convert the endian of an unsigned 16-bit value. */ 111 # define K LDR_E2E_U16(u16) ( (uint16_t) (((u16) >> 8) | ((u16) << 8)) )112 /** @def K LDR_E2E_U32113 # define KDBG_E2E_U16(u16) ( (uint16_t) (((u16) >> 8) | ((u16) << 8)) ) 114 /** @def KDBG_E2E_U32 113 115 * Convert the endian of an unsigned 32-bit value. */ 114 # define K LDR_E2E_U32(u32) ( ( ((u32) & UINT32_C(0xff000000)) >> 24 ) \116 # define KDBG_E2E_U32(u32) ( ( ((u32) & UINT32_C(0xff000000)) >> 24 ) \ 115 117 | ( ((u32) & UINT32_C(0x00ff0000)) >> 8 ) \ 116 118 | ( ((u32) & UINT32_C(0x0000ff00)) << 8 ) \ 117 119 | ( ((u32) & UINT32_C(0x000000ff)) << 24 ) \ 118 120 ) 119 /** @def K LDR_E2E_U64121 /** @def KDBG_E2E_U64 120 122 * Convert the endian of an unsigned 64-bit value. */ 121 # define K LDR_E2E_U64(u64) ( ( ((u64) & UINT64_C(0xff00000000000000)) >> 56 ) \123 # define KDBG_E2E_U64(u64) ( ( ((u64) & UINT64_C(0xff00000000000000)) >> 56 ) \ 122 124 | ( ((u64) & UINT64_C(0x00ff000000000000)) >> 40 ) \ 123 125 | ( ((u64) & UINT64_C(0x0000ff0000000000)) >> 24 ) \ … … 129 131 ) 130 132 131 /** @def K LDR_LE2H_U16133 /** @def KDBG_LE2H_U16 132 134 * Unsigned 16-bit little-endian to host endian. */ 133 /** @def K LDR_LE2H_U32135 /** @def KDBG_LE2H_U32 134 136 * Unsigned 32-bit little-endian to host endian. */ 135 /** @def K LDR_LE2H_U64137 /** @def KDBG_LE2H_U64 136 138 * Unsigned 64-bit little-endian to host endian. */ 137 /** @def K LDR_BE2H_U16139 /** @def KDBG_BE2H_U16 138 140 * Unsigned 16-bit big-endian to host endian. */ 139 /** @def K LDR_BE2H_U32141 /** @def KDBG_BE2H_U32 140 142 * Unsigned 32-bit big-endian to host endian. */ 141 /** @def K LDR_BE2H_U64143 /** @def KDBG_BE2H_U64 142 144 * Unsigned 64-bit big-endian to host endian. */ 143 #ifdef K LDR_LITTLE_ENDIAN144 # define K LDR_LE2H_U16(u16) ((uint16_t)(u16))145 # define K LDR_LE2H_U32(u32) ((uint32_t)(u32))146 # define K LDR_LE2H_U64(u64) ((uint32_t)(u32))147 # define K LDR_BE2H_U16(u16) KLDR_E2E_U16(u16)148 # define K LDR_BE2H_U32(u32) KLDR_E2E_U32(u32)149 # define K LDR_BE2H_U64(u64) KLDR_E2E_U64(u64)150 #elif defined(K LDR_BIG_ENDIAN)151 # define K LDR_LE2H_U16(u16) KLDR_E2E_U16(u16)152 # define K LDR_LE2H_U32(u32) KLDR_E2E_U32(u32)153 # define K LDR_LE2H_U32(u64) KLDR_E2E_U64(u64)154 # define K LDR_BE2H_U16(u16) ((uint16_t)(u16))155 # define K LDR_BE2H_U32(u32) ((uint32_t)(u32))156 # define K LDR_BE2H_U64(u64) ((uint32_t)(u32))145 #ifdef KDBG_LITTLE_ENDIAN 146 # define KDBG_LE2H_U16(u16) ((uint16_t)(u16)) 147 # define KDBG_LE2H_U32(u32) ((uint32_t)(u32)) 148 # define KDBG_LE2H_U64(u64) ((uint32_t)(u32)) 149 # define KDBG_BE2H_U16(u16) KDBG_E2E_U16(u16) 150 # define KDBG_BE2H_U32(u32) KDBG_E2E_U32(u32) 151 # define KDBG_BE2H_U64(u64) KDBG_E2E_U64(u64) 152 #elif defined(KDBG_BIG_ENDIAN) 153 # define KDBG_LE2H_U16(u16) KDBG_E2E_U16(u16) 154 # define KDBG_LE2H_U32(u32) KDBG_E2E_U32(u32) 155 # define KDBG_LE2H_U32(u64) KDBG_E2E_U64(u64) 156 # define KDBG_BE2H_U16(u16) ((uint16_t)(u16)) 157 # define KDBG_BE2H_U32(u32) ((uint32_t)(u32)) 158 # define KDBG_BE2H_U64(u64) ((uint32_t)(u32)) 157 159 #else 158 # error "K LDR_BIG_ENDIAN or KLDR_LITTLE_ENDIAN is supposed to be defined."160 # error "KDBG_BIG_ENDIAN or KDBG_LITTLE_ENDIAN is supposed to be defined." 159 161 #endif 160 162
Note:
See TracChangeset
for help on using the changeset viewer.