Commit c6b9dafc authored by Russell King's avatar Russell King Committed by Russell King

[ARM] 4/4 Combine oprofile common and init code

There is nothing special about having the init code separate from
the common code, so combine the two.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 55f05234
...@@ -6,6 +6,6 @@ DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \ ...@@ -6,6 +6,6 @@ DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
oprofilefs.o oprofile_stats.o \ oprofilefs.o oprofile_stats.o \
timer_int.o ) timer_int.o )
oprofile-y := $(DRIVER_OBJS) init.o backtrace.o oprofile-y := $(DRIVER_OBJS) common.o backtrace.o
oprofile-$(CONFIG_CPU_XSCALE) += common.o op_model_xscale.o oprofile-$(CONFIG_CPU_XSCALE) += op_model_xscale.o
...@@ -125,27 +125,37 @@ static void exit_driverfs(void) ...@@ -125,27 +125,37 @@ static void exit_driverfs(void)
#define exit_driverfs() do { } while (0) #define exit_driverfs() do { } while (0)
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
int __init op_arm_init(struct oprofile_operations *ops, struct op_arm_model_spec *spec) int __init oprofile_arch_init(struct oprofile_operations *ops)
{ {
init_MUTEX(&op_arm_sem); struct op_arm_model_spec *spec = NULL;
int ret = -ENODEV;
if (spec->init() < 0)
return -ENODEV; #ifdef CONFIG_CPU_XSCALE
spec = &op_xscale_spec;
op_arm_model = spec; #endif
init_driverfs();
ops->create_files = op_arm_create_files; if (spec) {
ops->setup = op_arm_setup; init_MUTEX(&op_arm_sem);
ops->shutdown = op_arm_stop;
ops->start = op_arm_start; if (spec->init() < 0)
ops->stop = op_arm_stop; return -ENODEV;
ops->cpu_type = op_arm_model->name;
printk(KERN_INFO "oprofile: using %s\n", spec->name); op_arm_model = spec;
init_driverfs();
ops->create_files = op_arm_create_files;
ops->setup = op_arm_setup;
ops->shutdown = op_arm_stop;
ops->start = op_arm_start;
ops->stop = op_arm_stop;
ops->cpu_type = op_arm_model->name;
ops->backtrace = arm_backtrace;
printk(KERN_INFO "oprofile: using %s\n", spec->name);
}
return 0; return ret;
} }
void op_arm_exit(void) void oprofile_arch_exit(void)
{ {
if (op_arm_model) { if (op_arm_model) {
exit_driverfs(); exit_driverfs();
......
/**
* @file init.c
*
* @remark Copyright 2004 Oprofile Authors
* @remark Read the file COPYING
*
* @author Zwane Mwaikambo
*/
#include <linux/oprofile.h>
#include <linux/init.h>
#include <linux/errno.h>
#include "op_arm_model.h"
int __init oprofile_arch_init(struct oprofile_operations *ops)
{
int ret = -ENODEV;
#ifdef CONFIG_CPU_XSCALE
ret = op_arm_init(ops, &op_xscale_spec);
#endif
ops->backtrace = arm_backtrace;
return ret;
}
void oprofile_arch_exit(void)
{
#ifdef CONFIG_CPU_XSCALE
op_arm_exit();
#endif
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment