提交 c6b9dafc 编写于 作者: R Russell King 提交者: 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: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 55f05234
......@@ -6,6 +6,6 @@ DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \
oprofilefs.o oprofile_stats.o \
timer_int.o )
oprofile-y := $(DRIVER_OBJS) init.o backtrace.o
oprofile-$(CONFIG_CPU_XSCALE) += common.o op_model_xscale.o
oprofile-y := $(DRIVER_OBJS) common.o backtrace.o
oprofile-$(CONFIG_CPU_XSCALE) += op_model_xscale.o
......@@ -125,27 +125,37 @@ static void exit_driverfs(void)
#define exit_driverfs() do { } while (0)
#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);
if (spec->init() < 0)
return -ENODEV;
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;
printk(KERN_INFO "oprofile: using %s\n", spec->name);
struct op_arm_model_spec *spec = NULL;
int ret = -ENODEV;
#ifdef CONFIG_CPU_XSCALE
spec = &op_xscale_spec;
#endif
if (spec) {
init_MUTEX(&op_arm_sem);
if (spec->init() < 0)
return -ENODEV;
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) {
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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册