mirror of https://gitee.com/openkylin/linux.git
ftrace: Separate out the copying of a ftrace_hash from __ftrace_hash_move()
Most of the functionality of __ftrace_hash_move() can be reused, but not all of it. That is, __ftrace_hash_move() is used to simply make a new hash from an existing one, using the same size as the original. Creating a dup_hash(), where we can specify a new size will be useful when we want to create a hash with a default size, or simply copy the old one. Signed-off-by: Steven Rostedt (VMWare) <rostedt@goodmis.org>
This commit is contained in:
parent
8c666d2ab5
commit
714641c367
|
@ -1372,23 +1372,15 @@ ftrace_hash_rec_enable_modify(struct ftrace_ops *ops, int filter_hash);
|
||||||
static int ftrace_hash_ipmodify_update(struct ftrace_ops *ops,
|
static int ftrace_hash_ipmodify_update(struct ftrace_ops *ops,
|
||||||
struct ftrace_hash *new_hash);
|
struct ftrace_hash *new_hash);
|
||||||
|
|
||||||
static struct ftrace_hash *
|
static struct ftrace_hash *dup_hash(struct ftrace_hash *src, int size)
|
||||||
__ftrace_hash_move(struct ftrace_hash *src)
|
|
||||||
{
|
{
|
||||||
struct ftrace_func_entry *entry;
|
struct ftrace_func_entry *entry;
|
||||||
struct hlist_node *tn;
|
|
||||||
struct hlist_head *hhd;
|
|
||||||
struct ftrace_hash *new_hash;
|
struct ftrace_hash *new_hash;
|
||||||
int size = src->count;
|
struct hlist_head *hhd;
|
||||||
|
struct hlist_node *tn;
|
||||||
int bits = 0;
|
int bits = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*
|
|
||||||
* If the new source is empty, just return the empty_hash.
|
|
||||||
*/
|
|
||||||
if (ftrace_hash_empty(src))
|
|
||||||
return EMPTY_HASH;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make the hash size about 1/2 the # found
|
* Make the hash size about 1/2 the # found
|
||||||
*/
|
*/
|
||||||
|
@ -1413,10 +1405,23 @@ __ftrace_hash_move(struct ftrace_hash *src)
|
||||||
__add_hash_entry(new_hash, entry);
|
__add_hash_entry(new_hash, entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new_hash;
|
return new_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct ftrace_hash *
|
||||||
|
__ftrace_hash_move(struct ftrace_hash *src)
|
||||||
|
{
|
||||||
|
int size = src->count;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the new source is empty, just return the empty_hash.
|
||||||
|
*/
|
||||||
|
if (ftrace_hash_empty(src))
|
||||||
|
return EMPTY_HASH;
|
||||||
|
|
||||||
|
return dup_hash(src, size);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ftrace_hash_move(struct ftrace_ops *ops, int enable,
|
ftrace_hash_move(struct ftrace_ops *ops, int enable,
|
||||||
struct ftrace_hash **dst, struct ftrace_hash *src)
|
struct ftrace_hash **dst, struct ftrace_hash *src)
|
||||||
|
|
Loading…
Reference in New Issue