Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/x86/kernel/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 7 kB image not shown  

Quelle  trace.c   Sprache: C

 
#include <asm/trace/irq_vectors.h>
#include <linux/trace.h>

#if defined(CONFIG_OSNOISE_TRACER) && defined(CONFIG_X86_LOCAL_APIC)
/*
 * trace_intel_irq_entry - record intel specific IRQ entry
 */

static void trace_intel_irq_entry(void *data, int vector)
{
 osnoise_trace_irq_entry(vector);
}

/*
 * trace_intel_irq_exit - record intel specific IRQ exit
 */

static void trace_intel_irq_exit(void *data, int vector)
{
 char *vector_desc = (char *) data;

 osnoise_trace_irq_exit(vector, vector_desc);
}

/*
 * register_intel_irq_tp - Register intel specific IRQ entry tracepoints
 */

int osnoise_arch_register(void)
{
 int ret;

 ret = register_trace_local_timer_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_err;

 ret = register_trace_local_timer_exit(trace_intel_irq_exit, "local_timer");
 if (ret)
  goto out_timer_entry;

#ifdef CONFIG_X86_THERMAL_VECTOR
 ret = register_trace_thermal_apic_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_timer_exit;

 ret = register_trace_thermal_apic_exit(trace_intel_irq_exit, "thermal_apic");
 if (ret)
  goto out_thermal_entry;
#endif /* CONFIG_X86_THERMAL_VECTOR */

#ifdef CONFIG_X86_MCE_AMD
 ret = register_trace_deferred_error_apic_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_thermal_exit;

 ret = register_trace_deferred_error_apic_exit(trace_intel_irq_exit, "deferred_error");
 if (ret)
  goto out_deferred_entry;
#endif

#ifdef CONFIG_X86_MCE_THRESHOLD
 ret = register_trace_threshold_apic_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_deferred_exit;

 ret = register_trace_threshold_apic_exit(trace_intel_irq_exit, "threshold_apic");
 if (ret)
  goto out_threshold_entry;
#endif /* CONFIG_X86_MCE_THRESHOLD */

#ifdef CONFIG_SMP
 ret = register_trace_call_function_single_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_threshold_exit;

 ret = register_trace_call_function_single_exit(trace_intel_irq_exit,
             "call_function_single");
 if (ret)
  goto out_call_function_single_entry;

 ret = register_trace_call_function_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_call_function_single_exit;

 ret = register_trace_call_function_exit(trace_intel_irq_exit, "call_function");
 if (ret)
  goto out_call_function_entry;

 ret = register_trace_reschedule_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_call_function_exit;

 ret = register_trace_reschedule_exit(trace_intel_irq_exit, "reschedule");
 if (ret)
  goto out_reschedule_entry;
#endif /* CONFIG_SMP */

#ifdef CONFIG_IRQ_WORK
 ret = register_trace_irq_work_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_reschedule_exit;

 ret = register_trace_irq_work_exit(trace_intel_irq_exit, "irq_work");
 if (ret)
  goto out_irq_work_entry;
#endif

 ret = register_trace_x86_platform_ipi_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_irq_work_exit;

 ret = register_trace_x86_platform_ipi_exit(trace_intel_irq_exit, "x86_platform_ipi");
 if (ret)
  goto out_x86_ipi_entry;

 ret = register_trace_error_apic_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_x86_ipi_exit;

 ret = register_trace_error_apic_exit(trace_intel_irq_exit, "error_apic");
 if (ret)
  goto out_error_apic_entry;

 ret = register_trace_spurious_apic_entry(trace_intel_irq_entry, NULL);
 if (ret)
  goto out_error_apic_exit;

 ret = register_trace_spurious_apic_exit(trace_intel_irq_exit, "spurious_apic");
 if (ret)
  goto out_spurious_apic_entry;

 return 0;

out_spurious_apic_entry:
 unregister_trace_spurious_apic_entry(trace_intel_irq_entry, NULL);
out_error_apic_exit:
 unregister_trace_error_apic_exit(trace_intel_irq_exit, "error_apic");
out_error_apic_entry:
 unregister_trace_error_apic_entry(trace_intel_irq_entry, NULL);
out_x86_ipi_exit:
 unregister_trace_x86_platform_ipi_exit(trace_intel_irq_exit, "x86_platform_ipi");
out_x86_ipi_entry:
 unregister_trace_x86_platform_ipi_entry(trace_intel_irq_entry, NULL);
out_irq_work_exit:

#ifdef CONFIG_IRQ_WORK
 unregister_trace_irq_work_exit(trace_intel_irq_exit, "irq_work");
out_irq_work_entry:
 unregister_trace_irq_work_entry(trace_intel_irq_entry, NULL);
out_reschedule_exit:
#endif

#ifdef CONFIG_SMP
 unregister_trace_reschedule_exit(trace_intel_irq_exit, "reschedule");
out_reschedule_entry:
 unregister_trace_reschedule_entry(trace_intel_irq_entry, NULL);
out_call_function_exit:
 unregister_trace_call_function_exit(trace_intel_irq_exit, "call_function");
out_call_function_entry:
 unregister_trace_call_function_entry(trace_intel_irq_entry, NULL);
out_call_function_single_exit:
 unregister_trace_call_function_single_exit(trace_intel_irq_exit, "call_function_single");
out_call_function_single_entry:
 unregister_trace_call_function_single_entry(trace_intel_irq_entry, NULL);
out_threshold_exit:
#endif

#ifdef CONFIG_X86_MCE_THRESHOLD
 unregister_trace_threshold_apic_exit(trace_intel_irq_exit, "threshold_apic");
out_threshold_entry:
 unregister_trace_threshold_apic_entry(trace_intel_irq_entry, NULL);
out_deferred_exit:
#endif

#ifdef CONFIG_X86_MCE_AMD
 unregister_trace_deferred_error_apic_exit(trace_intel_irq_exit, "deferred_error");
out_deferred_entry:
 unregister_trace_deferred_error_apic_entry(trace_intel_irq_entry, NULL);
out_thermal_exit:
#endif /* CONFIG_X86_MCE_AMD */

#ifdef CONFIG_X86_THERMAL_VECTOR
 unregister_trace_thermal_apic_exit(trace_intel_irq_exit, "thermal_apic");
out_thermal_entry:
 unregister_trace_thermal_apic_entry(trace_intel_irq_entry, NULL);
out_timer_exit:
#endif /* CONFIG_X86_THERMAL_VECTOR */

 unregister_trace_local_timer_exit(trace_intel_irq_exit, "local_timer");
out_timer_entry:
 unregister_trace_local_timer_entry(trace_intel_irq_entry, NULL);
out_err:
 return -EINVAL;
}

