[e70e45] | 1 | /******************************************************************* |
---|
| 2 | * File: omBin.h |
---|
| 3 | * Purpose: declaration of routines related to Bins |
---|
| 4 | * Author: obachman (Olaf Bachmann) |
---|
| 5 | * Created: 11/99 |
---|
[341696] | 6 | * Version: $Id$ |
---|
[e70e45] | 7 | *******************************************************************/ |
---|
| 8 | #ifndef OM_BIN_H |
---|
| 9 | #define OM_BIN_H |
---|
| 10 | |
---|
| 11 | #define omGetAlignedSpecBin(size) _omGetSpecBin(size, 1, 0) |
---|
| 12 | #define omGetSpecBin(size) _omGetSpecBin(size, 0, 0) |
---|
| 13 | omBin _omGetSpecBin(size_t size, int align, int track); |
---|
| 14 | |
---|
| 15 | #define omUnGetSpecBin(bin_ptr) _omUnGetSpecBin(bin_ptr, 0) |
---|
| 16 | #define omDeleteSpecBin(bin_ptr) _omUnGetSpecBin(bin_ptr, 1) |
---|
| 17 | void _omUnGetSpecBin(omBin *bin, int force); |
---|
| 18 | size_t omGetUsedBinBytes(); |
---|
| 19 | |
---|
[f103fb] | 20 | omBin omGetStickyBinOfBin(omBin bin); |
---|
| 21 | void omMergeStickyBinIntoBin(omBin sticky_bin, omBin into_bin); |
---|
| 22 | |
---|
[e70e45] | 23 | unsigned long omGetNewStickyBinTag(omBin bin); |
---|
| 24 | void omSetStickyBinTag(omBin bin, unsigned long sticky); |
---|
| 25 | void omUnSetStickyBinTag(omBin bin, unsigned long sticky); |
---|
| 26 | void omDeleteStickyBinTag(omBin bin, unsigned long sticky); |
---|
| 27 | |
---|
| 28 | unsigned long omGetNewStickyAllBinTag(); |
---|
| 29 | void omSetStickyAllBinTag(unsigned long sticky); |
---|
| 30 | void omUnSetStickyAllBinTag(unsigned long sticky); |
---|
| 31 | void omDeleteStickyAllBinTag(unsigned long sticky); |
---|
| 32 | |
---|
| 33 | void omPrintBinStats(FILE* fd); |
---|
[f103fb] | 34 | #define omIsStickyBin(bin) (bin->sticky >= SIZEOF_VOIDP) |
---|
[e70e45] | 35 | |
---|
| 36 | /*BEGINPRIVATE*/ |
---|
[f103fb] | 37 | #ifndef OM_NDEBUG |
---|
| 38 | int omIsKnownTopBin(omBin bin, int normal_bin); |
---|
| 39 | #endif |
---|
[e70e45] | 40 | #ifdef OM_HAVE_TRACK |
---|
| 41 | #define omGetSpecTrackBin(size) _omGetSpecBin(size, 0, 1) |
---|
| 42 | #endif |
---|
| 43 | |
---|
| 44 | #define omIsStaticNormalBin(bin) \ |
---|
| 45 | ((unsigned long) bin >= ((unsigned long) &om_StaticBin[0]) && \ |
---|
| 46 | (unsigned long) bin <= ((unsigned long) &om_StaticBin[OM_MAX_BIN_INDEX])) |
---|
[f103fb] | 47 | #define omIsNormalBin(bin) omIsStaticNormalBin(bin) || omFindInGList(om_SpecBin, next, bin, bin) || omIsStickyBin(bin) |
---|
| 48 | #define omIsSpecBin(bin) (!omIsStaticNormalBin(bin) && !omIsStickyBin(bin)) |
---|
[e70e45] | 49 | |
---|
| 50 | #ifdef OM_HAVE_TRACK |
---|
| 51 | #define omIsStaticTrackBin(bin) \ |
---|
| 52 | ((unsigned long) bin >= ((unsigned long) &om_StaticTrackBin[0]) && \ |
---|
| 53 | (unsigned long) bin <= ((unsigned long) &om_StaticTrackBin[OM_MAX_BIN_INDEX])) |
---|
| 54 | #define omIsTrackBin(bin) omIsStaticTrackBin(bin) || omFindInGList(om_SpecTrackBin, next, bin, bin) |
---|
| 55 | #else |
---|
[f103fb] | 56 | #define omIsKnownTopBin(bin, normal_bin) 1 |
---|
[e70e45] | 57 | #define omIsStaticTrackBin(bin) 0 |
---|
| 58 | #define omIsTrackBin(bin) 0 |
---|
| 59 | #endif |
---|
| 60 | #define omIsStaticBin(bin) omIsStaticNormalBin(bin) || omIsStaticTrackBin(bin) |
---|
| 61 | /*ENDPRIVATE*/ |
---|
| 62 | |
---|
| 63 | #endif /* OM_BIN_H */ |
---|