Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/subr_intr.c
Show First 20 Lines • Show All 318 Lines • ▼ Show 20 Lines | intr_irq_handler(struct trapframe *tf) | ||||
KASSERT(irq_root_filter != NULL, ("%s: no filter", __func__)); | KASSERT(irq_root_filter != NULL, ("%s: no filter", __func__)); | ||||
VM_CNT_INC(v_intr); | VM_CNT_INC(v_intr); | ||||
critical_enter(); | critical_enter(); | ||||
td = curthread; | td = curthread; | ||||
oldframe = td->td_intr_frame; | oldframe = td->td_intr_frame; | ||||
td->td_intr_frame = tf; | td->td_intr_frame = tf; | ||||
irq_root_filter(irq_root_arg); | irq_root_filter(INTR_IRQ_FILTER_CALL(irq_root_arg, tf)); | ||||
td->td_intr_frame = oldframe; | td->td_intr_frame = oldframe; | ||||
critical_exit(); | critical_exit(); | ||||
#ifdef HWPMC_HOOKS | #ifdef HWPMC_HOOKS | ||||
if (pmc_hook && TRAPF_USERMODE(tf) && | if (pmc_hook && TRAPF_USERMODE(tf) && | ||||
(PCPU_GET(curthread)->td_pflags & TDP_CALLCHAIN)) | (PCPU_GET(curthread)->td_pflags & TDP_CALLCHAIN)) | ||||
mhorne: This block seems acceptable to me. | |||||
pmc_hook(PCPU_GET(curthread), PMC_FN_USER_CALLCHAIN, tf); | pmc_hook(PCPU_GET(curthread), PMC_FN_USER_CALLCHAIN, tf); | ||||
#endif | #endif | ||||
} | } | ||||
int | int | ||||
intr_child_irq_handler(struct intr_pic *parent, uintptr_t irq) | intr_child_irq_handler(struct intr_pic *parent, uintptr_t irq) | ||||
{ | { | ||||
struct intr_pic_child *child; | struct intr_pic_child *child; | ||||
▲ Show 20 Lines • Show All 1,403 Lines • Show Last 20 Lines |
This block seems acceptable to me.