Blame malloc/malloc.h

Packit Service 82fcde
/* Prototypes and definition for malloc implementation.
Packit Service 82fcde
   Copyright (C) 1996-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef _MALLOC_H
Packit Service 82fcde
#define _MALLOC_H 1
Packit Service 82fcde
Packit Service 82fcde
#include <features.h>
Packit Service 82fcde
#include <stddef.h>
Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
Packit Service 82fcde
#ifdef _LIBC
Packit Service 82fcde
# define __MALLOC_HOOK_VOLATILE
Packit Service 82fcde
# define __MALLOC_DEPRECATED
Packit Service 82fcde
#else
Packit Service 82fcde
# define __MALLOC_HOOK_VOLATILE volatile
Packit Service 82fcde
# define __MALLOC_DEPRECATED __attribute_deprecated__
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
__BEGIN_DECLS
Packit Service 82fcde
Packit Service 82fcde
/* Allocate SIZE bytes of memory.  */
Packit Service 82fcde
extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0.  */
Packit Service 82fcde
extern void *calloc (size_t __nmemb, size_t __size)
Packit Service 82fcde
__THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Re-allocate the previously allocated block in __ptr, making the new
Packit Service 82fcde
   block SIZE bytes long.  */
Packit Service 82fcde
/* __attribute_malloc__ is not used, because if realloc returns
Packit Service 82fcde
   the same pointer that was passed to it, aliasing needs to be allowed
Packit Service 82fcde
   between objects pointed by the old and new pointers.  */
Packit Service 82fcde
extern void *realloc (void *__ptr, size_t __size)
Packit Service 82fcde
__THROW __attribute_warn_unused_result__;
Packit Service 82fcde
Packit Service 82fcde
/* Re-allocate the previously allocated block in PTR, making the new
Packit Service 82fcde
   block large enough for NMEMB elements of SIZE bytes each.  */
Packit Service 82fcde
/* __attribute_malloc__ is not used, because if reallocarray returns
Packit Service 82fcde
   the same pointer that was passed to it, aliasing needs to be allowed
Packit Service 82fcde
   between objects pointed by the old and new pointers.  */
Packit Service 82fcde
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
Packit Service 82fcde
__THROW __attribute_warn_unused_result__;
Packit Service 82fcde
Packit Service 82fcde
/* Free a block allocated by `malloc', `realloc' or `calloc'.  */
Packit Service 82fcde
extern void free (void *__ptr) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Allocate SIZE bytes allocated to ALIGNMENT bytes.  */
Packit Service 82fcde
extern void *memalign (size_t __alignment, size_t __size)
Packit Service 82fcde
__THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Allocate SIZE bytes on a page boundary.  */
Packit Service 82fcde
extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Equivalent to valloc(minimum-page-that-holds(n)), that is, round up
Packit Service 82fcde
   __size to nearest pagesize. */
Packit Service 82fcde
extern void *pvalloc (size_t __size) __THROW __attribute_malloc__ __wur;
Packit Service 82fcde
Packit Service 82fcde
/* Underlying allocation function; successive calls should return
Packit Service 82fcde
   contiguous pieces of memory.  */
