inc/memalloc.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  memHandler

Functions

memHandlerpushMemHandler (struct memHandler *newHandler)
memHandlerpopMemHandler ()
void setDefaultMemHandler ()
void pushCarefulMemHandler (size_t maxAlloc)
void carefulCheckHeap ()
int carefulCountBlocksAllocated ()
long carefulTotalAllocated ()
void setMaxAlloc (size_t s)
void memTrackerStart ()
void memTrackerEnd ()


Function Documentation

void carefulCheckHeap (  ) 

Definition at line 342 of file memalloc.c.

References carefulParent, cmbAllocedList, cmbEndCookie, cmbStartCookie, errAbort(), dlList::head, carefulMemBlock::next, ptrToLL, carefulMemBlock::size, and carefulMemBlock::startCookie.

00345 {
00346 int maxPieces = 10000000;    /* Assume no more than this many pieces allocated. */
00347 struct carefulMemBlock *cmb;
00348 char *pEndCookie;
00349 size_t size;
00350 
00351 if (carefulParent == NULL)
00352     return;
00353 
00354 for (cmb = (struct carefulMemBlock *)(cmbAllocedList->head); cmb->next != NULL; cmb = cmb->next)
00355     {
00356     size = cmb->size;
00357     pEndCookie = (((char *)(cmb+1)) + size);
00358     if (cmb->startCookie != cmbStartCookie)
00359         errAbort("Bad start cookie %x checking %llx\n", cmb->startCookie,
00360                  ptrToLL(cmb+1));
00361     if (memcmp(pEndCookie, cmbEndCookie, sizeof(cmbEndCookie)) != 0)
00362         errAbort("Bad end cookie %x%x%x%x checking %llx\n", 
00363                  pEndCookie[0], pEndCookie[1], pEndCookie[2], pEndCookie[3],
00364                  ptrToLL(cmb+1));
00365     if (--maxPieces == 0)
00366         errAbort("Loop or more than 10000000 pieces in memory list");
00367     }
00368 }

Here is the call graph for this function:

int carefulCountBlocksAllocated (  ) 

Definition at line 370 of file memalloc.c.

References cmbAllocedList, and dlCount().

00372 {
00373 return dlCount(cmbAllocedList);
00374 }

Here is the call graph for this function:

long carefulTotalAllocated (  ) 

Definition at line 376 of file memalloc.c.

References carefulAlloced.

00378 {
00379 return carefulAlloced;
00380 }

void memTrackerEnd (  ) 

Definition at line 471 of file memalloc.c.

References dlListFree, errAbort(), freeMem(), memTracker::handler, memTracker::list, memTracker, and popMemHandler().

Referenced by errorSafePcr(), and errorSafeQuery().

00473 {
00474 struct memTracker *mt = memTracker;
00475 if (mt == NULL)
00476     errAbort("memTrackerEnd without memTrackerStart");
00477 memTracker = NULL;
00478 popMemHandler();
00479 dlListFree(&mt->list);
00480 freeMem(mt->handler);
00481 freeMem(mt);
00482 }

Here is the call graph for this function:

Here is the caller graph for this function:

void memTrackerStart (  ) 

Definition at line 451 of file memalloc.c.

References memHandler::alloc, AllocVar, dlListNew, errAbort(), memHandler::free, memTracker::handler, memTracker::list, memTracker, memTrackerAlloc(), memTrackerFree(), memTrackerRealloc(), memTracker::parent, pushMemHandler(), and memHandler::realloc.

Referenced by errorSafeSetup().

00456 {
00457 struct memTracker *mt;
00458 
00459 if (memTracker != NULL)
00460      errAbort("multiple memTrackerStart calls");
00461 AllocVar(mt);
00462 AllocVar(mt->handler);
00463 mt->handler->alloc = memTrackerAlloc;
00464 mt->handler->free = memTrackerFree;
00465 mt->handler->realloc = memTrackerRealloc;
00466 mt->list = dlListNew();
00467 mt->parent = pushMemHandler(mt->handler);
00468 memTracker = mt;
00469 }

Here is the call graph for this function:

Here is the caller graph for this function:

struct memHandler* popMemHandler (  )  [read]

Definition at line 57 of file memalloc.c.

References defaultMemHandler, errAbort(), mhStack, and memHandler::next.

Referenced by memTrackerEnd().

00059 {
00060 struct memHandler *oldHandler = mhStack;
00061 if (mhStack == &defaultMemHandler)
00062     errAbort("Too many popMemHandlers()");
00063 mhStack = mhStack->next;
00064 return oldHandler;
00065 }

Here is the call graph for this function:

Here is the caller graph for this function:

void pushCarefulMemHandler ( size_t  maxAlloc  ) 

Definition at line 391 of file memalloc.c.

References carefulMemHandler, carefulMemInit(), carefulParent, and pushMemHandler().

Here is the call graph for this function:

struct memHandler* pushMemHandler ( struct memHandler newHandler  )  [read]

Definition at line 47 of file memalloc.c.

References mhStack, and slAddHead.

Referenced by memTrackerStart(), and pushCarefulMemHandler().

00050 {
00051 struct memHandler *oldHandler = mhStack;
00052 slAddHead(&mhStack, newHandler);
00053 return oldHandler;
00054 }

Here is the caller graph for this function:

void setDefaultMemHandler (  ) 

Definition at line 68 of file memalloc.c.

References defaultMemHandler, and mhStack.

00070 {
00071 mhStack = &defaultMemHandler;
00072 }

void setMaxAlloc ( size_t  s  ) 

Definition at line 78 of file memalloc.c.

References maxAlloc.

00080 {
00081 maxAlloc = s;
00082 }


Generated on Tue Dec 25 19:05:31 2007 for blat by  doxygen 1.5.2