Home | History | Annotate | Download | only in common

Lines Matching refs:intr

76 #include <sys/intr.h>
101 struct alpha_shared_intr *intr;
106 intr = kmem_alloc(n * sizeof(*intr), KM_SLEEP);
108 TAILQ_INIT(&intr[i].intr_q);
109 intr[i].intr_sharetype = IST_NONE;
110 intr[i].intr_dfltsharetype = IST_NONE;
111 intr[i].intr_nstrays = 0;
112 intr[i].intr_maxstrays = 0;
113 intr[i].intr_private = NULL;
114 intr[i].intr_cpu = NULL;
115 intr[i].intr_string = kmem_asprintf("irq %u", i);
118 return (intr);
122 alpha_shared_intr_dispatch(struct alpha_shared_intr *intr, unsigned int num)
127 atomic_add_long(&intr[num].intr_evcnt.ev_count, 1);
129 TAILQ_FOREACH(ih, &intr[num].intr_q, ih_q) {
157 alpha_shared_intr_alloc_intrhand(struct alpha_shared_intr *intr,
163 if (intr[num].intr_sharetype == IST_UNUSABLE) {
173 ih->ih_intrhead = intr;
203 struct alpha_shared_intr *intr = ih->ih_intrhead;
206 struct cpu_info *ci = intr[num].intr_cpu;
215 TAILQ_INSERT_TAIL(&intr[num].intr_q, ih, ih_q);
218 TAILQ_REMOVE(&intr[num].intr_q, ih, ih_q);
226 alpha_shared_intr_link(struct alpha_shared_intr *intr,
233 KASSERT(ih->ih_intrhead == intr);
235 switch (intr[num].intr_sharetype) {
238 if (type == intr[num].intr_sharetype)
242 if (TAILQ_FIRST(&intr[num].intr_q) == NULL) {
245 intr_typename(intr[num].intr_sharetype));
246 type = intr[num].intr_sharetype;
250 intr_typename(intr[num].intr_sharetype));
261 intr[num].intr_sharetype = type;
267 if (intr[num].intr_cpu == NULL) {
268 intr[num].intr_cpu = &cpu_info_primary;
272 if (intr[num].intr_cpu == curcpu() || !mp_online) {
277 intr->intr_cpu);
286 alpha_shared_intr_unlink(struct alpha_shared_intr *intr,
294 if (intr[num].intr_cpu == curcpu() || !mp_online) {
299 intr->intr_cpu);
306 alpha_shared_intr_get_sharetype(struct alpha_shared_intr *intr,
310 return (intr[num].intr_sharetype);
314 alpha_shared_intr_isactive(struct alpha_shared_intr *intr, unsigned int num)
317 return TAILQ_FIRST(&intr[num].intr_q) != NULL;
321 alpha_shared_intr_firstactive(struct alpha_shared_intr *intr, unsigned int num)
325 return (ih = TAILQ_FIRST(&intr[num].intr_q)) != NULL &&
330 alpha_shared_intr_set_dfltsharetype(struct alpha_shared_intr *intr,
335 if (alpha_shared_intr_isactive(intr, num))
336 panic("alpha_shared_intr_set_dfltsharetype on active intr");
339 intr[num].intr_dfltsharetype = newdfltsharetype;
340 intr[num].intr_sharetype = intr[num].intr_dfltsharetype;
344 alpha_shared_intr_set_maxstrays(struct alpha_shared_intr *intr,
348 intr[num].intr_maxstrays = newmaxstrays;
349 intr[num].intr_nstrays = 0;
354 alpha_shared_intr_reset_strays(struct alpha_shared_intr *intr,
362 intr[num].intr_nstrays = 0;
366 alpha_shared_intr_stray(struct alpha_shared_intr *intr, unsigned int num,
370 intr[num].intr_nstrays++;
372 if (intr[num].intr_maxstrays == 0)
375 if (intr[num].intr_nstrays <= intr[num].intr_maxstrays)
377 intr[num].intr_nstrays >= intr[num].intr_maxstrays ?
382 alpha_shared_intr_set_private(struct alpha_shared_intr *intr,
386 intr[num].intr_private = v;
390 alpha_shared_intr_get_private(struct alpha_shared_intr *intr,
394 return (intr[num].intr_private);
437 alpha_shared_intr_set_cpu(struct alpha_shared_intr *intr, unsigned int num,
444 old_ci = intr[num].intr_cpu;
445 intr[num].intr_cpu = ci;
451 alpha_shared_intr_set_cpu_xcall(&intr[num], ci);
454 alpha_shared_intr_set_cpu_xcall, &intr[num],
460 alpha_shared_intr_unset_cpu_xcall(&intr[num], old_ci);
463 alpha_shared_intr_unset_cpu_xcall, &intr[num],
473 alpha_shared_intr_get_cpu(struct alpha_shared_intr *intr, unsigned int num)
476 return (intr[num].intr_cpu);
480 alpha_shared_intr_evcnt(struct alpha_shared_intr *intr,
484 return (&intr[num].intr_evcnt);
488 alpha_shared_intr_set_string(struct alpha_shared_intr *intr,
491 char *ostr = intr[num].intr_string;
492 intr[num].intr_string = str;
497 alpha_shared_intr_string(struct alpha_shared_intr *intr,
501 return (intr[num].intr_string);