Packit Service 82fcde
extern void *(*__morecore) (ptrdiff_t __size);
Packit Service 82fcde
Packit Service 82fcde
/* Default value of `__morecore'.  */
Packit Service 82fcde
extern void *__default_morecore (ptrdiff_t __size)
Packit Service 82fcde
__THROW __attribute_malloc__;
Packit Service 82fcde
Packit Service 82fcde
/* SVID2/XPG mallinfo structure */
Packit Service 82fcde
Packit Service 82fcde
struct mallinfo
Packit Service 82fcde
{
Packit Service 82fcde
  int arena;    /* non-mmapped space allocated from system */
Packit Service 82fcde
  int ordblks;  /* number of free chunks */
Packit Service 82fcde
  int smblks;   /* number of fastbin blocks */
Packit Service 82fcde
  int hblks;    /* number of mmapped regions */
Packit Service 82fcde
  int hblkhd;   /* space in mmapped regions */
Packit Service 82fcde
  int usmblks;  /* always 0, preserved for backwards compatibility */
Packit Service 82fcde
  int fsmblks;  /* space available in freed fastbin blocks */
Packit Service 82fcde
  int uordblks; /* total allocated space */
Packit Service 82fcde
  int fordblks; /* total free space */
Packit Service 82fcde
  int keepcost; /* top-most, releasable (via malloc_trim) space */
Packit Service 82fcde
};
Packit Service 82fcde
Packit Service 82fcde
/* Returns a copy of the updated current mallinfo. */
Packit Service 82fcde
extern struct mallinfo mallinfo (void) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* SVID2/XPG mallopt options */
Packit Service 82fcde
#ifndef M_MXFAST
Packit Service 82fcde
# define M_MXFAST  1    /* maximum request size for "fastbins" */
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef M_NLBLKS
Packit Service 82fcde
# define M_NLBLKS  2    /* UNUSED in this malloc */
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef M_GRAIN
Packit Service 82fcde
# define M_GRAIN   3    /* UNUSED in this malloc */
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef M_KEEP
Packit Service 82fcde
# define M_KEEP    4    /* UNUSED in this malloc */
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* mallopt options that actually do something */
Packit Service 82fcde
#define M_TRIM_THRESHOLD    -1
Packit Service 82fcde
#define M_TOP_PAD           -2
Packit Service 82fcde
#define M_MMAP_THRESHOLD    -3
Packit Service 82fcde
#define M_MMAP_MAX          -4
Packit Service 82fcde
#define M_CHECK_ACTION      -5
Packit Service 82fcde
#define M_PERTURB           -6
Packit Service 82fcde
#define M_ARENA_TEST        -7
Packit Service 82fcde
#define M_ARENA_MAX         -8
Packit Service 82fcde
Packit Service 82fcde
/* General SVID/XPG interface to tunable parameters. */
Packit Service 82fcde
extern int mallopt (int __param, int __val) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Release all but __pad bytes of freed top-most memory back to the
Packit Service 82fcde
   system. Return 1 if successful, else 0. */
Packit Service 82fcde
extern int malloc_trim (size_t __pad) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Report the number of usable allocated bytes associated with allocated
Packit Service 82fcde
   chunk __ptr. */
Packit Service 82fcde
extern size_t malloc_usable_size (void *__ptr) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Prints brief summary statistics on stderr. */
Packit Service 82fcde
extern void malloc_stats (void) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Output information about state of allocator to stream FP.  */
Packit Service 82fcde
extern int malloc_info (int __options, FILE *__fp) __THROW;
Packit Service 82fcde
Packit Service 82fcde
/* Hooks for debugging and user-defined versions. */
Packit Service 82fcde
extern void (*__MALLOC_HOOK_VOLATILE __free_hook) (void *__ptr,
Packit Service 82fcde
                                                   const void *)
Packit Service 82fcde
__MALLOC_DEPRECATED;
Packit Service 82fcde
extern void *(*__MALLOC_HOOK_VOLATILE __malloc_hook)(size_t __size,
Packit Service 82fcde
                                                     const void *)
Packit Service 82fcde
__MALLOC_DEPRECATED;
Packit Service 82fcde
extern void *(*__MALLOC_HOOK_VOLATILE __realloc_hook)(void *__ptr,
Packit Service 82fcde
                                                      size_t __size,
Packit Service 82fcde
                                                      const void *)
Packit Service 82fcde
__MALLOC_DEPRECATED;
Packit Service 82fcde
extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment,
Packit Service 82fcde
                                                       size_t __size,
Packit Service 82fcde
                                                       const void *)
Packit Service 82fcde
__MALLOC_DEPRECATED;
Packit Service 82fcde
extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
Packit Service 82fcde
Packit Service 82fcde
/* Activate a standard set of debugging hooks. */
Packit Service 82fcde
extern void __malloc_check_init (void) __THROW __MALLOC_DEPRECATED;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
__END_DECLS
Packit Service 82fcde
#endif /* malloc.h */