mmap_cache: simplify API
* mmap_cache.h (mmap_cache_rebuild_if_invalid_): rename from mmap_cache_rebuild_if_invalid. (mmap_cache_rebuild_if_invalid): New macro, a wrapper for mmap_cache_rebuild_if_invalid_ that supplies __func__ to it. (mmap_cache_free_): New declaration. (mmap_cache_free): New macro, a wrapper for mmap_cache_free_ that supplies __func__ to it. * mmap_cache.c (mmap_cache_rebuild_if_invalid_): Rename from mmap_cache_rebuild_if_invalid. (mmap_cache_free_): New function. * unwind-libunwind.c (tcb_walk): Remove __func__ argument from the mmap_cache_rebuild_if_invalid call. * kvm.c (vcpu_get_info): Likewise. * strace.c (droptcb): Call mmap_cache_free.
This commit is contained in:
2
kvm.c
2
kvm.c
@ -137,7 +137,7 @@ vcpu_get_info(struct tcb *const tcp, int fd)
|
||||
const char *cpuid_str;
|
||||
|
||||
enum mmap_cache_rebuild_result mc_stat =
|
||||
mmap_cache_rebuild_if_invalid(tcp, __func__);
|
||||
mmap_cache_rebuild_if_invalid(tcp);
|
||||
if (mc_stat == MMAP_CACHE_REBUILD_NOCACHE)
|
||||
return NULL;
|
||||
|
||||
|
17
mmap_cache.c
17
mmap_cache.c
@ -94,7 +94,7 @@ delete_mmap_cache(struct tcb *tcp, const char *caller)
|
||||
* e.g. mmap, mprotect, munmap, execve.
|
||||
*/
|
||||
extern enum mmap_cache_rebuild_result
|
||||
mmap_cache_rebuild_if_invalid(struct tcb *tcp, const char *caller)
|
||||
mmap_cache_rebuild_if_invalid_(struct tcb *tcp, const char *caller)
|
||||
{
|
||||
if (tcp->mmap_cache
|
||||
&& tcp->mmap_cache->generation != mmap_cache_generation)
|
||||
@ -245,3 +245,18 @@ mmap_cache_search_custom(struct tcb *tcp, mmap_cache_search_fn fn, void *data)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
mmap_cache_free_(struct tcb *tcp, const char *caller)
|
||||
{
|
||||
if (!tcp->mmap_cache)
|
||||
return;
|
||||
|
||||
if (!tcp->mmap_cache->free_fn) {
|
||||
error_func_msg("pid %d: mmap_cache has NULL free_fn "
|
||||
"(called from %s)", tcp->pid, caller);
|
||||
return;
|
||||
}
|
||||
|
||||
tcp->mmap_cache->free_fn(tcp, caller);
|
||||
}
|
||||
|
@ -79,7 +79,9 @@ extern void
|
||||
mmap_cache_enable(void);
|
||||
|
||||
extern enum mmap_cache_rebuild_result
|
||||
mmap_cache_rebuild_if_invalid(struct tcb *, const char *caller);
|
||||
mmap_cache_rebuild_if_invalid_(struct tcb *, const char *caller);
|
||||
#define mmap_cache_rebuild_if_invalid(tcp_) \
|
||||
mmap_cache_rebuild_if_invalid_((tcp_), __func__)
|
||||
|
||||
extern struct mmap_cache_entry_t *
|
||||
mmap_cache_search(struct tcb *, unsigned long ip);
|
||||
@ -87,4 +89,8 @@ 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 *);
|
||||
|
||||
extern void
|
||||
mmap_cache_free_(struct tcb *tcp, const char *caller);
|
||||
#define mmap_cache_free(tcp_) mmap_cache_free_((tcp_), __func__)
|
||||
|
||||
#endif /* !STRACE_MMAP_CACHE_H */
|
||||
|
3
strace.c
3
strace.c
@ -838,8 +838,7 @@ droptcb(struct tcb *tcp)
|
||||
kvm_vcpu_info_free(tcp);
|
||||
#endif
|
||||
|
||||
if (tcp->mmap_cache)
|
||||
tcp->mmap_cache->free_fn(tcp, __func__);
|
||||
mmap_cache_free(tcp);
|
||||
|
||||
nprocs--;
|
||||
debug_msg("dropped tcb for pid %d, %d remain", tcp->pid, nprocs);
|
||||
|
@ -163,7 +163,7 @@ tcb_walk(struct tcb *tcp,
|
||||
unwind_error_action_fn error_action,
|
||||
void *data)
|
||||
{
|
||||
switch (mmap_cache_rebuild_if_invalid(tcp, __func__)) {
|
||||
switch (mmap_cache_rebuild_if_invalid(tcp)) {
|
||||
case MMAP_CACHE_REBUILD_RENEWED:
|
||||
/*
|
||||
* Rebuild the unwinder internal cache.
|
||||
|
Reference in New Issue
Block a user