X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ec2d068ad2f30860ebe569929609888acb662117..872cf95ab5a2b08aa1f2c6ebba29b9f86b0ba54e:/src/include/xbt/mmalloc.h diff --git a/src/include/xbt/mmalloc.h b/src/include/xbt/mmalloc.h index ab6ca00e2a..bdff2c11a2 100644 --- a/src/include/xbt/mmalloc.h +++ b/src/include/xbt/mmalloc.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -7,28 +7,33 @@ This file was then part of the GNU C Library. */ #ifndef SIMGRID_MMALLOC_H -#define SIMGRID_MMALLOC_H 1 +#define SIMGRID_MMALLOC_H #include "src/internal_config.h" -#if HAVE_MMALLOC + +/** Environment variable name used to pass the communication socket. + * + * It is set by `simgrid-mc` to enable MC support in the children processes. + * + * It is placed in this file so that it's visible from mmalloc and MC without sharing anythin of xbt in mmalloc + */ +#define MC_ENV_SOCKET_FD "SIMGRID_MC_SOCKET_FD" #include /* for NULL */ #include /* for size_t */ -#include "xbt/dict.h" -#include "xbt/dynar.h" - -SG_BEGIN_DECL() +SG_BEGIN_DECL /* Datatype representing a separate heap. The whole point of the mmalloc module is to allow several such heaps in the * process. It thus works by redefining all the classical memory management functions (malloc and friends) with an * extra first argument: the heap in which the memory is to be taken. * - * The heap structure itself is an opaque object that shouldnt be messed with. + * The heap structure itself is an opaque object that shouldn't be messed with. */ typedef struct mdesc s_xbt_mheap_t; -typedef struct mdesc* xbt_mheap_t; +typedef s_xbt_mheap_t* xbt_mheap_t; +#if HAVE_MMALLOC /* Allocate SIZE bytes of memory (and memset it to 0). */ XBT_PUBLIC void* mmalloc(xbt_mheap_t md, size_t size); @@ -41,29 +46,19 @@ XBT_PUBLIC void* mrealloc(xbt_mheap_t md, void* ptr, size_t size); /* Free a block allocated by `mmalloc', `mrealloc' or `mcalloc'. */ XBT_PUBLIC void mfree(xbt_mheap_t md, void* ptr); -XBT_PUBLIC xbt_mheap_t xbt_mheap_new(int fd, void* baseaddr); - #define XBT_MHEAP_OPTION_MEMSET 1 -XBT_PUBLIC xbt_mheap_t xbt_mheap_new_options(int fd, void* baseaddr, int options); - -XBT_PUBLIC void xbt_mheap_destroy_no_free(xbt_mheap_t md); +XBT_PUBLIC xbt_mheap_t xbt_mheap_new(void* baseaddr, int options); XBT_PUBLIC void* xbt_mheap_destroy(xbt_mheap_t md); -/* return the heap used when NULL is passed as first argument to any mm* function */ -XBT_PUBLIC xbt_mheap_t mmalloc_get_default_md(void); - -/* To change the heap used when using the legacy version malloc/free/realloc and such */ -xbt_mheap_t mmalloc_set_current_heap(xbt_mheap_t new_heap); +/* To get the heap used when using the legacy version malloc/free/realloc and such */ xbt_mheap_t mmalloc_get_current_heap(void); -size_t mmalloc_get_bytes_used(xbt_mheap_t); -ssize_t mmalloc_get_busy_size(xbt_mheap_t, void* ptr); - -void* malloc_no_memset(size_t n); - -SG_END_DECL() +/* Returns true if we are using the internal mmalloc, and false if we are using the libc's malloc */ +XBT_PUBLIC int malloc_use_mmalloc(void); #endif +SG_END_DECL + #endif /* SIMGRID_MMALLOC_H */