diff options
Diffstat (limited to 'drivers/oprofile/buffer_sync.c')
| -rw-r--r-- | drivers/oprofile/buffer_sync.c | 22 | 
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/oprofile/buffer_sync.c b/drivers/oprofile/buffer_sync.c index 9da5a4b8113..c3ea5fa7d05 100644 --- a/drivers/oprofile/buffer_sync.c +++ b/drivers/oprofile/buffer_sync.c @@ -38,7 +38,7 @@  static LIST_HEAD(dying_tasks);  static LIST_HEAD(dead_tasks); -static cpumask_t marked_cpus = CPU_MASK_NONE; +static cpumask_var_t marked_cpus;  static DEFINE_SPINLOCK(task_mortuary);  static void process_task_mortuary(void); @@ -456,10 +456,10 @@ static void mark_done(int cpu)  {  	int i; -	cpu_set(cpu, marked_cpus); +	cpumask_set_cpu(cpu, marked_cpus);  	for_each_online_cpu(i) { -		if (!cpu_isset(i, marked_cpus)) +		if (!cpumask_test_cpu(i, marked_cpus))  			return;  	} @@ -468,7 +468,7 @@ static void mark_done(int cpu)  	 */  	process_task_mortuary(); -	cpus_clear(marked_cpus); +	cpumask_clear(marked_cpus);  } @@ -565,6 +565,20 @@ void sync_buffer(int cpu)  	mutex_unlock(&buffer_mutex);  } +int __init buffer_sync_init(void) +{ +	if (!alloc_cpumask_var(&marked_cpus, GFP_KERNEL)) +		return -ENOMEM; + +	cpumask_clear(marked_cpus); +		return 0; +} + +void __exit buffer_sync_cleanup(void) +{ +	free_cpumask_var(marked_cpus); +} +  /* The function can be used to add a buffer worth of data directly to   * the kernel buffer. The buffer is assumed to be a circular buffer.   * Take the entries from index start and end at index end, wrapping  |