From: Masatake YAMATO <yamato@redhat.com> Date: Sat, 7 Jul 2018 07:49:10 +0000 (+0900) Subject: mmap_cache: add customizable search function X-Git-Tag: v4.24~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ba5656519faf2f528e8f6fdb66b6842fa5f49563;p=strace mmap_cache: add customizable search function * mmap_cache.c (mmap_cache_search_custom): New function. * mmap_cache.h (mmap_cache_search_fn): New type. (mmap_cache_search_custom): New function prototype. Signed-off-by: Masatake YAMATO <yamato@redhat.com> --- diff --git a/mmap_cache.c b/mmap_cache.c index 631133b5..181005b1 100644 --- a/mmap_cache.c +++ b/mmap_cache.c @@ -235,3 +235,13 @@ mmap_cache_search(struct tcb *tcp, unsigned long ip) } return NULL; } + +struct mmap_cache_entry_t * +mmap_cache_search_custom(struct tcb *tcp, mmap_cache_search_fn fn, void *data) +{ + for (unsigned int i = 0; i < tcp->mmap_cache->size; i++) { + if (fn(tcp->mmap_cache->entry + i, data)) + return tcp->mmap_cache->entry + i; + } + return NULL; +} diff --git a/mmap_cache.h b/mmap_cache.h index 90a939f3..e03b8876 100644 --- a/mmap_cache.h +++ b/mmap_cache.h @@ -73,6 +73,8 @@ enum mmap_cache_rebuild_result { MMAP_CACHE_REBUILD_RENEWED, }; +typedef bool (*mmap_cache_search_fn)(struct mmap_cache_entry_t *, void *); + extern void mmap_cache_enable(void); @@ -82,4 +84,7 @@ mmap_cache_rebuild_if_invalid(struct tcb *, const char *caller); extern struct mmap_cache_entry_t * mmap_cache_search(struct tcb *, unsigned long ip); +extern struct mmap_cache_entry_t * +mmap_cache_search_custom(struct tcb *, mmap_cache_search_fn, void *); + #endif /* !STRACE_MMAP_CACHE_H */