From ba5656519faf2f528e8f6fdb66b6842fa5f49563 Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Sat, 7 Jul 2018 16:49:10 +0900 Subject: [PATCH] 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 --- mmap_cache.c | 10 ++++++++++ mmap_cache.h | 5 +++++ 2 files changed, 15 insertions(+) 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 */ -- 2.40.0