* defs.h (mmap_cache_search_custom): New function. (mmap_cache_search_fn): New type. * mmap_cache.c (mmap_cache_search_custom): New function.
Signed-off-by: Masatake YAMATO <yam...@redhat.com> --- defs.h | 3 +++ mmap_cache.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/defs.h b/defs.h index 881768dd..bae5e4a1 100644 --- a/defs.h +++ b/defs.h @@ -748,6 +748,9 @@ 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); extern struct mmap_cache_t *mmap_cache_search(struct tcb *tcp, unsigned long ip); +typedef bool (* mmap_cache_search_fn) (struct mmap_cache_t *, void *); +extern struct mmap_cache_t *mmap_cache_search_custom(struct tcb *tcp, mmap_cache_search_fn, void *); + static inline void printstrn(struct tcb *tcp, kernel_ulong_t addr, kernel_ulong_t len) { diff --git a/mmap_cache.c b/mmap_cache.c index 88753071..f14d8942 100644 --- a/mmap_cache.c +++ b/mmap_cache.c @@ -237,3 +237,15 @@ mmap_cache_search(struct tcb *tcp, unsigned long ip) } return NULL; } + +struct mmap_cache_t * +mmap_cache_search_custom(struct tcb *tcp, mmap_cache_search_fn search_fn, void *data) +{ + int i; + + for (i = 0; i <= (int) tcp->mmap_cache_size; i++) { + if (search_fn (tcp->mmap_cache + i, data)) + return tcp->mmap_cache + i; + } + return NULL; +} -- 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