void osnoise_arch_unregister(void)
{
 unregister_trace_spurious_apic_exit(trace_intel_irq_exit, "spurious_apic");
 unregister_trace_spurious_apic_entry(trace_intel_irq_entry, NULL);
 unregister_trace_error_apic_exit(trace_intel_irq_exit, "error_apic");
 unregister_trace_error_apic_entry(trace_intel_irq_entry, NULL);
 unregister_trace_x86_platform_ipi_exit(trace_intel_irq_exit, "x86_platform_ipi");
 unregister_trace_x86_platform_ipi_entry(trace_intel_irq_entry, NULL);

#ifdef CONFIG_IRQ_WORK
 unregister_trace_irq_work_exit(trace_intel_irq_exit, "irq_work");
 unregister_trace_irq_work_entry(trace_intel_irq_entry, NULL);
#endif

#ifdef CONFIG_SMP
 unregister_trace_reschedule_exit(trace_intel_irq_exit, "reschedule");
 unregister_trace_reschedule_entry(trace_intel_irq_entry, NULL);
 unregister_trace_call_function_exit(trace_intel_irq_exit, "call_function");
 unregister_trace_call_function_entry(trace_intel_irq_entry, NULL);
 unregister_trace_call_function_single_exit(trace_intel_irq_exit, "call_function_single");
 unregister_trace_call_function_single_entry(trace_intel_irq_entry, NULL);
#endif

#ifdef CONFIG_X86_MCE_THRESHOLD
 unregister_trace_threshold_apic_exit(trace_intel_irq_exit, "threshold_apic");
 unregister_trace_threshold_apic_entry(trace_intel_irq_entry, NULL);
#endif

#ifdef CONFIG_X86_MCE_AMD
 unregister_trace_deferred_error_apic_exit(trace_intel_irq_exit, "deferred_error");
 unregister_trace_deferred_error_apic_entry(trace_intel_irq_entry, NULL);
#endif

#ifdef CONFIG_X86_THERMAL_VECTOR
 unregister_trace_thermal_apic_exit(trace_intel_irq_exit, "thermal_apic");
 unregister_trace_thermal_apic_entry(trace_intel_irq_entry, NULL);
#endif /* CONFIG_X86_THERMAL_VECTOR */

 unregister_trace_local_timer_exit(trace_intel_irq_exit, "local_timer");
 unregister_trace_local_timer_entry(trace_intel_irq_entry, NULL);
}
#endif /* CONFIG_OSNOISE_TRACER && CONFIG_X86_LOCAL_APIC */

Messung V0.5
C=96 H=90 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.