mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
ftrace: Add ftrace_hash_remove function
Adding ftrace_hash_remove function that removes all entries from struct ftrace_hash object without freeing them. It will be used in following changes where entries are allocated as part of another structure and are free-ed separately. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/r/20260606123955.345967-3-jolsa@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
e57f13eaab
commit
af7c323650
@@ -415,6 +415,7 @@ struct ftrace_hash *alloc_ftrace_hash(int size_bits);
|
||||
void free_ftrace_hash(struct ftrace_hash *hash);
|
||||
struct ftrace_func_entry *add_ftrace_hash_entry_direct(struct ftrace_hash *hash,
|
||||
unsigned long ip, unsigned long direct);
|
||||
void ftrace_hash_remove(struct ftrace_hash *hash);
|
||||
|
||||
/* The hash used to know what functions callbacks trace */
|
||||
struct ftrace_ops_hash {
|
||||
|
||||
@@ -1249,6 +1249,25 @@ remove_hash_entry(struct ftrace_hash *hash,
|
||||
hash->count--;
|
||||
}
|
||||
|
||||
void ftrace_hash_remove(struct ftrace_hash *hash)
|
||||
{
|
||||
struct ftrace_func_entry *entry;
|
||||
struct hlist_head *hhd;
|
||||
struct hlist_node *tn;
|
||||
int size;
|
||||
int i;
|
||||
|
||||
if (!hash || !hash->count)
|
||||
return;
|
||||
size = 1 << hash->size_bits;
|
||||
for (i = 0; i < size; i++) {
|
||||
hhd = &hash->buckets[i];
|
||||
hlist_for_each_entry_safe(entry, tn, hhd, hlist)
|
||||
remove_hash_entry(hash, entry);
|
||||
}
|
||||
FTRACE_WARN_ON(hash->count);
|
||||
}
|
||||
|
||||
static void ftrace_hash_clear(struct ftrace_hash *hash)
|
||||
{
|
||||
struct hlist_head *hhd;
|
||||
|
||||
Reference in New Issue
Block a user