[PATCH v2 1/5] mmap_cache: add customizable search function

Masatake YAMATO yamato at redhat.com
Sun May 20 20:27:06 UTC 2018


* 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.

Changes in v2:
* Fix an off-by-one bug.
* Use loop initial declarations
Suggested by ldv.

Signed-off-by: Masatake YAMATO <yamato at redhat.com>
---
 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..056bfa6d 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 search_fn, void *data)
+{
+	for (unsigned int i = 0; i < tcp->mmap_cache->size; i++) {
+		if (search_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.17.0



More information about the Strace-devel mailing list