8cc7dee111a52eed9f6e65a01e67730af13b43b4 braney Thu Jun 6 15:30:22 2019 -0700 ongoing work on trackDb caching in shared memory diff --git src/lib/localmem.c src/lib/localmem.c index 8c5a33c..ac17ff3 100644 --- src/lib/localmem.c +++ src/lib/localmem.c @@ -89,30 +89,48 @@ { return lmGuts(blockSize, mem); } void lmCleanup(struct lm **pLm) /* Clean up a local memory pool. */ { struct lm *lm = *pLm; if (lm == NULL) return; *pLm = NULL; slFreeList(&lm->blocks); freeMem(lm); } +unsigned int lmBlockHeaderSize() +// Return the size of an lmBlock. +{ +return sizeof(struct lmBlock); +} + +size_t lmUsed(struct lm *lm) +// Returns amount of memory allocated +{ +size_t used = 0; + +struct lmBlock *mb = lm->blocks; +for (;mb != NULL;mb = mb->next) + used += (mb->free - (char *)(mb+1)); + +return used; +} + size_t lmAvailable(struct lm *lm) // Returns currently available memory in pool { struct lmBlock *mb = lm->blocks; return (mb->end - mb->free); } size_t lmSize(struct lm *lm) // Returns current size of pool, even for memory already allocated { size_t fullSize = 0; struct lmBlock *mb = lm->blocks; for (;mb != NULL;mb = mb->next) fullSize += (mb->end - (char *)(mb+1));