1 #include <../../nrnconf.h> 44 static char rcsid[] =
"memstat.c,v 1.1 1997/12/04 17:55:39 hines Exp";
84 unsigned long lp = (size_t)ptr;
98 if (mem_stat_var[k].
var ==
var) {
101 else if (mem_stat_var[k].
var ==
NULL) {
107 && mem_stat_var[j].
var !=
NULL)
110 if (mem_stat_var[j].
var ==
NULL)
return j;
111 else if (mem_stat_var[j].
var ==
var)
return -1;
114 while (mem_stat_var[j].
var !=
var && j < k
115 && mem_stat_var[j].
var !=
NULL)
117 if (mem_stat_var[j].
var ==
NULL)
return j;
118 else if (mem_stat_var[j].
var ==
var)
return -1;
121 "\n WARNING !!! static memory: mem_stat_var is too small\n");
123 " Increase MEM_HASHSIZE in file: %s (currently = %d)\n\n",
125 if ( !isatty(fileno(stdout)) ) {
127 "\n WARNING !!! static memory: mem_stat_var is too small\n");
129 " Increase MEM_HASHSIZE in file: %s (currently = %d)\n\n",
164 if ( type < 0 || type >= mem_connect[list].ntypes ||
165 mem_connect[list].free_funcs[
type] ==
NULL )
199 else if (mark == 0) {
228 || mem_connect[list].free_funcs ==
NULL )
235 else if (mark == 0) {
248 if (j == 0)
continue;
251 if (mem_stat_var[j].mark == mark) {
253 if ( free_fn !=
NULL )
254 (*free_fn)(*mem_stat_var[
j].
var);
260 mem_stat_var[
j].
mark = 0;
266 while (mem_hash_idx_end > 0 &&
mem_hash_idx[mem_hash_idx_end-1] == 0)
284 || mem_connect[list].free_funcs ==
NULL )
287 fprintf(
fp,
" Array mem_stat_var (list no. %d):\n",list);
290 if (j == 0)
continue;
293 fprintf(
fp,
" %d. var = 0x%p, type = %s, mark = %d\n",
294 k,mem_stat_var[j].
var,
295 mem_stat_var[j].
type < mem_connect[list].ntypes &&
296 mem_connect[list].free_funcs[mem_stat_var[j].
type] !=
NULL ?
297 mem_connect[list].type_names[(
int)mem_stat_var[j].
type] :
299 mem_stat_var[j].mark);
342 while ((par = va_arg(ap,
void **))) {
372 list = va_arg(ap,
int);
373 type = va_arg(ap,
int);
374 while ((par = va_arg(ap,
void **))) {
static int mem_lookup(void **var)
#define MEM_CONNECT_MAX_LISTS
static int mem_stat_mark_many
int mem_stat_mark(int mark)
MEM_CONNECT mem_connect[MEM_CONNECT_MAX_LISTS]
static philox4x32_key_t k
static MEM_STAT_STRUCT mem_stat_var[MEM_HASHSIZE]
void mem_stat_dump(FILE *fp, int list)
int const size_t const size_t n
static unsigned int mem_hash_idx_end
fprintf(stderr, "Don't know the location of params at %p\, pp)
int mem_stat_reg_list(void **var, int type, int list)
int mem_stat_show_mark(void)
void warning(const char *s, const char *t)
static unsigned int mem_hash(void **ptr)
#define MEM_HASHSIZE_FILE
static unsigned int mem_hash_idx[MEM_HASHSIZE]
static int mem_stat_mark_curr
#define error(err_num, fn_name)
int mem_stat_reg_vars(int list, int type,...)
double var(InputIterator begin, InputIterator end)
int mem_stat_free_list(int mark, int list)