Add some simple `malloc' tracking.
[become] / src / utils.h
index dce373e..869c4e9 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: utils.h,v 1.2 1997/08/04 10:24:26 mdw Exp $
+ * $Id: utils.h,v 1.3 1997/08/20 16:25:37 mdw Exp $
  *
  * Miscellaneous useful bits of code.
  *
@@ -29,6 +29,9 @@
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: utils.h,v $
+ * Revision 1.3  1997/08/20 16:25:37  mdw
+ * Add some simple `malloc' tracking.
+ *
  * Revision 1.2  1997/08/04 10:24:26  mdw
  * Sources placed under CVS control.
  *
@@ -263,6 +266,81 @@ extern char *xstrdup(const char */*s*/);
 
 extern void *xrealloc(void */*p*/, size_t /*sz*/);
 
+/*----- Simple memory use tracking ----------------------------------------*/
+
+#undef TRACK_MALLOC
+
+#ifdef TRACK_MALLOC
+
+/* --- @track_malloc@ --- *
+ *
+ * Arguments:  @size_t sz@ = size requested
+ *
+ * Returns:    Pointer to allocated space, or null
+ *
+ * Use:                Allocates memory, and tracks how much is allocated.
+ */
+
+extern void *track_malloc(size_t /*sz*/);
+
+/* --- @track_free@ --- *
+ *
+ * Arguments:  @void *p@ = pointer to an allocated block
+ *
+ * Returns:    ---
+ *
+ * Use:                Frees memory, and tracks how much is still allocated.
+ */
+
+extern void track_free(void */*p*/);
+
+/* --- @track_realloc@ --- *
+ *
+ * Arguments:  @void *p@ = pointer to an allocated block
+ *             @size_t sz@ = how big it wants to be
+ *
+ * Returns:    Pointer to the new block.
+ *
+ * Use:                Reallocates a block, tracking how much memory is still
+ *             available.
+ */
+
+extern void *track_realloc(void */*p*/, size_t /*sz*/);
+
+/* --- @track_memused@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    A count of how much memory is used currently.
+ *
+ * Use:                Returns the amount of memory which the @track_@-functions
+ *             above have counted as being currently allocated.
+ */
+
+extern unsigned long track_memused(void);
+
+/* --- @track_memlist@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Dumps a list of allocated blocks to standard output.
+ */
+
+extern void track_memlist(void);
+
+#undef malloc
+#define malloc(sz) track_malloc(sz)
+
+#undef free
+#define free(p) track_free(p)
+
+#undef realloc
+#define realloc(p, sz) track_realloc(p, sz)
+
+#endif
+
 /*----- That's all, folks -------------------------------------------------*/
 
 #ifdef __cplusplus