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>
This commit is contained in:
Masatake YAMATO 2018-07-07 16:49:10 +09:00 committed by Dmitry V. Levin
parent ba9d45c374
commit ba5656519f
2 changed files with 15 additions and 0 deletions

View File

@ -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;
}

View File

@ -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 */