source: git/omalloc/omBin.h @ 979bd0f

spielwiese
Last change on this file since 979bd0f was 979bd0f, checked in by Hans Schoenemann <hannes@…>, 11 years ago
fix: omBin.c:omGetUsedBytesOfBin
  • Property mode set to 100644
File size: 2.4 KB
Line 
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)
12omBin _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)
16void _omUnGetSpecBin(omBin *bin, int force);
17long omGetUsedBinBytes();
18
19omBin omGetStickyBinOfBin(omBin bin);
20void omMergeStickyBinIntoBin(omBin sticky_bin, omBin into_bin);
21
22unsigned long omGetNewStickyBinTag(omBin bin);
23void omSetStickyBinTag(omBin bin, unsigned long sticky);
24void omUnSetStickyBinTag(omBin bin, unsigned long sticky);
25void omDeleteStickyBinTag(omBin bin, unsigned long sticky);
26
27unsigned long omGetNewStickyAllBinTag();
28void omSetStickyAllBinTag(unsigned long sticky);
29void omUnSetStickyAllBinTag(unsigned long sticky);
30void omDeleteStickyAllBinTag(unsigned long sticky);
31
32void omPrintBinStats(FILE* fd);
33#define omIsStickyBin(bin) (bin->sticky >= SIZEOF_VOIDP)
34
35/*BEGINPRIVATE*/
36#ifndef OM_NDEBUG
37int 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 */
Note: See TracBrowser for help on using the repository browser.