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