aboutsummaryrefslogtreecommitdiff
path: root/malloc/malloc.c
diff options
context:
space:
mode:
authorOndřej Bílka <neleai@seznam.cz>2014-05-30 13:23:39 +0200
committerOndřej Bílka <neleai@seznam.cz>2014-05-30 13:23:39 +0200
commit20c138997ae767c9ccdffdf69f9ba5336b5b794b (patch)
treee52d6062a062a6509fc41e9921bba9599a976b2a /malloc/malloc.c
parent1670e207c57513da84462c2a018f01653e7d1cc6 (diff)
downloadglibc-20c138997ae767c9ccdffdf69f9ba5336b5b794b.tar
glibc-20c138997ae767c9ccdffdf69f9ba5336b5b794b.tar.gz
glibc-20c138997ae767c9ccdffdf69f9ba5336b5b794b.tar.bz2
glibc-20c138997ae767c9ccdffdf69f9ba5336b5b794b.zip
revert commit fdfd175d46ac6a810ebdeb2a2936e6d7d13995ab
Diffstat (limited to 'malloc/malloc.c')
-rw-r--r--malloc/malloc.c260
1 files changed, 125 insertions, 135 deletions
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 92ad9f9ab3..1120d4df84 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4986,162 +4986,154 @@ __posix_memalign (void **memptr, size_t alignment, size_t size)
}
weak_alias (__posix_memalign, posix_memalign)
-static inline void
-mi_arena (mstate ar_ptr,
- FILE *fp,
- size_t *total_nblocks,
- size_t *total_nfastblocks,
- size_t *total_avail,
- size_t *total_fastavail,
- size_t *total_system,
- size_t *total_max_system,
- size_t *total_aspace,
- size_t *total_aspace_mprotect)
+
+int
+malloc_info (int options, FILE *fp)
{
- int n = 0;
+ /* For now, at least. */
+ if (options != 0)
+ return EINVAL;
- fprintf (fp, "<heap nr=\"%d\">\n<sizes>\n", n++);
+ int n = 0;
+ size_t total_nblocks = 0;
+ size_t total_nfastblocks = 0;
+ size_t total_avail = 0;
+ size_t total_fastavail = 0;
+ size_t total_system = 0;
+ size_t total_max_system = 0;
+ size_t total_aspace = 0;
+ size_t total_aspace_mprotect = 0;
- size_t nblocks = 0;
- size_t nfastblocks = 0;
- size_t avail = 0;
- size_t fastavail = 0;
- struct
+ void
+ mi_arena (mstate ar_ptr)
{
- size_t from;
- size_t to;
- size_t total;
- size_t count;
- } sizes[NFASTBINS + NBINS - 1];
-#define nsizes (sizeof (sizes) / sizeof (sizes[0]))
+ fprintf (fp, "<heap nr=\"%d\">\n<sizes>\n", n++);
- mutex_lock (&ar_ptr->mutex);
- for (size_t i = 0; i < NFASTBINS; ++i)
+ size_t nblocks = 0;
+ size_t nfastblocks = 0;
+ size_t avail = 0;
+ size_t fastavail = 0;
+ struct
{
- mchunkptr p = fastbin (ar_ptr, i);
- if (p != NULL)
- {
- size_t nthissize = 0;
- size_t thissize = chunksize (p);
+ size_t from;
+ size_t to;
+ size_t total;
+ size_t count;
+ } sizes[NFASTBINS + NBINS - 1];
+#define nsizes (sizeof (sizes) / sizeof (sizes[0]))
- while (p != NULL)
- {
- ++nthissize;
- p = p->fd;
- }
+ mutex_lock (&ar_ptr->mutex);
- fastavail += nthissize * thissize;
- nfastblocks += nthissize;
- sizes[i].from = thissize - (MALLOC_ALIGNMENT - 1);
- sizes[i].to = thissize;
- sizes[i].count = nthissize;
- }
- else
- sizes[i].from = sizes[i].to = sizes[i].count = 0;
+ for (size_t i = 0; i < NFASTBINS; ++i)
+ {
+ mchunkptr p = fastbin (ar_ptr, i);
+ if (p != NULL)
+ {
+ size_t nthissize = 0;
+ size_t thissize = chunksize (p);
- sizes[i].total = sizes[i].count * sizes[i].to;
- }
+ while (p != NULL)
+ {
+ ++nthissize;
+ p = p->fd;
+ }
+ fastavail += nthissize * thissize;
+ nfastblocks += nthissize;
+ sizes[i].from = thissize - (MALLOC_ALIGNMENT - 1);
+ sizes[i].to = thissize;
+ sizes[i].count = nthissize;
+ }
+ else
+ sizes[i].from = sizes[i].to = sizes[i].count = 0;
- mbinptr bin;
- struct malloc_chunk *r;
+ sizes[i].total = sizes[i].count * sizes[i].to;
+ }
- for (size_t i = 1; i < NBINS; ++i)
- {
- bin = bin_at (ar_ptr, i);
- r = bin->fd;
- sizes[NFASTBINS - 1 + i].from = ~((size_t) 0);
- sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
- = sizes[NFASTBINS - 1 + i].count = 0;
-
- if (r != NULL)
- while (r != bin)
- {
- ++sizes[NFASTBINS - 1 + i].count;
- sizes[NFASTBINS - 1 + i].total += r->size;
- sizes[NFASTBINS - 1 + i].from
- = MIN (sizes[NFASTBINS - 1 + i].from, r->size);
- sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
- r->size);
-
- r = r->fd;
- }
- if (sizes[NFASTBINS - 1 + i].count == 0)
- sizes[NFASTBINS - 1 + i].from = 0;
- nblocks += sizes[NFASTBINS - 1 + i].count;
- avail += sizes[NFASTBINS - 1 + i].total;
- }
+ mbinptr bin;
+ struct malloc_chunk *r;
- mutex_unlock (&ar_ptr->mutex);
+ for (size_t i = 1; i < NBINS; ++i)
+ {
+ bin = bin_at (ar_ptr, i);
+ r = bin->fd;
+ sizes[NFASTBINS - 1 + i].from = ~((size_t) 0);
+ sizes[NFASTBINS - 1 + i].to = sizes[NFASTBINS - 1 + i].total
+ = sizes[NFASTBINS - 1 + i].count = 0;
+
+ if (r != NULL)
+ while (r != bin)
+ {
+ ++sizes[NFASTBINS - 1 + i].count;
+ sizes[NFASTBINS - 1 + i].total += r->size;
+ sizes[NFASTBINS - 1 + i].from
+ = MIN (sizes[NFASTBINS - 1 + i].from, r->size);
+ sizes[NFASTBINS - 1 + i].to = MAX (sizes[NFASTBINS - 1 + i].to,
+ r->size);
+
+ r = r->fd;
+ }
- *total_nfastblocks += nfastblocks;
- *total_fastavail += fastavail;
+ if (sizes[NFASTBINS - 1 + i].count == 0)
+ sizes[NFASTBINS - 1 + i].from = 0;
+ nblocks += sizes[NFASTBINS - 1 + i].count;
+ avail += sizes[NFASTBINS - 1 + i].total;
+ }
- *total_nblocks += nblocks;
- *total_avail += avail;
+ mutex_unlock (&ar_ptr->mutex);
- for (size_t i = 0; i < nsizes; ++i)
- if (sizes[i].count != 0 && i != NFASTBINS)
- fprintf (fp, " \
-<size from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
- sizes[i].from, sizes[i].to, sizes[i].total, sizes[i].count);
+ total_nfastblocks += nfastblocks;
+ total_fastavail += fastavail;
- if (sizes[NFASTBINS].count != 0)
- fprintf (fp, "\
-<unsorted from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
- sizes[NFASTBINS].from, sizes[NFASTBINS].to,
- sizes[NFASTBINS].total, sizes[NFASTBINS].count);
+ total_nblocks += nblocks;
+ total_avail += avail;
- *total_system += ar_ptr->system_mem;
- *total_max_system += ar_ptr->max_system_mem;
+ for (size_t i = 0; i < nsizes; ++i)
+ if (sizes[i].count != 0 && i != NFASTBINS)
+ fprintf (fp, " \
+<size from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
+ sizes[i].from, sizes[i].to, sizes[i].total, sizes[i].count);
- fprintf (fp,
- "</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
- "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
- "<system type=\"current\" size=\"%zu\"/>\n"
- "<system type=\"max\" size=\"%zu\"/>\n",
- nfastblocks, fastavail, nblocks, avail,
- ar_ptr->system_mem, ar_ptr->max_system_mem);
+ if (sizes[NFASTBINS].count != 0)
+ fprintf (fp, "\
+<unsorted from=\"%zu\" to=\"%zu\" total=\"%zu\" count=\"%zu\"/>\n",
+ sizes[NFASTBINS].from, sizes[NFASTBINS].to,
+ sizes[NFASTBINS].total, sizes[NFASTBINS].count);
- if (ar_ptr != &main_arena)
- {
- heap_info *heap = heap_for_ptr (top (ar_ptr));
- fprintf (fp,
- "<aspace type=\"total\" size=\"%zu\"/>\n"
- "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
- heap->size, heap->mprotect_size);
- *total_aspace += heap->size;
- *total_aspace_mprotect += heap->mprotect_size;
- }
- else
- {
- fprintf (fp,
- "<aspace type=\"total\" size=\"%zu\"/>\n"
- "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
- ar_ptr->system_mem, ar_ptr->system_mem);
- *total_aspace += ar_ptr->system_mem;
- *total_aspace_mprotect += ar_ptr->system_mem;
- }
+ total_system += ar_ptr->system_mem;
+ total_max_system += ar_ptr->max_system_mem;
- fputs ("</heap>\n", fp);
-}
+ fprintf (fp,
+ "</sizes>\n<total type=\"fast\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<total type=\"rest\" count=\"%zu\" size=\"%zu\"/>\n"
+ "<system type=\"current\" size=\"%zu\"/>\n"
+ "<system type=\"max\" size=\"%zu\"/>\n",
+ nfastblocks, fastavail, nblocks, avail,
+ ar_ptr->system_mem, ar_ptr->max_system_mem);
-int
-malloc_info (int options, FILE *fp)
-{
- /* For now, at least. */
- if (options != 0)
- return EINVAL;
+ if (ar_ptr != &main_arena)
+ {
+ heap_info *heap = heap_for_ptr (top (ar_ptr));
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ heap->size, heap->mprotect_size);
+ total_aspace += heap->size;
+ total_aspace_mprotect += heap->mprotect_size;
+ }
+ else
+ {
+ fprintf (fp,
+ "<aspace type=\"total\" size=\"%zu\"/>\n"
+ "<aspace type=\"mprotect\" size=\"%zu\"/>\n",
+ ar_ptr->system_mem, ar_ptr->system_mem);
+ total_aspace += ar_ptr->system_mem;
+ total_aspace_mprotect += ar_ptr->system_mem;
+ }
- size_t total_nblocks = 0;
- size_t total_nfastblocks = 0;
- size_t total_avail = 0;
- size_t total_fastavail = 0;
- size_t total_system = 0;
- size_t total_max_system = 0;
- size_t total_aspace = 0;
- size_t total_aspace_mprotect = 0;
+ fputs ("</heap>\n", fp);
+ }
if (__malloc_initialized < 0)
ptmalloc_init ();
@@ -5152,9 +5144,7 @@ malloc_info (int options, FILE *fp)
mstate ar_ptr = &main_arena;
do
{
- mi_arena (ar_ptr, fp, &total_nblocks, &total_nfastblocks, &total_avail,
- &total_fastavail, &total_system, &total_max_system,
- &total_aspace, &total_aspace_mprotect);
+ mi_arena (ar_ptr);
ar_ptr = ar_ptr->next;
}
while (ar_ptr != &main_arena);