This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.15-942-gbedee95


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  bedee953d820c79f704c6e17f778ede94eb95fc4 (commit)
      from  30b99d798f9728a96d4766dd3f7fcfe5daae8945 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=bedee953d820c79f704c6e17f778ede94eb95fc4

commit bedee953d820c79f704c6e17f778ede94eb95fc4
Author: Paul Pluzhnikov <ppluzhnikov@google.com>
Date:   Wed May 16 16:46:10 2012 -0700

    For [BZ #208], accumulate malloc stats over all arenas.

diff --git a/ChangeLog b/ChangeLog
index ecfdebc..e24512d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2012-05-16  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+	[BZ #208]
+	* malloc.c (int_mallinfo): Add parameter to accumulate statistics
+	in instead of returning them.  Return void.
+	(__libc_mallinfo): Accumulate over all arenas.
+	(__malloc_stats): Adjust for change in int_mallinfo interface.
+
 2012-05-16  Roland McGrath  <roland@hack.frob.com>
 
 	[BZ #10375]
diff --git a/NEWS b/NEWS
index 8d98497..2d2b6a8 100644
--- a/NEWS
+++ b/NEWS
@@ -9,25 +9,25 @@ Version 2.16
 
 * The following bugs are resolved with this release:
 
-  174, 350, 369, 411, 706, 766, 887, 2074, 2541, 2547, 2548, 2550, 2551,
-  2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678, 3335,
-  3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596, 4822,
-  5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794, 6884,
-  6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110, 10135, 10140,
-  10153, 10210, 10254, 10346, 10375 10545, 10716, 11174, 11322, 11365,
-  11451, 11494, 11521, 11677, 11837, 11959, 12047, 12097, 12193, 12297,
-  12298, 12301, 12340, 12354, 13058, 13361, 13525, 13526, 13527, 13528,
-  13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13553, 13555,
-  13556, 13559, 13563, 13566, 13583, 13592, 13594, 13613, 13618, 13637,
-  13656, 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738,
-  13739, 13750, 13758, 13760, 13761, 13775, 13786, 13787, 13792, 13806,
-  13824, 13840, 13841, 13844, 13846, 13851, 13852, 13854, 13871, 13872,
-  13873, 13879, 13883, 13884, 13885, 13886, 13892, 13895, 13908, 13910,
-  13911, 13912, 13913, 13914, 13915, 13916, 13917, 13918, 13919, 13920,
-  13921, 13922, 13923, 13924, 13926, 13927, 13928, 13938, 13941, 13942,
-  13954, 13955, 13956, 13963, 13967, 13970, 13973, 13979, 13983, 13986,
-  14012, 14027, 14033, 14034, 14040, 14043, 14044, 14049, 14053, 14055,
-  14064, 14080, 14083, 14103, 14104, 14109
+  174, 208, 350, 369, 411, 706, 766, 887, 2074, 2541, 2547, 2548, 2550,
+  2551, 2552, 2553, 2554, 2562, 2563, 2565, 2566, 2570, 2576, 2636, 2678,
+  3335, 3440, 3748, 3768, 3866, 3868, 3906, 3976, 3992, 4026, 4108, 4596,
+  4822, 5077, 5461, 5805, 5993, 6471, 6486, 6578, 6649, 6730, 6770, 6794,
+  6884, 6890, 6894, 6895, 6907, 6911, 6959, 7064, 9739, 9902, 10110,
+  10135, 10140, 10153, 10210, 10254, 10346, 10375 10545, 10716, 11174,
+  11322, 11365, 11451, 11494, 11521, 11677, 11837, 11959, 12047, 12097,
+  12193, 12297, 12298, 12301, 12340, 12354, 13058, 13361, 13525, 13526,
+  13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552,
+  13553, 13555, 13556, 13559, 13563, 13566, 13583, 13592, 13594, 13613,
+  13618, 13637, 13656, 13658, 13673, 13691, 13695, 13704, 13705, 13706,
+  13726, 13738, 13739, 13750, 13758, 13760, 13761, 13775, 13786, 13787,
+  13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851, 13852, 13854,
+  13871, 13872, 13873, 13879, 13883, 13884, 13885, 13886, 13892, 13895,
+  13908, 13910, 13911, 13912, 13913, 13914, 13915, 13916, 13917, 13918,
+  13919, 13920, 13921, 13922, 13923, 13924, 13926, 13927, 13928, 13938,
+  13941, 13942, 13954, 13955, 13956, 13963, 13967, 13970, 13973, 13979,
+  13983, 13986, 14012, 14027, 14033, 14034, 14040, 14043, 14044, 14049,
+  14053, 14055, 14064, 14080, 14083, 14103, 14104, 14109
 
 * ISO C11 support:
 
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 79cdc52..abe3872 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4513,12 +4513,12 @@ __malloc_usable_size(void* m)
 
 /*
   ------------------------------ mallinfo ------------------------------
+  Accumulate malloc statistics for arena AV into M.
 */
 
-static struct mallinfo
-int_mallinfo(mstate av)
+static void
+int_mallinfo(mstate av, struct mallinfo *m)
 {
-  struct mallinfo mi;
   size_t i;
   mbinptr b;
   mchunkptr p;
@@ -4558,29 +4558,40 @@ int_mallinfo(mstate av)
     }
   }
 
-  mi.smblks = nfastblocks;
-  mi.ordblks = nblocks;
-  mi.fordblks = avail;
-  mi.uordblks = av->system_mem - avail;
-  mi.arena = av->system_mem;
-  mi.hblks = mp_.n_mmaps;
-  mi.hblkhd = mp_.mmapped_mem;
-  mi.fsmblks = fastavail;
-  mi.keepcost = chunksize(av->top);
-  mi.usmblks = mp_.max_total_mem;
-  return mi;
+  m->smblks += nfastblocks;
+  m->ordblks += nblocks;
+  m->fordblks += avail;
+  m->uordblks += av->system_mem - avail;
+  m->arena += av->system_mem;
+  m->fsmblks += fastavail;
+  if (av == &main_arena)
+    {
+      m->hblks = mp_.n_mmaps;
+      m->hblkhd = mp_.mmapped_mem;
+      m->usmblks = mp_.max_total_mem;
+      m->keepcost = chunksize(av->top);
+    }
 }
 
 
 struct mallinfo __libc_mallinfo()
 {
   struct mallinfo m;
+  mstate ar_ptr;
 
   if(__malloc_initialized < 0)
     ptmalloc_init ();
-  (void)mutex_lock(&main_arena.mutex);
-  m = int_mallinfo(&main_arena);
-  (void)mutex_unlock(&main_arena.mutex);
+
+  memset(&m, 0, sizeof (m));
+  ar_ptr = &main_arena;
+  do {
+    (void)mutex_lock(&ar_ptr->mutex);
+    int_mallinfo(ar_ptr, &m);
+    (void)mutex_unlock(&ar_ptr->mutex);
+
+    ar_ptr = ar_ptr->next;
+  } while (ar_ptr != &main_arena);
+
   return m;
 }
 
@@ -4593,7 +4604,6 @@ __malloc_stats()
 {
   int i;
   mstate ar_ptr;
-  struct mallinfo mi;
   unsigned int in_use_b = mp_.mmapped_mem, system_b = in_use_b;
 #if THREAD_STATS
   long stat_lock_direct = 0, stat_lock_loop = 0, stat_lock_wait = 0;
@@ -4605,8 +4615,11 @@ __malloc_stats()
   int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
   ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
   for (i=0, ar_ptr = &main_arena;; i++) {
+    struct mallinfo mi;
+
+    memset(&mi, 0, sizeof(mi));
     (void)mutex_lock(&ar_ptr->mutex);
-    mi = int_mallinfo(ar_ptr);
+    int_mallinfo(ar_ptr, &mi);
     fprintf(stderr, "Arena %d:\n", i);
     fprintf(stderr, "system bytes     = %10u\n", (unsigned int)mi.arena);
     fprintf(stderr, "in use bytes     = %10u\n", (unsigned int)mi.uordblks);

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |    8 ++++++++
 NEWS            |   38 +++++++++++++++++++-------------------
 malloc/malloc.c |   51 ++++++++++++++++++++++++++++++++-------------------
 3 files changed, 59 insertions(+), 38 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]