summaryrefslogtreecommitdiffstats
path: root/include/sh_mem.h
blob: 04499421b7a7a1bfd2ff2c22c114bb62f14f95d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* SAMHAIN file system integrity testing                                   */
/* Copyright (C) 1999 Rainer Wichmann                                      */
/*                                                                         */
/*  This program 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 of the License, or      */
/*  (at your option) any later version.                                    */
/*                                                                         */
/*  This program 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 this program; if not, write to the Free Software            */
/*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.              */


#ifndef SH_MEM_H
#define SH_MEM_H


#ifdef MEM_DEBUG

void   sh_mem_openf (char * file, int fd);
void   sh_mem_closef (int fd);
void   sh_mem_check (void);
void   sh_mem_dump (void);
void   sh_mem_free (void * a, char * file, int line);
void * sh_mem_malloc (size_t size, char * file, int line);
void sh_mem_stat (void);

#define SH_FREE(a)   sh_mem_free((a), FIL__, __LINE__)
#define SH_ALLOC(a)  sh_mem_malloc((a), FIL__, __LINE__) 
#define SH_OALLOC(a,b,c)  sh_mem_malloc((a), (b), (c)) 

#else

#if defined(__GNUC__) && (__GNUC__ >= 3)
#undef  SH_GNUC_MALLOC
#define SH_GNUC_MALLOC   __attribute__((malloc))
#else
#undef  SH_GNUC_MALLOC
#define SH_GNUC_MALLOC
#endif

void   sh_mem_free (/*@only@*//*@out@*//*@null@*/ void * a);
/*@only@*//*@notnull@*/void * sh_mem_malloc (size_t size) SH_GNUC_MALLOC;

#define SH_FREE(a)   sh_mem_free(a)
#define SH_ALLOC(a)  sh_mem_malloc(a)
#define SH_OALLOC(a,b,c)  ((void) (b),		 \
			   (void) (c),		 \
			   sh_mem_malloc(a))	 \

#endif

/* #ifndef SH_MEM_H */
#endif