Changeset 3541 for trunk/kStuff/include
- Timestamp:
- Aug 25, 2007, 5:46:14 AM (18 years ago)
- Location:
- trunk/kStuff/include/k
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/include/k/kDbg.h
r3540 r3541 41 41 /** The max symbol name length used by the debug reader. */ 42 42 #define KDBG_SYMBOL_MAX 384 43 44 /** @name kDbg Status codes45 * (Success is indicated by the value 0.)46 * @{ */47 #define KDBG_ERR_BASE 43000048 49 /** An API was given an invalid parameter. */50 #define KDBG_ERR_INVALID_PARAMETER (KDBG_ERR_BASE + 0)51 /** A pointer argument is not valid. */52 #define KDBG_ERR_INVALID_POINTER (KDBG_ERR_BASE + 1)53 /** A handle argument is not valid. */54 #define KDBG_ERR_INVALID_HANDLE (KDBG_ERR_BASE + 2)55 /** A parameter is out of range. */56 #define KDBG_ERR_OUT_OF_RANGE (KDBG_ERR_BASE + 3)57 /** Out of memory. */58 #define KDBG_ERR_NO_MEMORY (KDBG_ERR_BASE + 4)59 /** The specified file was not found. */60 #define KDBG_ERR_FILE_NOT_FOUND (KDBG_ERR_BASE + 5)61 /** Hit some unimplemented functionality - feel free to implement it :-) . */62 #define KDBG_ERR_NOT_IMPLEMENTED (KDBG_ERR_BASE + 6)63 /** Generic error. */64 #define KDBG_ERR_GENERAL_FAILURE (KDBG_ERR_BASE + 9)65 66 /** The (module) format isn't known to use. */67 #define KDBG_ERR_UNKOWN_FORMAT (KDBG_ERR_BASE + 10)68 /** The (module) format isn't supported by this kDbg build. */69 #define KDBG_ERR_FORMAT_NOT_SUPPORTED (KDBG_ERR_BASE + 11)70 /** A specified address or an address found in the debug info is invalid. */71 #define KDBG_ERR_INVALID_ADDRESS (KDBG_ERR_BASE + 12)72 /** The dbghelp.dll is too old or something like that. */73 #define KDBG_ERR_DBGHLP_VERSION_MISMATCH (KDBG_ERR_BASE + 13)74 /** Invalid executable format. */75 #define KDBG_ERR_BAD_EXE_FORMAT (KDBG_ERR_BASE + 14)76 77 /** @} */78 79 43 80 44 /** @name Special Segments … … 131 95 * 132 96 * @returns VINF_SUCCESS on success. 133 * @returns K DBG_ERR_INVALID_POINTER if a NULL pointer or an !KDBG_VALID_PTR() is passed in.97 * @returns KERR_INVALID_POINTER if a NULL pointer or an !KDBG_VALID_PTR() is passed in. 134 98 * 135 99 * @param pLine The line number to be freed. … … 199 163 * 200 164 * @returns VINF_SUCCESS on success. 201 * @returns K DBG_ERR_INVALID_POINTER if a NULL pointer or an !KDBG_VALID_PTR() is passed in.165 * @returns KERR_INVALID_POINTER if a NULL pointer or an !KDBG_VALID_PTR() is passed in. 202 166 * 203 167 * @param pSymbol The symbol to be freed. … … 206 170 207 171 172 /** Pointer to a kDbgHlp file structure (abstract). */ 173 typedef struct KDBGHLPFILE *PKDBGHLPFILE; 208 174 209 175 /** A debug module handle. */ 210 176 typedef struct KDBGMOD *PKDBGMOD; 177 178 /** 179 * The debug module method table. 180 */ 181 typedef struct KDBGMODOPS 182 { 183 /** The name of the reader. */ 184 const char *pszName; 185 186 /** Pointer to the next debug module readers. 187 * This is only used for dynamically registered readers. */ 188 struct KDBGMODOPS *pNext; 189 190 /** 191 * Tries to open the module. 192 * 193 * @returns 0 on success, KDBG_ERR on failure. 194 * @param pFile The file 195 * @param ppMod Where to store the module that's been opened. 196 * @param off The file offset of the debug info. This is 0 if there isn't 197 * any specfic debug info section and the reader should start 198 * looking for debug info at the start of the file. 199 * @param cb The size of the debug info in the file. INT64_MAX if we don't 200 * know or there isn't any particular debug info section in the file. 201 * @param pLdrMod The associated loader module. This can be NULL. 202 * 203 * @remark This is NULL for the builtin readers. 204 */ 205 int (*pfnOpen)(PKDBGMOD *ppMod, PKDBGHLPFILE pFile, KFOFF off, KFOFF cb, struct KLDRMOD *pLdrMod); 206 207 /** 208 * Closes the module. 209 * 210 * This should free all resources associated with the module 211 * except the pMod which is freed by the caller. 212 * 213 * @returns IPRT status code. 214 * @param pMod The module. 215 */ 216 int (*pfnClose)(PKDBGMOD pMod); 217 218 /** 219 * Gets a symbol by segment:offset. 220 * This will be approximated to the nearest symbol if there is no exact match. 221 * 222 * @returns 0 on success. KLDR_ERR_* on failure. 223 * @param pMod The module. 224 * @param iSegment The segment this offset is relative to. 225 * The -1 segment is special, it means that the addres is relative to 226 * the image base. The image base is where the first bit of the image 227 * is mapped during load. 228 * @param off The offset into the segment. 229 * @param pSym Where to store the symbol details. 230 */ 231 int (*pfnQuerySymbol)(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGSYMBOL pSym); 232 233 /** 234 * Gets a line number entry by segment:offset. 235 * This will be approximated to the nearest line number there is no exact match. 236 * 237 * @returns 0 on success. KLDR_ERR_* on failure. 238 * @param pMod The module. 239 * @param iSegment The segment this offset is relative to. 240 * The -1 segment is special, it means that the addres is relative to 241 * the image base. The image base is where the first bit of the image 242 * is mapped during load. 243 * @param off The offset into the segment. 244 * @param pLine Where to store the line number details. 245 */ 246 int (*pfnQueryLine)(PKDBGMOD pMod, KI32 iSegment, KDBGADDR uOffset, PKDBGLINE pLine); 247 248 /** This is just to make sure you've initialized all the fields. 249 * Must be identical to pszName. */ 250 const char *pszName2; 251 } KDBGMODOPS; 252 /** Pointer to a module method table. */ 253 typedef KDBGMODOPS *PKDBGMODOPS; 254 /** Pointer to a const module method table. */ 255 typedef const KDBGMODOPS *PCKDBGMODOPS; 256 257 /** 258 * Register a debug module reader with the kDbgModule component. 259 * 260 * Dynamically registered readers are kept in FIFO order, and external 261 * readers will be tried after the builtin ones. 262 * 263 * @returns 0 on success. 264 * @returns KERR_INVALID_POINTER if pOps is missing bits. 265 * @returns KERR_INVALID_PARAMETER if pOps is already in the list. 266 * @param pOps The reader method table, kDbg takes owner ship of 267 * this. This must be writeable as the pNext pointer 268 * will be update. It must also stick around for as 269 * long as kDbg is in use. 270 */ 271 KDBG_DECL(int) kDbgModuleRegisterReader(PKDBGMODOPS pOps) 272 ; 273 274 275 276 /** 277 * Internal representation of a debug module. 278 */ 279 typedef struct KDBGMOD 280 { 281 /** Magic value (KDBGMOD_MAGIC). */ 282 KI32 u32Magic; 283 /** The handle to the module. (If closed, this is NIL_RTFILE.) */ 284 PKDBGHLPFILE pFile; 285 /** Pointer to the method table. */ 286 PCKDBGMODOPS pOps; 287 } KDBGMOD; 288 289 290 /** The magic value for the debug module structure. (Some dead english writer) */ 291 #define KDBGMOD_MAGIC 0x19200501 292 /** The magic value of a dead module structure. */ 293 #define KDBGMOD_MAGIC_DEAD 0x19991231 294 211 295 212 296 /** … … 240 324 * @param pSym Where to store the symbol details. 241 325 */ 242 KDBG_DECL(int) kDbgModuleQuerySymbol(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PKDBGSYMBOL pSym);326 KDBG_DECL(int) kDbgModuleQuerySymbol(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGSYMBOL pSym); 243 327 244 328 /** … … 256 340 * Free the returned symbol using kDbgSymbolFree(). 257 341 */ 258 KDBG_DECL(int) kDbgModuleQuerySymbolA(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PPKDBGSYMBOL ppSym);342 KDBG_DECL(int) kDbgModuleQuerySymbolA(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PPKDBGSYMBOL ppSym); 259 343 260 344 /** … … 271 355 * @param pLine Where to store the line number details. 272 356 */ 273 KDBG_DECL(int) kDbgModuleQueryLine(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PKDBGLINE pLine);357 KDBG_DECL(int) kDbgModuleQueryLine(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PKDBGLINE pLine); 274 358 275 359 /** … … 287 371 * Free the returned line number using kDbgLineFree(). 288 372 */ 289 KDBG_DECL(int) kDbgModuleQueryLineA(PKDBGMOD pMod, int32_tiSegment, KDBGADDR off, PPKDBGLINE ppLine);373 KDBG_DECL(int) kDbgModuleQueryLineA(PKDBGMOD pMod, KI32 iSegment, KDBGADDR off, PPKDBGLINE ppLine); 290 374 291 375 -
trunk/kStuff/include/k/kDefs.h
r3538 r3541 371 371 #define K_ALIGN_P(pv, align) ( (void *)( ((KUPTR)(pv) + ((align) - 1)) & ~(KUPTR)((align) - 1) ) ) 372 372 /** Number of elements in an array. */ 373 #define K_ELEMENTS(a) ( sizeof(a) / sizeof((a)[ 373 #define K_ELEMENTS(a) ( sizeof(a) / sizeof((a)[0]) ) 374 374 /** Checks if the specified pointer is a valid address or not. */ 375 375 #define K_VALID_PTR(ptr) ( (KUPTR)(ptr) + 0x1000U >= 0x2000U ) -
trunk/kStuff/include/k/kTypes.h
r3538 r3541 7 7 * 8 8 * 9 * This file is part of k *.10 * 11 * k *is free software; you can redistribute it and/or modify9 * This file is part of kStuff. 10 * 11 * kStuff is free software; you can redistribute it and/or modify 12 12 * it under the terms of the GNU Lesser General Public License as published 13 13 * by the Free Software Foundation; either version 2 of the License, or 14 14 * (at your option) any later version. 15 15 * 16 * k *is distributed in the hope that it will be useful,16 * kStuff 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 Lesser General Public License 22 * along with k *; if not, write to the Free Software22 * along with kStuff; if not, write to the Free Software 23 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 24 * … … 33 33 * @{ 34 34 */ 35 36 35 37 36 /** @typedef KI64 … … 45 44 * 64-bit unsigned integer constant. 46 45 * @param c The constant value. */ 46 /** @def KI64_PRI 47 * 64-bit signed integer printf format. */ 48 /** @def KU64_PRI 49 * 64-bit unsigned integer printf format. */ 50 /** @def KX64_PRI 51 * 64-bit signed and unsigned integer hexadecimal printf format. */ 47 52 48 53 /** @typedef KI32 … … 56 61 * 32-bit unsigned integer constant. 57 62 * @param c The constant value. */ 63 /** @def KI32_PRI 64 * 32-bit signed integer printf format. */ 65 /** @def KU32_PRI 66 * 32-bit unsigned integer printf format. */ 67 /** @def KX32_PRI 68 * 32-bit signed and unsigned integer hexadecimal printf format. */ 58 69 59 70 /** @typedef KI16 … … 67 78 * 16-bit unsigned integer constant. 68 79 * @param c The value. */ 80 /** @def KI16_PRI 81 * 16-bit signed integer printf format. */ 82 /** @def KU16_PRI 83 * 16-bit unsigned integer printf format. */ 84 /** @def KX16_PRI 85 * 16-bit signed and unsigned integer hexadecimal printf format. */ 69 86 70 87 /** @typedef KI8 … … 78 95 * 8-bit unsigned integer constant. 79 96 * @param c The constant value. */ 97 /** @def KI8_PRI 98 * 8-bit signed integer printf format. */ 99 /** @def KU8_PRI 100 * 8-bit unsigned integer printf format. */ 101 /** @def KX8_PRI 102 * 8-bit signed and unsigned integer hexadecimal printf format. */ 80 103 81 104 /** @typedef KSIZE … … 95 118 /** @def KSSIZE_MIN 96 119 * Memory size min constant.*/ 120 /** @def KSIZE_PRI 121 * Memory size printf format. */ 122 /** @def KSSIZE_PRI 123 * Memory size printf format. */ 97 124 98 125 /** @typedef KIPTR … … 112 139 /** @def KUPTR_MAX 113 140 * Unsigned pointer max constant.*/ 141 /** @def KIPTR_PRI 142 * Signed pointer printf format. */ 143 /** @def KUPTR_PRI 144 * Unsigned pointer printf format. */ 114 145 115 146 … … 119 150 typedef signed __int64 KI64; 120 151 typedef unsigned __int64 KU64; 152 #define KI64_PRI "I64d" 153 #define KU64_PRI "I64u" 154 #define KX64_PRI "I64x" 121 155 # else 122 156 typedef signed long long int KI64; 123 157 typedef unsigned long long int KU64; 158 #define KI64_PRI "lld" 159 #define KU64_PRI "llu" 160 #define KX64_PRI "llx" 124 161 # endif 125 162 typedef signed int KI32; … … 138 175 #define KU8_C(c) (c) 139 176 177 #define KI32_PRI "d" 178 #define KU32_PRI "u" 179 #define KX32_PRI "x" 180 #define KI16_PRI "d" 181 #define KU16_PRI "u" 182 #define KX16_PRI "x" 183 #define KI8_PRI "d" 184 #define KU8_PRI "u" 185 #define KX8_PRI "x" 186 140 187 typedef KI32 KSSIZE; 141 typedef KU32 KSIZE;142 typedef KI32 KIPTR;143 typedef KU32 KUPTR;144 188 #define KSSIZE(c) KI32_C(c) 145 189 #define KSSIZE_MAX KI32_MAX 146 190 #define KSSIZE_MIN KI32_MIN 191 #define KSSIZE_PRI KX32_PRI 192 193 typedef KU32 KSIZE; 147 194 #define KSIZE_C(c) KU32_C(c) 148 195 #define KSIZE_MAX KU32_MAX 196 #define KSIZE_PRI KX32_PRI 149 197 #define KIPTR_C(c) KI32_C(c) 198 199 typedef KI32 KIPTR; 150 200 #define KIPTR_MAX KI32_MAX 151 201 #define KIPTR_MIN KI32_MIN 202 #define KIPTR_PRI KX32_PRI 203 204 typedef KU32 KUPTR; 152 205 #define KUPTR_C(c) KU32_C(c) 153 206 #define KUPTR_MAX KU32_MAX 207 #define KUPTR_PRI KX32_PRI 154 208 155 209 … … 160 214 typedef signed __int64 KI64; 161 215 typedef unsigned __int64 KU64; 216 # define KI64_PRI "I64d" 217 # define KU64_PRI "I64u" 218 # define KX64_PRI "I64x" 162 219 # else 163 220 typedef signed long long int KI64; 164 221 typedef unsigned long long int KU64; 222 # define KI64_PRI "lld" 223 # define KU64_PRI "llu" 224 # define KX64_PRI "llx" 165 225 # endif 166 226 # define KI64_C(c) (c ## ULL) … … 169 229 typedef signed long int KI64; 170 230 typedef unsigned long int KU64; 171 # define KI64_C(c) (c ## UL) 172 # define KU64_C(c) (c ## L) 231 # define KI64_C(c) (c ## UL) 232 # define KU64_C(c) (c ## L) 233 # define KI64_PRI "ld" 234 # define KU64_PRI "lu" 235 # define KX64_PRI "lx" 173 236 # endif 174 237 typedef signed int KI32; … … 185 248 #define KU8_C(c) (c) 186 249 250 #define KI32_PRI "d" 251 #define KU32_PRI "u" 252 #define KX32_PRI "x" 253 #define KI16_PRI "d" 254 #define KU16_PRI "u" 255 #define KX16_PRI "x" 256 #define KI8_PRI "d" 257 #define KU8_PRI "u" 258 #define KX8_PRI "x" 259 187 260 typedef KI64 KSSIZE; 188 typedef KU64 KSIZE;189 typedef KI64 KIPTR;190 typedef KU64 KUPTR;191 261 #define KSSIZE(c) KI64_C(c) 192 262 #define KSSIZE_MAX KI64_MAX 193 263 #define KSSIZE_MIN KI64_MIN 264 #define KSSIZE_PRI KX64_PRI 265 266 typedef KU64 KSIZE; 194 267 #define KSIZE_C(c) KU64_C(c) 195 268 #define KSIZE_MAX KU64_MAX 269 #define KSIZE_PRI KX64_PRI 270 271 typedef KI64 KIPTR; 196 272 #define KIPTR_C(c) KI64_C(c) 197 273 #define KIPTR_MAX KI64_MAX 198 274 #define KIPTR_MIN KI64_MIN 275 #define KIPTR_PRI KX64_PRI 276 277 typedef KU64 KUPTR; 199 278 #define KUPTR_C(c) KU64_C(c) 200 279 #define KUPTR_MAX KU64_MAX 280 #define KUPTR_PRI KX64_PRI 201 281 202 282 #else … … 230 310 #define KU64_MAX KU64_C(0xffffffffffffffff) 231 311 312 /** File offset. */ 313 typedef KI64 KFOFF; 314 /** Pointer a file offset. */ 315 typedef KFOFF *PFOFF; 316 /** Pointer a const file offset. */ 317 typedef KFOFF *PCFOFF; 318 /** The min value for the KFOFF type. */ 319 #define KFOFF_MIN KI64_MIN 320 /** The max value for the KFOFF type. */ 321 #define KFOFF_MAX KI64_MAX 322 /** File offset contstant. 323 * @param c The constant value. */ 324 #define KFOFF_C(c) KI64_C(c) 325 /** File offset printf format. */ 326 #define KFOFF_PRI KI64_PRI 327 232 328 /** @} */ 233 329
Note:
See TracChangeset
for help on using the changeset viewer.