about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2013-09-20 11:10:54 -0300
committerAlexandre Oliva <aoliva@redhat.com>2013-09-20 11:10:54 -0300
commit3ea5be54364ae3344aa7c5c51a1f29f56854b123 (patch)
tree3cee52510a62de3ec43e9531c0eea434a30c9e48
parent3e181ddac9c1ca204df56eea3dbec414968e182a (diff)
downloadglibc-3ea5be54364ae3344aa7c5c51a1f29f56854b123.tar.gz
glibc-3ea5be54364ae3344aa7c5c51a1f29f56854b123.tar.xz
glibc-3ea5be54364ae3344aa7c5c51a1f29f56854b123.zip
Add first set of memory probes.
for ChangeLog

	* malloc/malloc.c: Include stap-probe.h.
	(__libc_mallopt): Add memory_mallopt probe.
	* malloc/arena.c (_int_new_arena): Add memory_arena_new probe.
	* manual/probes.texi: New.
	* manual/Makefile (chapters): Add probes.
	* manual/threads.texi: Set next node.
-rw-r--r--ChangeLog9
-rw-r--r--malloc/arena.c1
-rw-r--r--malloc/malloc.c4
-rw-r--r--manual/Makefile2
-rw-r--r--manual/probes.texi41
-rw-r--r--manual/threads.texi2
6 files changed, 57 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 512ddc1449..27b95d540d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-09-20  Alexandre Oliva <aoliva@redhat.com>
+
+	* malloc/malloc.c: Include stap-probe.h.
+	(__libc_mallopt): Add memory_mallopt probe.
+	* malloc/arena.c (_int_new_arena): Add memory_arena_new probe.
+	* manual/probes.texi: New.
+	* manual/Makefile (chapters): Add probes.
+	* manual/threads.texi: Set next node.
+
 2013-09-19  Wei-Lun Chao  <bluebat@member.fsf.org>
 
 	[BZ #15963, #13985]
diff --git a/malloc/arena.c b/malloc/arena.c
index 12a48ad7ba..0822fc85d5 100644
--- a/malloc/arena.c
+++ b/malloc/arena.c
@@ -736,6 +736,7 @@ _int_new_arena(size_t size)
   top(a) = (mchunkptr)ptr;
   set_head(top(a), (((char*)h + h->size) - ptr) | PREV_INUSE);
 
+  LIBC_PROBE (memory_arena_new, 2, a, size);
   tsd_setspecific(arena_key, (void *)a);
   mutex_init(&a->mutex);
   (void)mutex_lock(&a->mutex);
diff --git a/malloc/malloc.c b/malloc/malloc.c
index f7718a9c9a..97ba34f995 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1878,6 +1878,8 @@ static int perturb_byte;
 #define free_perturb(p, n) memset (p, perturb_byte & 0xff, n)
 
 
+#include <stap-probe.h>
+
 /* ------------------- Support for multiple arenas -------------------- */
 #include "arena.c"
 
@@ -4695,6 +4697,8 @@ int __libc_mallopt(int param_number, int value)
   /* Ensure initialization/consolidation */
   malloc_consolidate(av);
 
+  LIBC_PROBE (memory_mallopt, 2, param_number, value);
+
   switch(param_number) {
   case M_MXFAST:
     if (value >= 0 && value <= MAX_FAST_SIZE) {
diff --git a/manual/Makefile b/manual/Makefile
index 44c0fd4f68..7bb419aea4 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -42,7 +42,7 @@ chapters = $(addsuffix .texi, \
 		       message search pattern io stdio llio filesys	\
 		       pipe socket terminal syslog math arith time	\
 		       resource setjmp signal startup process job nss	\
-		       users sysinfo conf crypt debug threads)
+		       users sysinfo conf crypt debug threads probes)
 add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi))
 appendices = lang.texi header.texi install.texi maint.texi platform.texi \
 	     contrib.texi
diff --git a/manual/probes.texi b/manual/probes.texi
new file mode 100644
index 0000000000..fc02ffddc9
--- /dev/null
+++ b/manual/probes.texi
@@ -0,0 +1,41 @@
+@node Internal Probes
+@c @node Internal Probes, , POSIX Threads, Top
+@c %MENU% Probes to monitor libc internal behavior
+@chapter Internal probes
+
+In order to aid in debugging and monitoring internal behavior,
+@theglibc{} exposes nearly-zero-overhead SystemTap probes marked with
+the @code{libc} provider.
+
+These probes are not part of the @glibcadj{} stable ABI, and they are
+subject to change or removal across releases.  Our only promise with
+regard to them is that, if we find a need to remove or modify the
+arguments of a probe, the modified probe will have a different name, so
+that program monitors relying on the old probe will not get unexpected
+arguments.
+
+@menu
+* Memory Allocation Probes::  Probes in the memory allocation subsystem
+@end menu
+
+@node Memory Allocation Probes
+@section Memory Allocation Probes
+
+These probes are designed to signal relatively unusual situations within
+the virtual memory subsystem of @theglibc{}.
+
+@deftp Probe memory_arena_new (void *@var{$arg1}, size_t @var{$arg2})
+This probe is triggered when @code{malloc} allocates and initializes an
+additional arena (not the main arena), but before the arena is assigned
+to the running thread or inserted into the internal linked list of
+arenas.  The arena's @code{malloc_state} internal data structure is
+located at @var{$arg1}, within a newly-allocated heap big enough to hold
+at least @var{$arg2} bytes.
+@end deftp
+
+@deftp Probe memory_mallopt (int @var{$arg1}, int @var{$arg2})
+This probe is triggered when function @code{mallopt} is called to change
+@code{malloc} internal configuration parameters, before any change to
+the parameters is made.  The arguments @var{$arg1} and @var{$arg2} are
+the ones passed to the @code{mallopt} function.
+@end deftp
diff --git a/manual/threads.texi b/manual/threads.texi
index a23ac261ef..6b7523c525 100644
--- a/manual/threads.texi
+++ b/manual/threads.texi
@@ -1,5 +1,5 @@
 @node POSIX Threads
-@c @node POSIX Threads, , Cryptographic Functions, Top
+@c @node POSIX Threads, Intenal Probes, Cryptographic Functions, Top
 @chapter POSIX Threads
 @c %MENU% POSIX Threads
 @cindex pthreads