arch/s390/include/asm/irq.h

Source file repositories/reference/linux-study-clean/arch/s390/include/asm/irq.h

File Facts

System
Linux kernel
Corpus path
arch/s390/include/asm/irq.h
Extension
.h
Size
2597 bytes
Lines
126
Domain
Architecture Layer
Bucket
arch/s390
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

struct irq_stat {
	unsigned int irqs[NR_ARCH_IRQS];
};

DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);

static __always_inline void inc_irq_stat(enum interruption_class irq)
{
	__this_cpu_inc(irq_stat.irqs[irq]);
}

struct ext_code {
	union {
		struct {
			unsigned short subcode;
			unsigned short code;
		};
		unsigned int int_code;
	};
};

typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);

int register_external_irq(u16 code, ext_int_handler_t handler);
int unregister_external_irq(u16 code, ext_int_handler_t handler);

enum irq_subclass {
	IRQ_SUBCLASS_MEASUREMENT_ALERT = 5,
	IRQ_SUBCLASS_SERVICE_SIGNAL = 9,
	IRQ_SUBCLASS_WARNING_TRACK = 33,
};

#define CR0_IRQ_SUBCLASS_MASK					  \
	(CR0_WARNING_TRACK					| \
	 CR0_MALFUNCTION_ALERT_SUBMASK				| \
	 CR0_EMERGENCY_SIGNAL_SUBMASK				| \
	 CR0_EXTERNAL_CALL_SUBMASK				| \
	 CR0_CLOCK_COMPARATOR_SUBMASK				| \
	 CR0_CPU_TIMER_SUBMASK					| \
	 CR0_SERVICE_SIGNAL_SUBMASK				| \
	 CR0_INTERRUPT_KEY_SUBMASK				| \
	 CR0_MEASUREMENT_ALERT_SUBMASK				| \
	 CR0_ETR_SUBMASK					| \
	 CR0_IUCV)

void irq_subclass_register(enum irq_subclass subclass);
void irq_subclass_unregister(enum irq_subclass subclass);

#define irq_canonicalize(irq)  (irq)

#endif /* __ASSEMBLER__ */

#endif /* _ASM_IRQ_H */

Annotation

Implementation Notes