};
/* 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_<something> where the
- return value is the <something> 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,
/* 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;
-
/* Number of info entries. */
size_t heapsize;
malloc_info *heapinfo;
- /* Instrumentation. */
-
- struct mstats heapstats;
-
/* Free list headers for each fragment size. */
/* Free lists for each fragment size. */
};
-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);
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 */
-
-extern void *__mmalloc_mmap_morecore(struct mdesc *mdp, int size);
-
-
/* Remap a mmalloc region that was previously mapped. */
-extern void *__mmalloc_remap_core(struct mdesc *mdp);
+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);
-/* 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)
+/* Thread-safety (if the sem is already created) FIXME: KILLIT*/
+#define LOCK(mdp) \
+ sem_wait(&mdp->sem)
+
+#define UNLOCK(mdp) \
+ sem_post(&mdp->sem)
#endif /* __MMPRIVATE_H */