コード例 #1
0
static int __init oprofile_init(void)
{
	int err;

	/* always init architecture to setup backtrace support */
	err = oprofile_arch_init(&oprofile_ops);

	timer_mode = err || timer;	/* fall back to timer mode on errors */
	if (timer_mode) {
		if (!err)
			oprofile_arch_exit();
		err = oprofile_timer_init(&oprofile_ops);
		if (err)
			return err;
	}

	err = oprofilefs_register();
	if (!err)
		return 0;

	/* failed */
	if (timer_mode)
		oprofile_timer_exit();
	else
		oprofile_arch_exit();

	return err;
}
コード例 #2
0
static void __exit oprofile_exit(void)
{
	oprofilefs_unregister();
	if (timer_mode)
		oprofile_timer_exit();
	else
		oprofile_arch_exit();
}
コード例 #3
0
static int __init oprofile_init(void)
{
	int err;

	err = oprofile_arch_init(&oprofile_ops);

	if (err < 0 || timer) {
		printk(KERN_INFO "oprofile: using timer interrupt.\n");
		oprofile_timer_init(&oprofile_ops);
	}

	err = oprofilefs_register();
	if (err)
		oprofile_arch_exit();

	return err;
}
コード例 #4
0
static void __exit oprofile_exit(void)
{
	oprofile_timer_exit();
	oprofilefs_unregister();
	oprofile_arch_exit();
}