diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2011-03-16 19:05:33 -0400 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2011-03-16 19:05:33 -0400 |
commit | b3178c5bb79909e3f272fe98fa3c9430296cb3ae (patch) | |
tree | 414c4ed8a471ba393d8618dbc3d2f297143df2d3 /kernel | |
parent | 3226b710a3f0d293990ed56b3c50deae8f7a22c6 (diff) |
trace-clock-provide-sleep-free-get-put
trace clock provide sleep free get put
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace-clock-32-to-64.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/trace/trace-clock-32-to-64.c b/kernel/trace/trace-clock-32-to-64.c index c9697a636d4..1e0a9382ecc 100644 --- a/kernel/trace/trace-clock-32-to-64.c +++ b/kernel/trace/trace-clock-32-to-64.c @@ -232,21 +232,27 @@ static int __cpuinit hotcpu_callback(struct notifier_block *nb, switch (action) { case CPU_UP_PREPARE: case CPU_UP_PREPARE_FROZEN: + spin_lock(&synthetic_tsc_lock); if (synthetic_tsc_refcount) prepare_synthetic_tsc(hotcpu); + spin_unlock(&synthetic_tsc_lock); break; case CPU_ONLINE: case CPU_ONLINE_FROZEN: + spin_lock(&synthetic_tsc_lock); if (synthetic_tsc_refcount) enable_synthetic_tsc(hotcpu); + spin_unlock(&synthetic_tsc_lock); break; #ifdef CONFIG_HOTPLUG_CPU case CPU_UP_CANCELED: case CPU_UP_CANCELED_FROZEN: case CPU_DEAD: case CPU_DEAD_FROZEN: + spin_lock(&synthetic_tsc_lock); if (synthetic_tsc_refcount) disable_synthetic_tsc(hotcpu); + spin_unlock(&synthetic_tsc_lock); break; #endif /* CONFIG_HOTPLUG_CPU */ } @@ -257,7 +263,6 @@ void get_synthetic_tsc(void) { int cpu; - get_online_cpus(); spin_lock(&synthetic_tsc_lock); if (synthetic_tsc_refcount++) goto end; @@ -269,7 +274,6 @@ void get_synthetic_tsc(void) } end: spin_unlock(&synthetic_tsc_lock); - put_online_cpus(); } EXPORT_SYMBOL_GPL(get_synthetic_tsc); @@ -277,7 +281,6 @@ void put_synthetic_tsc(void) { int cpu; - get_online_cpus(); spin_lock(&synthetic_tsc_lock); WARN_ON(synthetic_tsc_refcount <= 0); if (synthetic_tsc_refcount != 1 || !synthetic_tsc_enabled) @@ -289,7 +292,6 @@ void put_synthetic_tsc(void) end: synthetic_tsc_refcount--; spin_unlock(&synthetic_tsc_lock); - put_online_cpus(); } EXPORT_SYMBOL_GPL(put_synthetic_tsc); |