Home | History | Annotate | Line # | Download | only in include
      1 /*	$NetBSD: ntp_malloc.h,v 1.5 2020/05/25 20:47:19 christos Exp $	*/
      2 
      3 /*
      4  * Define malloc and friends.
      5  */
      6 #ifndef NTP_MALLOC_H
      7 #define NTP_MALLOC_H
      8 
      9 #ifdef HAVE_STDLIB_H
     10 # include <stdlib.h>
     11 #else
     12 # ifdef HAVE_MALLOC_H
     13 #  include <malloc.h>
     14 # endif
     15 #endif
     16 
     17 /*
     18  * Deal with platform differences declaring alloca()
     19  * This comes nearly verbatim from:
     20  *
     21  * http://www.gnu.org/software/autoconf/manual/autoconf.html#Particular-Functions
     22  *
     23  * The only modifications were to remove C++ support and guard against
     24  * redefining alloca.
     25  */
     26 #ifdef HAVE_ALLOCA_H
     27 # include <alloca.h>
     28 #elif defined __GNUC__
     29 # ifndef alloca
     30 #  define alloca __builtin_alloca
     31 # endif
     32 #elif defined _AIX
     33 # ifndef alloca
     34 #  define alloca __alloca
     35 # endif
     36 #elif defined _MSC_VER
     37 # include <malloc.h>
     38 # ifndef alloca
     39 #  define alloca _alloca
     40 # endif
     41 #else
     42 # include <stddef.h>
     43 void * alloca(size_t);
     44 #endif
     45 
     46 #ifdef EREALLOC_IMPL
     47 # define EREALLOC_CALLSITE	/* preserve __FILE__ and __LINE__ */
     48 #else
     49 # define EREALLOC_IMPL(ptr, newsz, filenm, loc) \
     50 	 realloc(ptr, (newsz))
     51 #endif
     52 
     53 #ifdef HAVE_STRINGS_H
     54 # include <strings.h>
     55 # define zero_mem(p, s)		bzero(p, s)
     56 #endif
     57 
     58 #ifndef zero_mem
     59 # define zero_mem(p, s)		memset(p, 0, s)
     60 #endif
     61 #define ZERO(var)		zero_mem(&(var), sizeof(var))
     62 
     63 #endif	/* NTP_MALLOC_H */
     64