13#ifdef OM_INTERNAL_DEBUG
25#define om_LargeBin ((omBin) 1)
35#ifdef OM_ALIGNMENT_NEEDS_WORK
61#ifdef OM_ALIGNMENT_NEEDS_WORK
78#ifdef OM_ALIGNMENT_NEEDS_WORK
111 s_bin->bin->max_blocks ==
s_bin->max_blocks &&
112 s_bin->bin->sizeW == sizeW);
118 s_bin->max_blocks = max_blocks;
123 s_bin->bin->sizeW = sizeW;
124 s_bin->bin->max_blocks = max_blocks;
125 s_bin->bin->sticky = 0;
193#define omGetStickyBin(bin, sticky_tag) \
194 omFindInGList(bin, next, sticky, sticky_tag)
199 s_bin->sticky = sticky;
202 s_bin->max_blocks = bin->max_blocks;
203 s_bin->sizeW = bin->sizeW;
204 s_bin->next = bin->next;
211 unsigned long sticky = 0;
214 if (bin->sticky > sticky) sticky = bin->sticky;
250 tc = bin->current_page;
251 bin->sticky =
s_bin->sticky;
252 bin->current_page =
s_bin->current_page;
253 bin->last_page =
s_bin->last_page;
255 s_bin->last_page = tl;
263 if (bin->sticky == sticky)
314 to_bin->current_page->used_blocks = 0;
320 to_bin->current_page->used_blocks == 0);
380 new_bin->max_blocks = bin->max_blocks;
410 (!
sticky_bin->sticky ?
"sticky_bin is not sticky" :
411 (
sticky_bin->max_blocks !=
into_bin->max_blocks ?
"sticky_bin and into_bin have different block sizes" :
415 "unknown sticky_bin error")))))));
431#if defined(OM_INTERNAL_DEBUG) && !defined(OM_NDEBUG)
472 if (bin ==
s_bin->bin)
return 1;
595 for (
i=0;
i<bin->max_blocks;
i++)
620 pages++;
if (
where == 1)
623 if (bin->max_blocks > 0)
628 if (bin->max_blocks > 1)
629 used_blocks += bin->max_blocks;
633 if (
page == bin->current_page)
where = -1;
674 (
long)bin->sizeW, bin->max_blocks);
702 fputs(
" SizeW\tBlocks\tUPages\tFBlocks\tUBlocks\tSticky\n",
fd);
744 while (sticky !=
NULL)
747 sticky = sticky->next;
752 fputs(
"----------------------------------------\n",
fd);
793 while (sticky !=
NULL)
796 sticky = sticky->next;
static BOOLEAN length(leftv result, leftv arg)
omError_t omTestBin(omBin bin, int check_level)
#define omFreeSize(addr, size)
#define omSetTopBinAndStickyOfPage(page, bin, sticky)
#define SIZEOF_OM_BIN_PAGE_HEADER
#define SIZEOF_OM_BIN_PAGE
#define _omSizeOfBinAddr(addr)
#define omSizeOfBinAddr(addr)
#define omSmallSize2Bin(size)
void omSetStickyBinTag(omBin bin, unsigned long sticky_tag)
static void omPrintBinStat(FILE *fd, omBin bin, int track, long *pages, long *used_blocks, long *free_blocks)
void omDeleteStickyBinTag(omBin bin, unsigned long sticky)
void omSetStickyAllBinTag(unsigned long sticky)
unsigned long omGetMaxStickyBinTag(omBin bin)
static void omMergeStickyPages(omBin to_bin, omBin from_bin)
void _omUnGetSpecBin(omBin *bin_p, int force)
omBin _omGetSpecBin(size_t size, int align, int track)
#define omGetStickyBin(bin, sticky_tag)
static void omGetBinStat(omBin bin, long *pages_p, long *used_blocks_p, long *free_blocks_p)
static void omGetTotalBinStat(omBin bin, long *pages_p, long *used_blocks_p, long *free_blocks_p)
unsigned long omGetNewStickyBinTag(omBin bin)
static omBin omCreateStickyBin(omBin bin, unsigned long sticky)
void omDeleteStickyAllBinTag(unsigned long sticky)
void omUnSetStickyBinTag(omBin bin, unsigned long sticky)
void omUnSetStickyAllBinTag(unsigned long sticky)
unsigned long omGetNewStickyAllBinTag()
static long omGetUsedBytesOfBin(omBin bin)
#define omIsKnownTopBin(bin, normal_bin)
#define omIsStickyBin(bin)
#define omIsStaticBin(bin)
#define omIsStaticNormalBin(bin)
#define omUnGetSpecBin(bin_ptr)
#define omIsTrackBin(bin)
void omFreeKeptAddrFromBin(omBin bin)
#define omGetUsedBlocksOfPage(page)
omError_t omReportError(omError_t error, omError_t report_error, OM_FLR_DECL, const char *fmt,...)
#define omIsOnList(ptr, addr)
#define omFindInGList(ptr, next, what, value)
#define omRemoveFromSortedGList(ptr, next, what, addr)
#define omRemoveFromGList(ptr, next, addr)
#define omGListLength(ptr, next)
#define omIsOnGList(ptr, next, addr)
#define omInsertInSortedGList(ptr, next, what, addr)
#define omFindInSortedGList(ptr, next, what, value)
#define OM_MAX_BLOCK_SIZE
#define OM_SIZEOF_UNIQUE_MAX_BLOCK_THRESHOLD
omBinPage_t om_ZeroPage[]
#define omSmallSize2AlignedBin
#define omGetStickyBinOfBin(B)
#define omMergeStickyBinIntoBin(A, B)
#define omPrintBinStats(F)