Hello,
I am trying to find out what the CAL interrupt in /proc/interrupts is all about. I understand it's "Function Call interrupts" but there seems to be a dearth of information about what a Function Call interrupt really is. I can presume it means "an interrupt generated whenever you call a system call", but I'm not so sure about that. "Prove it," I says to myself.
So I did some digging and uncovered
https://elixir.bootlin.com/linux/v5....nel/smp.c#L234 (assume we're staying in x86-land for now), which says
Code:
DEFINE_IDTENTRY_SYSVEC(sysvec_call_function)
{
ack_APIC_irq();
trace_call_function_entry(CALL_FUNCTION_VECTOR);
inc_irq_stat(irq_call_count);
generic_smp_call_function_interrupt();
trace_call_function_exit(CALL_FUNCTION_VECTOR);
}
. This is where the CAL counter gets incremented (it's irq_call_count). Perfect!
But I can't figure out how DEFINE_IDTENTRY_SYSVEC(sysvec_call_function) is called. What is a "sysvec_call_function"? That's not defined anywhere. And DEFINE_IDTENTRY_SYSVEC has a definition that I don't understand:
Code:
#define DEFINE_IDTENTRY_SYSVEC(func) \
static void __##func(struct pt_regs *regs);
...
(at
https://elixir.bootlin.com/linux/v5....dtentry.h#L239)
I think I might understand better if I could figure out what
means.
Can you help? Thanks.