summaryrefslogtreecommitdiffstats
path: root/lib/memory_vty.h
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2015-05-29 04:32:33 +0200
committerChristian Franke <nobody@nowhere.ws>2016-09-19 17:51:36 +0200
commit6ba26ad5d2bc863917914db0d8354eb834bba264 (patch)
treea4071343a705409e1336c54d12624e06283b72a0 /lib/memory_vty.h
parentisisd, lib, vtysh: Allow extract.pl to fully work (diff)
downloadfrr-6ba26ad5d2bc863917914db0d8354eb834bba264.tar.xz
frr-6ba26ad5d2bc863917914db0d8354eb834bba264.zip
lib: move memory.[ch] out of the way
The following commit will recreate memory.[ch]. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/memory_vty.h')
-rw-r--r--lib/memory_vty.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/memory_vty.h b/lib/memory_vty.h
new file mode 100644
index 000000000..4d7601607
--- /dev/null
+++ b/lib/memory_vty.h
@@ -0,0 +1,96 @@
+/* Memory management routine
+ Copyright (C) 1998 Kunihiro Ishiguro
+
+This file is part of GNU Zebra.
+
+GNU Zebra is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+GNU Zebra is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Zebra; see the file COPYING. If not, write to the Free
+Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA. */
+
+#ifndef _ZEBRA_MEMORY_VTY_H
+#define _ZEBRA_MEMORY_VTY_H
+
+#define array_size(ar) (sizeof(ar) / sizeof(ar[0]))
+
+/* For pretty printing of memory allocate information. */
+struct memory_list
+{
+ int index;
+ const char *format;
+};
+
+struct mlist {
+ struct memory_list *list;
+ const char *name;
+};
+
+#include "lib/memtypes.h"
+
+extern struct mlist mlists[];
+
+/* #define MEMORY_LOG */
+#ifdef MEMORY_LOG
+#define XMALLOC(mtype, size) \
+ mtype_zmalloc (__FILE__, __LINE__, (mtype), (size))
+#define XCALLOC(mtype, size) \
+ mtype_zcalloc (__FILE__, __LINE__, (mtype), (size))
+#define XREALLOC(mtype, ptr, size) \
+ mtype_zrealloc (__FILE__, __LINE__, (mtype), (ptr), (size))
+#define XFREE(mtype, ptr) \
+ do { \
+ mtype_zfree (__FILE__, __LINE__, (mtype), (ptr)); \
+ ptr = NULL; } \
+ while (0)
+#define XSTRDUP(mtype, str) \
+ mtype_zstrdup (__FILE__, __LINE__, (mtype), (str))
+#else
+#define XMALLOC(mtype, size) zmalloc ((mtype), (size))
+#define XCALLOC(mtype, size) zcalloc ((mtype), (size))
+#define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size))
+#define XFREE(mtype, ptr) do { \
+ zfree ((mtype), (ptr)); \
+ ptr = NULL; } \
+ while (0)
+#define XSTRDUP(mtype, str) zstrdup ((mtype), (str))
+#endif /* MEMORY_LOG */
+
+/* Prototypes of memory function. */
+extern void *zmalloc (int type, size_t size);
+extern void *zcalloc (int type, size_t size);
+extern void *zrealloc (int type, void *ptr, size_t size);
+extern void zfree (int type, void *ptr);
+extern char *zstrdup (int type, const char *str);
+
+extern void *mtype_zmalloc (const char *file, int line, int type, size_t size);
+
+extern void *mtype_zcalloc (const char *file, int line, int type, size_t size);
+
+extern void *mtype_zrealloc (const char *file, int line, int type, void *ptr,
+ size_t size);
+
+extern void mtype_zfree (const char *file, int line, int type,
+ void *ptr);
+
+extern char *mtype_zstrdup (const char *file, int line, int type,
+ const char *str);
+extern void memory_init (void);
+extern void log_memstats_stderr (const char *);
+
+/* return number of allocations outstanding for the type */
+extern unsigned long mtype_stats_alloc (int);
+
+/* Human friendly string for given byte count */
+#define MTYPE_MEMSTR_LEN 20
+extern const char *mtype_memstr (char *, size_t, unsigned long);
+#endif /* _ZEBRA_MEMORY_VTY_H */