Macaulay2 Engine
Loading...
Searching...
No Matches
m2-mem.h
Go to the documentation of this file.
1#ifndef m2_mem_included
2#define m2_mem_included
3
42
43#include <stdlib.h>
44
45// d/debug.h
46#ifndef NDEBUG
47
48#if defined(__cplusplus)
49extern "C" {
50#endif
51
52 extern void trap(void);
53 extern void *trapaddr;
54 extern int trapcount;
55 extern int trapset;
56 extern void trapchk(void *);
57 extern void trapchk_size(size_t);
58 extern int badBlock();
59
60 static __attribute__ ((unused)) void debug_version() {}
61
62#if defined(__cplusplus)
63}
64#endif
65
66#define TRAPCHK(p) trapchk(p)
67#define TRAPCHK_SIZE(n) trapchk_size(n)
68
69#else
70
71#define TRAPCHK(p) (void)p
72#define TRAPCHK_SIZE(n)
73
74#endif
75
76// d/M2mem.h
77
78
79#ifdef NDEBUG
80#define NVALGRIND 1
81#endif
82
83#include <valgrind/memcheck.h>
84
85
86
87
88#if defined(__cplusplus)
89extern "C" {
90#endif
91
92extern void outofmem2(size_t);
93extern char *getmem(size_t);
94extern void freemem(void *);
95extern void freememlen(void *, size_t);
96extern char *getmem_clear(size_t);
97extern char *getmem_atomic(size_t);
98 //extern char *getmem_malloc(size_t);
99extern char *getmem_atomic_clear(size_t);
100 //extern char *getmoremem(char *, size_t oldsize, size_t newsize);
101 //extern char *getmoremem1(char *, size_t newsize);
102 //extern char *getmoremem_atomic(char *, size_t oldsize, size_t newsize);
103
104/* Valgrind helper functions,
105 * NVALGRIND can be defined to explicitly disable this
106 * But also valgrind.h (included by memcheck.h) will define NVALGRIND
107 * if we are on a platform it doesn't understand
108 */
109#ifndef NVALGRIND
110void *I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1,GC_malloc)(size_t);
111void *I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1,GC_malloc_atomic)(size_t);
112void *I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1,GC_malloc_ignore_off_page)(size_t);
113void *I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1,GC_malloc_atomic_ignore_off_page)(size_t);
114void *I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1,GC_realloc)(void*, size_t);
115#endif /* NVALGRIND */
116
117#ifdef MEMDEBUG
118 /* from d/memdebug.h */
119 void M2_debug_free(void *);
120 void* M2_debug_malloc(size_t size);
121 void* M2_debug_malloc_atomic(size_t size);
122 void* M2_debug_malloc_atomic_uncollectable(size_t size);
123 void* M2_debug_realloc(void *,size_t size);
124 void* M2_debug_malloc_uncollectable(size_t size);
125 void *M2_debug_to_outer(void *p);
126 void *M2_debug_to_inner(void *f);
127#endif
128
129#define sizeofarray(s,len) (sizeof(*(s)) + (len)*sizeof((s)->array[0]))
130#define sizeofarraytype(S,len) sizeofarray((S)0,len)
131#define sizeofstruct(s) sizeof(*(s))
132#define sizeofstructtype(S) sizeofstruct((S)0)
133
134#if defined(__cplusplus)
135#define getmemarraytype(S,len) reinterpret_cast<S>(getmem(sizeofarraytype(S,len)))
136#define getmemstructtype(S) reinterpret_cast<S>(getmem(sizeofstructtype(S)))
137#define getmematomicarraytype(S,len) reinterpret_cast<S>(getmem_atomic(sizeofarraytype(S,len)))
138#define getmematomicstructtype(S) reinterpret_cast<S>(getmem_atomic(sizeofstructtype(S)))
139#define getmemvectortype(S,len) reinterpret_cast<S*>(getmem(sizeof(S)*len))
140#define getmematomicvectortype(S,len) reinterpret_cast<S*>(getmem_atomic(sizeof(S)*(len)))
141#else
142#define getmemarraytype(S,len) (S)(getmem(sizeofarraytype(S,len)))
143#define getmemstructtype(S) (S)(getmem(sizeofstructtype(S)))
144#define getmematomicarraytype(S,len) (S)(getmem_atomic(sizeofarraytype(S,len)))
145#define getmematomicstructtype(S) (S)(getmem_atomic(sizeofstructtype(S)))
146#define getmemvectortype(S,len) (S*)(getmem(sizeof(S)*len))
147#define getmematomicvectortype(S,len) (S*)(getmem_atomic(sizeof(S)*(len)))
148#endif
149
150
151#if defined(__cplusplus)
152}
153#endif
154
155
156#endif
157
158/*
159 Local Variables:
160 indent-tabs-mode: nil
161 End:
162*/
int p
void * trapaddr
Definition m2-mem.cpp:32
int trapset
Definition m2-mem.cpp:34
int trapcount
Definition m2-mem.cpp:33
void freemem(void *)
Definition m2-mem.cpp:103
void outofmem2(size_t)
Definition m2-mem.cpp:64
int badBlock()
void trapchk_size(size_t)
Definition m2-mem.cpp:44
void freememlen(void *, size_t)
Definition m2-mem.cpp:93
char * getmem_atomic(size_t)
Definition m2-mem.cpp:135
char * getmem_clear(size_t)
Definition m2-mem.cpp:112
char * getmem_atomic_clear(size_t)
Definition m2-mem.cpp:167
char * getmem(size_t)
Definition m2-mem.cpp:74
void * I_WRAP_SONAME_FNNAME_ZU(libgcZdsoZd1, GC_malloc)(size_t)
Definition m2-mem.cpp:235
static __attribute__((unused)) void debug_version()
Definition m2-mem.h:60
void trapchk(void *)
Definition m2-mem.cpp:40
void trap(void)
Definition m2-mem.cpp:37
void size_t
Definition m2-mem.h:114