mmap_cache was enabled indirectly via unwind feature. Now mmap_cache can be used other part of strace. So the way to enable mmap_cache directly is needed.
* mmap_cache (mmap_cache_enable, mmap_cache_is_enabled): New functions. (use_mmap_cache): New file local variable. * syscall.c (syscall_exiting_decode): Use mmap_cache_is_enabled. * unwind.c (unwind_init): Call mmap_cache_enable. Signed-off-by: Masatake YAMATO <yam...@redhat.com> --- defs.h | 2 ++ mmap_cache.c | 11 +++++++++++ syscall.c | 4 +--- unwind.c | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/defs.h b/defs.h index 093acc3f..6c5f293d 100644 --- a/defs.h +++ b/defs.h @@ -738,6 +738,8 @@ enum mmap_cache_rebuild_result { MMAP_CACHE_REBUILD_RENEWED, }; +extern void mmap_cache_enable(void); +extern bool mmap_cache_is_enabled(void); extern void mmap_cache_invalidate(struct tcb *tcp); extern void mmap_cache_delete(struct tcb *tcp, const char *caller); extern enum mmap_cache_rebuild_result mmap_cache_rebuild_if_invalid(struct tcb *tcp, const char *caller); diff --git a/mmap_cache.c b/mmap_cache.c index a121b852..336bbdcd 100644 --- a/mmap_cache.c +++ b/mmap_cache.c @@ -39,6 +39,17 @@ #endif static unsigned int mmap_cache_generation; +static bool use_mmap_cache; + +extern void mmap_cache_enable(void) +{ + use_mmap_cache = true; +} + +extern bool mmap_cache_is_enabled(void) +{ + return use_mmap_cache; +} /* * caching of /proc/ID/maps for each process to speed up stack tracing diff --git a/syscall.c b/syscall.c index 4d11e7ed..431d799e 100644 --- a/syscall.c +++ b/syscall.c @@ -731,12 +731,10 @@ syscall_exiting_decode(struct tcb *tcp, struct timeval *ptv) if ((Tflag || cflag) && !(filtered(tcp) || hide_log(tcp))) gettimeofday(ptv, NULL); -#ifdef USE_LIBUNWIND - if (stack_trace_enabled) { + if (mmap_cache_is_enabled()) { if (tcp->s_ent->sys_flags & STACKTRACE_INVALIDATE_CACHE) mmap_cache_invalidate(tcp); } -#endif if (filtered(tcp) || hide_log(tcp)) return 0; diff --git a/unwind.c b/unwind.c index 9e9d43a1..84676257 100644 --- a/unwind.c +++ b/unwind.c @@ -70,6 +70,7 @@ unwind_init(void) if (!libunwind_as) error_msg_and_die("failed to create address space for stack tracing"); unw_set_caching_policy(libunwind_as, UNW_CACHE_GLOBAL); + mmap_cache_enable(); } void -- 2.14.3 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel