Changeset 2825 for trunk/kLdr/kLdrHlp.h
- Timestamp:
- Oct 22, 2006, 5:57:19 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrHlp.h
r2824 r2825 29 29 #define __kLdrHlp_h__ 30 30 31 /** @defgroup grp_kLdrHlp kLdrHlp - Helper Functions 32 * @internal 33 * @{ */ 31 34 /** Get the minimum of two values. */ 32 35 #define KLDR_MIN(a, b) ((a) <= (b) ? (a) : (b)) 33 36 34 #ifdef __OS2__ 37 /** Align a size_t value. */ 38 #define KLDR_ALIGN_Z(val, align) ( ((val) + ((align) - 1)) & ~(size_t)((align) - 1) ) 39 /** Align a void * value. */ 40 #define KLDR_ALIGN_P(pv, align) ( (void *)( ((uintptr_t)(pv) + ((align) - 1)) & ~(uintptr_t)((align) - 1) ) ) 41 42 /* 43 * Compiler specific helpers. 44 * (I.e. operations that tend to have compiler intrinsic implementations). 45 */ 46 #ifdef __GNUC__ 47 /** memcmp */ 48 # define kLdrMemComp(a,b,c) __builtin_memcmp(a,b,c) 49 /** memcpy */ 50 # define kLdrMemCopy(a,b,c) __builtin_memcpy(a,b,c) 51 /** memset */ 52 # define kLdrMemSet(a,b,c) __builtin_memset(a,b,c) 53 /** strlen */ 54 # define kLdrStrLen(a) __builtin_strlen(a) 55 /** alloca */ 56 # define kLdrAllocA(a) __builtin_alloca(a) 57 /** int3 */ 58 # define kldrHlpBreakpoint() do { __asm__ __volatile__ ("int3\n\tnop"); } while (0) 59 /** NULL */ 60 # ifndef NULL 61 # define NULL 0 62 # endif 63 #endif 64 65 #ifdef _MSC_VER 66 # include <string.h> 67 # include <malloc.h> 68 # pragma intrinsic(memcmp, memcpy, memset, strlen, __debugbreak) 69 /** memcmp */ 70 # define kLdrMemComp(a,b,c) memcmp(a,b,c) 71 /** memcpy */ 72 # define kLdrMemCopy(a,b,c) memcpy(a,b,c) 73 /** memset */ 74 # define kLdrMemSet(a,b,c) memset(a,b,c) 75 /** strlen */ 76 # define kLdrStrLen(a) strlen(a) 77 /** alloca */ 78 # define kLdrAllocA(a) alloca(a) 79 /** int3 */ 80 # define kldrHlpBreakpoint() __debugbreak() 81 /** NULL */ 82 # ifndef NULL 83 # define NULL 0 84 # endif 85 #endif 86 87 #if !defined(kLdrMemComp) \ 88 || !defined(kLdrMemCopy) \ 89 || !defined(kLdrMemSet) \ 90 || !defined(kLdrStrLen) \ 91 || !defined(kLdrAllocA) \ 92 || !defined(kldrHlpBreakpoint) 93 # error "Needs porting to your compiler." 94 #endif 95 35 96 36 97 int kldrSemInit(void); … … 41 102 int kldrSemGlobalRelease(void); 42 103 43 /** Loader file handle. */44 typedef unsigned long KLDRFILE;45 /** Pointer to a loader file handle. */46 typedef KLDRFILE *PKLDRFILE;47 48 int kldrFileOpen(const char *pszFilename, PKLDRFILE pFile);49 int kldrFileClose(KLDRFILE File);50 int kldrFileRead(KLDRFILE File, off_t off, void *pv, size_t cb);51 52 int kldrGetEnv(const char *pszVar, char *pszVar, size_t *pcchVar)53 54 void *kldrAlloc(size_t cb);55 void kldrFree(void *pv);56 57 104 int kldrPrivateAlloc(void *pv, size_t cb, unsigned fFlags, void **ppv); 58 105 int kldrPrivateFree(void *pv, size_t cb); 59 int kldrSharedAlloc(void *pv, size_t cb, unsigned fFlags, const char *pszFilename, KLDRFILEFile, void **ppv);106 int kldrSharedAlloc(void *pv, size_t cb, unsigned fFlags, const char *pszFilename, void *File, void **ppv); 60 107 int kldrSharedFree(void *pv, size_t cb); 61 108 62 void kldrExit(int rc); 109 int kldrHlpHeapInit(void); 110 void kldrHlpHeapTerm(void); 111 void kldrHlpHeapDonate(void *pv, size_t cb); 112 void * kldrHlpAlloc(size_t cb); 113 void kldrHlpFree(void *pv); 63 114 64 /* #elif __WIN__ */ 115 int kldrHlpGetEnv(const char *pszVar, char *pszVal, size_t *pcchVal); 116 void kldrHlpExit(int rc); 117 void kldrHlpAssertMsg(const char *pszExpr, const char *pszFile, unsigned iLine, const char *pszFunction); 65 118 66 #else 119 /** Assertion macro. 120 * Users should wrap it since this is ALWAYS compiled in. */ 121 #define kldrHlpAssert(expr) \ 122 do { \ 123 if (!(expr)) \ 124 { \ 125 kldrHlpAssertMsg(#expr, __FILE__, __LINE__, __FUNCTION__); \ 126 kldrHlpBreakpoint(); \ 127 } \ 128 } while (0) 67 129 68 130 131 /** @} */ 69 132 70 #endif71 72 /*73 * Compiler specific helpers.74 * (I.e. operations that tend to have compiler intrinsic implementations).75 */76 #ifdef __GNUC__77 /** memcpy */78 # define kLdrMemCopy(a,b,c) __builtin_memcpy(a,b,c)79 /** memset */80 # define kLdrMemSet(a,b,c) __builtin_memset(a,b,c)81 #endif82 83 #ifndef kLdrMemCopy84 # error "Needs porting to your compiler."85 #endif86 133 87 134 #endif /* __kLdrHlp_h__ */ 135
Note:
See TracChangeset
for help on using the changeset viewer.