44 (report ? report : omError_MemoryCorrupted), OM_FLR_VAL));
46 return omDoCheckAddr(addr, size_bin, flags, check, report, OM_FLR_VAL);
55 return omDoCheckBin(bin, what_bin, check, report, OM_FLR_VAL);
68 for (i=0; i<= OM_MAX_BIN_INDEX; i++)
83 while (sticky !=
NULL)
86 sticky = sticky->next;
90 for (i=0; i<= OM_MAX_BIN_INDEX; i++)
94 s_bin = om_SpecTrackBin;
112 addr = *((
void**) addr);
122 addr = *((
void**) addr);
166 return omCheckTrackAddr(addr, bin_size, flags, level, report, OM_FLR_VAL);
233 ( ( ( (
unsigned long) addr)
234 - ((
unsigned long) page)
236 % (bin->sizeW * SIZEOF_VOIDP)
243 if ((flags & OM_FSIZE) && (!(flags &
OM_FSLOPPY) || (
size_t) bin_size > 0))
245 size_t size = (size_t) bin_size;
280 bin->max_blocks != top_bin->max_blocks);
282 if (level <= 1)
continue;
293 page = bin->last_page;
298 omCheckReturn(page != bin->last_page && page != bin->current_page &&
302 (page->next ==
NULL || page->next->prev != page));
316 if (page == bin->current_page)
358 if (bin->max_blocks > 1)
362 page->current !=
NULL);
374 void* current = page->current;
379 while (current !=
NULL)
384 - ((
unsigned long) page)
386 % (bin->sizeW * SIZEOF_LONG)
388 current = *((
void**) current);
395 OM_FLR_DECL,
const char* fmt, ...)
397 int max_check, max_track;
412 _omPrintAddrInfo(stderr, error, addr, bin_size, flags, 10,
" occurred for");
425 fprintf(fd,
"%s addr:%p size:%ld", s, addr, (
long)
omSizeOfAddr(addr));
428 fprintf(fd,
" specified size:%ld", (
long) bin_size);
431 fprintf(fd,
" specified bin is of size:%ld",
432 (
long)((
omBin) bin_size)->sizeW << LOG_SIZEOF_LONG);
435 omPrintTrackAddrInfo(fd, addr, frames);
441 fprintf(fd,
"%s (invalid) addr: %p (error=%d)\n", s, addr,x);
465 page = bin->last_page;
476 if (CallBackFree !=
NULL) CallBackFree(addr);
480 if (CallBackUsed !=
NULL) CallBackUsed(addr);
482 addr = (
char *)((
char**) addr) + bin->sizeW;
484 }
while (i < bin->max_blocks);
491 }
while (bin !=
NULL);
503 for (i=0; i<=OM_MAX_BIN_INDEX; i++)
508 while (s_bin !=
NULL)
518 for (i=0; i<=OM_MAX_BIN_INDEX; i++)
522 s_bin = om_SpecTrackBin;
523 while (s_bin !=
NULL)
531 while (sticky !=
NULL)
534 sticky = sticky->next;
547 om_total_used_blocks++;
549 if (om_print_frames > 0)
552 fprintf(om_print_used_addr_fd,
"\n");
559 om_total_used_size = 0;
560 om_total_used_blocks = 0;
561 om_print_used_addr_fd = (fd ==
NULL ? stdout :
fd);
562 om_print_frames =
max;
564 fprintf(fd,
"UsedAddrs Summary: UsedBlocks:%ld TotalSize:%ld\n",
565 om_total_used_blocks, (
long)om_total_used_size);
570 om_total_used_size = 0;
571 om_total_used_blocks = 0;
572 om_print_used_addr_fd = (fd ==
NULL ? stdout :
fd);
573 om_print_frames =
max;
575 fprintf(fd,
"UsedTrackAddrs Summary: UsedBlocks:%ld TotalSize:%ld\n",
576 om_total_used_blocks, (
long)om_total_used_size);
const CanonicalForm int s
omError_t omReportError(omError_t error, omError_t report_error, OM_FLR_DECL, const char *fmt,...)
#define omIsOnList(ptr, addr)
#define omCheckGList(ptr, next, level, report, OM_FLR_VAL)
void omIterateTroughBinAddrs(omBin bin, void(*CallBackUsed)(void *), void(*CallBackFree)(void *))
#define omAddrCheckReturnError(cond, error)
#define omGetUsedBlocksOfPage(page)
#define SIZEOF_OM_BIN_PAGE_HEADER
#define omGetTopBinOfAddr(addr)
size_t omSizeOfAddr(const void *addr)
unsigned short omTrackFlags_t
omError_t omCheckBinPageRegions(int level, omError_t report, OM_FLR_DECL)
static omError_t omDoCheckLargeAddr(void *addr, void *bin_size, omTrackFlags_t flags, char level, omError_t report, OM_FLR_DECL)
omError_t omCheckPtr(const void *ptr, omError_t report, OM_FLR_DECL)
size_t omSizeOfLargeAddr(void *addr)
omError_t omDoCheckBinAddr(void *addr, void *bin_size, omTrackFlags_t flags, char level, omError_t report, OM_FLR_DECL)
#define omGetStickyOfPage(page)
#define omCheckReturnError(cond, error)
#define omCheckList(ptr, level, report, OM_FLR_VAL)
#define omListLength(ptr)
#define omCheckReturnCorrupted(cond)
#define omIsStaticTrackAddr(addr)
static omError_t omDoCheckBinPage(omBinPage page, int normal_page, int level, omError_t report, OM_FLR_DECL)
#define omIsTrackAddr(addr)
omBinPage_t om_ZeroPage[]
static void _omPrintAddrInfo(FILE *fd, omError_t error, void *addr, void *bin_size, omTrackFlags_t flags, int max_frames, const char *s)
void omPrintAddrInfo(FILE *fd, void *addr, const char *s)
#define omGListLast(ptr, next)
#define omIsStickyBin(bin)
#define omAddrCheckReturn(cond)
omError_t omDoCheckBin(omBin bin, int normal_bin, char level, omError_t report, OM_FLR_DECL)
#define omCheckReturn(cond)
#define omIsKnownTopBin(bin, normal_bin)
static size_t om_total_used_size
static int max(int a, int b)
#define omIsBinAddrTrackAddr(addr)
omBinPageRegion omFindRegionOfAddr(void *addr)
#define omGListLength(ptr, next)
void omPrintUsedTrackAddrs(FILE *fd, int max)
omError_t _omCheckAddr(void *addr, void *size_bin, omTrackFlags_t flags, char check, omError_t report, OM_FLR_DECL)
omError_t omDoCheckAddr(void *addr, void *bin_size, omTrackFlags_t flags, char level, omError_t report, OM_FLR_DECL)
omBinPageRegion_t * omBinPageRegion
void omPrintUsedAddrs(FILE *fd, int max)
#define omGetBinPageOfAddr(addr)
OM_INLINE_DECL omBin omGetBinOfPage(omBinPage page)
#define OM_MAX_BLOCK_SIZE
omError_t _omCheckMemory(char check, omError_t report, OM_FLR_DECL)
int omIsAddrOnFreeBinPage(void *addr)
static unsigned long om_total_used_blocks
static int om_print_frames
#define omIsBinPageAddr(addr)
omError_t omReportAddrError(omError_t error, omError_t report_error, void *addr, void *bin_size, omTrackFlags_t flags, OM_FLR_DECL, const char *fmt,...)
void * om_AlwaysKeptAddrs
#define omGetBinOfAddr(addr)
omError_t _omCheckBin(omBin bin, int what_bin, char check, omError_t report, OM_FLR_DECL)
static FILE * om_print_used_addr_fd
#define omFindInGList(ptr, next, what, value)
int omIsInKeptAddrList(void *addr)
int status int void size_t count int const void size_t count const char int flags
#define omGetPageOfAddr(addr)
#define omAddrCheckReturnCorrupted(cond)
void omIterateTroughAddrs(int normal, int track, void(*CallBackUsed)(void *), void(*CallBackFree)(void *))
static void _omPrintUsedAddr(void *addr)
#define omGetTopBinOfPage(page)
#define omIsAddrPageAligned(addr)
#define omIsOnGList(ptr, next, addr)