/* -*-c-*-
*
- * $Id: track.c,v 1.3 1999/05/06 19:51:36 mdw Exp $
+ * $Id: track.c,v 1.4 1999/05/19 20:27:11 mdw Exp $
*
* Tracing functions for debugging
*
/*----- Revision history --------------------------------------------------*
*
* $Log: track.c,v $
+ * Revision 1.4 1999/05/19 20:27:11 mdw
+ * Change naming to match newer mLib conventions.
+ *
* Revision 1.3 1999/05/06 19:51:36 mdw
* Reformatted the LGPL notice a little bit.
*
* This gets prefixed to every block I manage.
*/
-typedef union track__block {
+typedef union block {
struct {
- union track__block *next; /* Link to previous block */
- union track__block *prev; /* Link to next block */
+ union block *next; /* Link to previous block */
+ union block *prev; /* Link to next block */
size_t sz; /* Size of the block */
const char *ctx; /* Pointer to allocating context */
} x; /* Main data area */
long double _ld; /* Long double for alignment */
void *_p; /* Void pointer for alignment */
-} track__block;
+} block;
/*----- Private state -----------------------------------------------------*/
/* --- Tracking memory usage --- */
-static unsigned int track__used = 0; /* Count of bytes occupied */
-static track__block *track__list; /* List of allocated blocks */
+static unsigned int used = 0; /* Count of bytes occupied */
+static block *list; /* List of allocated blocks */
/* --- Trace level for verbose messages --- */
-static unsigned int track__vLevel = 0;
+static unsigned int vLevel = 0;
/* --- Context tracking --- */
-static track_ctx track__baseContext = {
+static track_ctx baseContext = {
0, "[unknown context]"
};
-static track_ctx *track__context = &track__baseContext;
+static track_ctx *context = &baseContext;
/*----- Functions provided ------------------------------------------------*/
void track_setLevel(unsigned int l)
{
- track__vLevel = l;
+ vLevel = l;
}
/* --- @track_pushContext@ --- *
void track_pushContext(track_ctx *ctx)
{
- ctx->next = track__context;
- track__context = ctx;
+ ctx->next = context;
+ context = ctx;
}
/* --- @track_popContext@ --- *
void track_popContext(track_ctx *ctx)
{
- track__context = ctx->next;
+ context = ctx->next;
}
/* --- @track_malloc@ --- *
void *track_malloc(size_t sz)
{
- track__block *q = (malloc)(sz + sizeof(track__block));
+ block *q = (malloc)(sz + sizeof(block));
if (q) {
- track__used += sz;
- if (track__vLevel) {
- trace(track__vLevel, "(track) allocated %lu at %p in %s",
- (unsigned long)sz, (void *)(q + 1), track__context->s);
+ used += sz;
+ if (vLevel) {
+ trace(vLevel, "(track) allocated %lu at %p in %s",
+ (unsigned long)sz, (void *)(q + 1), context->s);
}
q->x.sz = sz;
- q->x.next = track__list;
+ q->x.next = list;
q->x.prev = 0;
- q->x.ctx = track__context->s;
+ q->x.ctx = context->s;
if (q->x.next)
q->x.next->x.prev = q;
- track__list = q;
+ list = q;
return (q + 1);
}
return (0);
void track_free(void *p)
{
- track__block *q;
+ block *q;
if (!p)
return;
- q = (track__block *)p - 1;
- if (track__vLevel) {
- trace(track__vLevel, "(track) freed %lu at %p for %s in %s",
+ q = (block *)p - 1;
+ if (vLevel) {
+ trace(vLevel, "(track) freed %lu at %p for %s in %s",
(unsigned long)q->x.sz, (void *)(q + 1),
- q->x.ctx, track__context->s);
+ q->x.ctx, context->s);
}
if (q->x.next)
q->x.next->x.prev = q->x.prev;
if (q->x.prev)
q->x.prev->x.next = q->x.next;
else
- track__list = q->x.next;
- track__used -= q->x.sz;
+ list = q->x.next;
+ used -= q->x.sz;
(free)(q);
}
void *track_realloc(void *p, size_t sz)
{
size_t osz;
- track__block *q, *qq;
+ block *q, *qq;
if (p) {
- q = (track__block *)p - 1;
+ q = (block *)p - 1;
osz = q->x.sz;
if (q->x.next)
q->x.next->x.prev = q->x.prev;
if (q->x.prev)
q->x.prev->x.next = q->x.next;
else
- track__list = q->x.next;
+ list = q->x.next;
} else {
q = 0;
osz = 0;
}
- qq = (realloc)(q, sz + sizeof(track__block));
+ qq = (realloc)(q, sz + sizeof(block));
if (qq) {
- if (track__vLevel) {
- trace(track__vLevel,
+ if (vLevel) {
+ trace(vLevel,
"(track) reallocated %lu at %p to %lu for %s in %s",
(unsigned long)osz, (void *)(q + 1),
(unsigned long)sz, (void *)(qq + 1),
- qq->x.ctx, track__context->s);
+ qq->x.ctx, context->s);
}
qq->x.sz = sz;
- qq->x.next = track__list;
+ qq->x.next = list;
qq->x.prev = 0;
if (qq->x.next)
qq->x.next->x.prev = qq;
- track__list = qq;
- track__used += sz - osz;
+ list = qq;
+ used += sz - osz;
qq->x.sz = sz;
return (qq + 1);
}
unsigned long track_used(void)
{
- return (track__used);
+ return (used);
}
/* --- @track_list@ --- *
void track_list(unsigned int l)
{
- track__block *q = track__list;
+ block *q = list;
if (!(tracing() & l))
return;