Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 257118
b: refs/heads/master
c: f7bc8b6
h: refs/heads/master
v: v3
  • Loading branch information
Steven Rostedt authored and Steven Rostedt committed Jul 15, 2011
1 parent ace7f4f commit 6ff7061
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 04da85b86188f224cc9b391b5bdd92a3ba20ffcf
refs/heads/master: f7bc8b61f65726ff98f52e286b28e294499d7a08
30 changes: 28 additions & 2 deletions trunk/kernel/trace/ftrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1744,10 +1744,36 @@ static cycle_t ftrace_update_time;
static unsigned long ftrace_update_cnt;
unsigned long ftrace_update_tot_cnt;

static int ops_traces_mod(struct ftrace_ops *ops)
{
struct ftrace_hash *hash;

hash = ops->filter_hash;
return !!(!hash || !hash->count);
}

static int ftrace_update_code(struct module *mod)
{
struct dyn_ftrace *p;
cycle_t start, stop;
unsigned long ref = 0;

/*
* When adding a module, we need to check if tracers are
* currently enabled and if they are set to trace all functions.
* If they are, we need to enable the module functions as well
* as update the reference counts for those function records.
*/
if (mod) {
struct ftrace_ops *ops;

for (ops = ftrace_ops_list;
ops != &ftrace_list_end; ops = ops->next) {
if (ops->flags & FTRACE_OPS_FL_ENABLED &&
ops_traces_mod(ops))
ref++;
}
}

start = ftrace_now(raw_smp_processor_id());
ftrace_update_cnt = 0;
Expand All @@ -1760,7 +1786,7 @@ static int ftrace_update_code(struct module *mod)

p = ftrace_new_addrs;
ftrace_new_addrs = p->newlist;
p->flags = 0L;
p->flags = ref;

/*
* Do the initial record conversion from mcount jump
Expand All @@ -1783,7 +1809,7 @@ static int ftrace_update_code(struct module *mod)
* conversion puts the module to the correct state, thus
* passing the ftrace_make_call check.
*/
if (ftrace_start_up) {
if (ftrace_start_up && ref) {
int failed = __ftrace_replace_code(p, 1);
if (failed) {
ftrace_bug(failed, p->ip);
Expand Down

0 comments on commit 6ff7061

Please sign in to comment.