Пример #1
0
static void em_stop(void)
{
	em_call_function(arm11_stop_pmu);
	arm11_release_interrupts(pmu_irqs->irqs, pmu_irqs->num_irqs);
	scu_stop();
	release_pmu(pmu_irqs);
}
Пример #2
0
static int em_start(void)
{
	int ret;

	pmu_irqs = reserve_pmu();
	if (IS_ERR(pmu_irqs)) {
		ret = PTR_ERR(pmu_irqs);
		goto out;
	}

	ret = arm11_request_interrupts(pmu_irqs->irqs, pmu_irqs->num_irqs);
	if (ret == 0) {
		em_call_function(arm11_start_pmu);

		ret = scu_start();
		if (ret) {
			arm11_release_interrupts(pmu_irqs->irqs,
						 pmu_irqs->num_irqs);
		} else {
			release_pmu(pmu_irqs);
			pmu_irqs = NULL;
		}
	}

out:
	return ret;
}
Пример #3
0
/*
 * Glue to stick the individual ARM11 PMUs and the SCU
 * into the oprofile framework.
 */
static int em_setup_ctrs(void)
{
	int ret;

	/* Configure CPU counters by cross-calling to the other CPUs */
	ret = em_call_function(arm11_setup_pmu);
	if (ret == 0)
		scu_setup();

	return 0;
}
Пример #4
0
static int em_start(void)
{
	int ret;

	ret = arm11_request_interrupts(arm11_irqs, ARRAY_SIZE(arm11_irqs));
	if (ret == 0) {
		em_call_function(arm11_start_pmu);

		ret = scu_start();
		if (ret)
			arm11_release_interrupts(arm11_irqs, ARRAY_SIZE(arm11_irqs));
	}
	return ret;
}
Пример #5
0
static void em_stop(void)
{
	em_call_function(arm11_stop_pmu);
	arm11_release_interrupts(arm11_irqs, ARRAY_SIZE(arm11_irqs));
	scu_stop();
}