X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b8ba0bc2f48c6b9b96dfedd8fd383b941d5fdd0b..e56c4673fbfe4965240725a4c09dc294d920c8d5:/src/xbt/mmalloc/mmprivate.h diff --git a/src/xbt/mmalloc/mmprivate.h b/src/xbt/mmalloc/mmprivate.h index a9018c5d98..41717886b8 100644 --- a/src/xbt/mmalloc/mmprivate.h +++ b/src/xbt/mmalloc/mmprivate.h @@ -26,10 +26,6 @@ # endif #endif -#ifndef MIN -# define MIN(A, B) ((A) < (B) ? (A) : (B)) -#endif - #define MMALLOC_MAGIC "mmalloc" /* Mapped file magic number */ #define MMALLOC_MAGIC_SIZE 8 /* Size of magic number buf */ #define MMALLOC_VERSION 1 /* Current mmalloc version */ @@ -116,26 +112,11 @@ struct alignlist { }; /* Doubly linked lists of free fragments. */ - struct list { struct list *next; struct list *prev; }; -/* Statistics available to the user. - FIXME: By design, the internals of the malloc package are no longer - exported to the user via an include file, so access to this data needs - to be via some other mechanism, such as mmstat_ where the - return value is the the user is interested in. */ - -struct mstats { - size_t bytes_total; /* Total size of the heap. */ - size_t chunks_used; /* Chunks allocated by the user. */ - size_t bytes_used; /* Byte total of user-allocated chunks. */ - size_t chunks_free; /* Chunks in the free list. */ - size_t bytes_free; /* Byte total of chunks in the free list. */ -}; - /* Internal structure that defines the format of the malloc-descriptor. This gets written to the base address of the region that mmalloc is managing, and thus also becomes the file header for the mapped file, @@ -165,47 +146,6 @@ struct mdesc { /* Some flag bits to keep track of various internal things. */ unsigned int flags; - /* If a system call made by the mmalloc package fails, the errno is - preserved for future examination. */ - int saved_errno; - - /* Pointer to the function that is used to get more core, or return core - to the system, for requests using this malloc descriptor. For memory - mapped regions, this is the mmap() based routine. There may also be - a single malloc descriptor that points to an sbrk() based routine - for systems without mmap() or for applications that call the mmalloc() - package with a NULL malloc descriptor. - - FIXME: For mapped regions shared by more than one process, this - needs to be maintained on a per-process basis. */ - void *(*morecore) (struct mdesc * mdp, int size); - - /* Pointer to the function that causes an abort when the memory checking - features are activated. By default this is set to abort(), but can - be set to another function by the application using mmalloc(). - - FIXME: For mapped regions shared by more than one process, this - needs to be maintained on a per-process basis. */ - void (*abortfunc) (void); - - /* Debugging hook for free. - - FIXME: For mapped regions shared by more than one process, this - needs to be maintained on a per-process basis. */ - void (*mfree_hook) (void *mdp, void *ptr); - - /* Debugging hook for `malloc'. - - FIXME: For mapped regions shared by more than one process, this - needs to be maintained on a per-process basis. */ - void *(*mmalloc_hook) (void *mdp, size_t size); - - /* Debugging hook for realloc. - - FIXME: For mapped regions shared by more than one process, this - needs to be maintained on a per-process basis. */ - void *(*mrealloc_hook) (void *mdp, void *ptr, size_t size); - /* Number of info entries. */ size_t heapsize; @@ -225,10 +165,6 @@ struct mdesc { malloc_info *heapinfo; - /* Instrumentation. */ - - struct mstats heapstats; - /* Free list headers for each fragment size. */ /* Free lists for each fragment size. */ @@ -263,8 +199,6 @@ struct mdesc { }; -int mmalloc_compare_heap(void *h1, void *h2, void *std_heap_addr); - int mmalloc_compare_mdesc(struct mdesc *mdp1, struct mdesc *mdp2, void *std_heap_addr); void mmalloc_display_info(void *h); @@ -274,7 +208,6 @@ void mmalloc_display_info(void *h); #define MMALLOC_DEVZERO (1 << 0) /* Have mapped to /dev/zero */ #define MMALLOC_ANONYMOUS (1 << 1) /* Use anonymous mapping */ #define MMALLOC_INITIALIZED (1 << 2) /* Initialized mmalloc */ -#define MMALLOC_MMCHECK_USED (1 << 3) /* mmcheckf() called already */ /* Internal version of `mfree' used in `morecore'. */ @@ -284,43 +217,20 @@ extern void __mmalloc_free(struct mdesc *mdp, void *ptr); extern struct mdesc *__mmalloc_default_mdp; -/* Initialize the first use of the default malloc descriptor, which uses - an sbrk() region. */ - -extern struct mdesc *__mmalloc_create_default_mdp(void); - -/* Grow or shrink a contiguous mapped region using mmap(). - Works much like sbrk(), only faster */ +/* Remap a mmalloc region that was previously mapped. */ -extern void *__mmalloc_mmap_morecore(struct mdesc *mdp, int size); +extern void *__mmalloc_remap_core(xbt_mheap_t mdp); +/* Get core for the memory region specified by MDP, using SIZE as the + amount to either add to or subtract from the existing region. Works + like sbrk(), but using mmap(). */ +extern void *mmorecore(struct mdesc *mdp, int size); -/* Remap a mmalloc region that was previously mapped. */ +/* Thread-safety (if the sem is already created) FIXME: KILLIT*/ +#define LOCK(mdp) \ + sem_wait(&mdp->sem) -extern void *__mmalloc_remap_core(struct mdesc *mdp); - -/* Macro to convert from a user supplied malloc descriptor to pointer to the - internal malloc descriptor. If the user supplied descriptor is NULL, then - use the default internal version, initializing it if necessary. Otherwise - just cast the user supplied version (which is void *) to the proper type - (struct mdesc *). */ - -#define MD_TO_MDP(md) \ - ((md) == NULL \ - ? __mmalloc_default_mdp \ - : (struct mdesc *) (md)) - -/* Thread-safety (if the sem is already created)*/ -#define LOCK(md) \ - do {\ - struct mdesc *lock_local_mdp = MD_TO_MDP(md); \ - sem_wait(&lock_local_mdp->sem); \ - } while (0) - -#define UNLOCK(md) \ - do { \ - struct mdesc *unlock_local_mdp = MD_TO_MDP(md); \ - sem_post(&unlock_local_mdp->sem); \ - } while (0) +#define UNLOCK(mdp) \ + sem_post(&mdp->sem) #endif /* __MMPRIVATE_H */