diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-12-16 13:43:38 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-12-28 14:57:57 -0300 |
commit | a75b1e35c542342f3f3bc5c8ecc9c9c9c7a48c49 (patch) | |
tree | bf5958e08900106b0ed320a74e6cef34f8d702c4 | |
parent | 92ff345137bfc9e1ecf23c604b7022a25e36cb32 (diff) | |
download | glibc-a75b1e35c542342f3f3bc5c8ecc9c9c9c7a48c49.tar.gz glibc-a75b1e35c542342f3f3bc5c8ecc9c9c9c7a48c49.tar.xz glibc-a75b1e35c542342f3f3bc5c8ecc9c9c9c7a48c49.zip |
malloc: Use hp-timing on libmemusage
Instead of reimplemeting on GETTIME macro.
-rw-r--r-- | malloc/memusage.c | 24 | ||||
-rw-r--r-- | sysdeps/generic/memusage.h | 12 | ||||
-rw-r--r-- | sysdeps/i386/i686/memusage.h | 1 | ||||
-rw-r--r-- | sysdeps/ia64/memusage.h | 7 | ||||
-rw-r--r-- | sysdeps/x86_64/memusage.h | 1 |
5 files changed, 21 insertions, 24 deletions
diff --git a/malloc/memusage.c b/malloc/memusage.c index de39ad1c1a..eaf4965e5e 100644 --- a/malloc/memusage.c +++ b/malloc/memusage.c @@ -34,6 +34,7 @@ #include <sys/time.h> #include <memusage.h> +#include <hp-timing.h> /* Pointer to the real functions. These are determined used `dlsym' when really needed. */ @@ -114,6 +115,23 @@ static struct entry buffer[2 * DEFAULT_BUFFER_SIZE]; static uint32_t buffer_cnt; static struct entry first; +static void +gettime (struct entry *e) +{ +#if HP_TIMING_INLINE + hp_timing_t now; + HP_TIMING_NOW (now); + e->time_low = now & 0xffffffff; + e->time_high = now >> 32; +#else + struct __timespec64 now; + uint64_t usecs; + __clock_gettime64 (CLOCK_REALTIME, &now); + usecs = (uint64_t)now.tv_nsec / 1000 + (uint64_t)now.tv_sec * 1000000; + e->time_low = usecs & 0xffffffff; + e->time_high = usecs >> 32; +#endif +} /* Update the global data after a successful function call. */ static void @@ -177,7 +195,7 @@ update_data (struct header *result, size_t len, size_t old_len) buffer[idx].heap = current_heap; buffer[idx].stack = current_stack; - GETTIME (buffer[idx].time_low, buffer[idx].time_high); + gettime (&buffer[idx]); /* Write out buffer if it is full. */ if (idx + 1 == buffer_size) @@ -267,7 +285,7 @@ me (void) /* Write the first entry. */ first.heap = 0; first.stack = 0; - GETTIME (first.time_low, first.time_high); + gettime (&first); /* Write it two times since we need the starting and end time. */ write (fd, &first, sizeof (first)); write (fd, &first, sizeof (first)); @@ -818,7 +836,7 @@ dest (void) stack. */ first.heap = peak_heap; first.stack = peak_stack; - GETTIME (first.time_low, first.time_high); + gettime (&first); write (fd, &first, sizeof (struct entry)); /* Close the file. */ diff --git a/sysdeps/generic/memusage.h b/sysdeps/generic/memusage.h index c9bde5cd11..514bd058d2 100644 --- a/sysdeps/generic/memusage.h +++ b/sysdeps/generic/memusage.h @@ -23,15 +23,3 @@ # warning "GETSP is not defined for this architecture." # define GETSP 0 #endif - -#ifndef GETTIME -# define GETTIME(low,high) \ - { \ - struct __timespec64 now; \ - uint64_t usecs; \ - __clock_gettime64 (CLOCK_REALTIME, &now); \ - usecs = (uint64_t)now.tv_nsec / 1000 + (uint64_t)now.tv_sec * 1000000; \ - low = usecs & 0xffffffff; \ - high = usecs >> 32; \ - } -#endif diff --git a/sysdeps/i386/i686/memusage.h b/sysdeps/i386/i686/memusage.h index 08b7831e12..07b241263c 100644 --- a/sysdeps/i386/i686/memusage.h +++ b/sysdeps/i386/i686/memusage.h @@ -16,6 +16,5 @@ <https://www.gnu.org/licenses/>. */ #define GETSP() ({ register uintptr_t stack_ptr asm ("esp"); stack_ptr; }) -#define GETTIME(low,high) asm ("rdtsc" : "=a" (low), "=d" (high)) #include <sysdeps/generic/memusage.h> diff --git a/sysdeps/ia64/memusage.h b/sysdeps/ia64/memusage.h index 3c3a526007..33fd6ec899 100644 --- a/sysdeps/ia64/memusage.h +++ b/sysdeps/ia64/memusage.h @@ -18,12 +18,5 @@ #include <hp-timing.h> #define GETSP() ({ register uintptr_t stack_ptr asm ("%r12"); stack_ptr; }) -#define GETTIME(low, high) \ - { \ - hp_timing_t __now; \ - HP_TIMING_NOW (__now); \ - low = __now & 0xffffffff; \ - high = __now >> 32; \ - } #include <sysdeps/generic/memusage.h> diff --git a/sysdeps/x86_64/memusage.h b/sysdeps/x86_64/memusage.h index 568dd5512d..6652fc5da1 100644 --- a/sysdeps/x86_64/memusage.h +++ b/sysdeps/x86_64/memusage.h @@ -16,6 +16,5 @@ <https://www.gnu.org/licenses/>. */ #define GETSP() ({ register uintptr_t stack_ptr asm ("rsp"); stack_ptr; }) -#define GETTIME(low,high) asm ("rdtsc" : "=a" (low), "=d" (high)) #include <sysdeps/generic/memusage.h> |