version 1.38, 2011/09/27 01:02:38 |
version 1.38.2.2, 2014/05/22 11:41:03 |
Line 186 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 186 __KERNEL_RCSID(0, "$NetBSD$"); |
|
#include <sys/evcnt.h> |
#include <sys/evcnt.h> |
#include <sys/cpu.h> |
#include <sys/cpu.h> |
#include <sys/xcall.h> |
#include <sys/xcall.h> |
|
#include <sys/pserialize.h> |
|
|
#include <net/netisr.h> |
#include <net/netisr.h> |
|
|
Line 402 softint_disestablish(void *arg) |
|
Line 403 softint_disestablish(void *arg) |
|
u_int flags; |
u_int flags; |
|
|
offset = (uintptr_t)arg; |
offset = (uintptr_t)arg; |
KASSERT(offset != 0 && offset < softint_bytes); |
KASSERTMSG(offset != 0 && offset < softint_bytes, "%"PRIuPTR" %u", |
|
offset, softint_bytes); |
|
|
/* |
/* |
* Run a cross call so we see up to date values of sh_flags from |
* Run a cross call so we see up to date values of sh_flags from |
Line 461 softint_schedule(void *arg) |
|
Line 463 softint_schedule(void *arg) |
|
|
|
/* Find the handler record for this CPU. */ |
/* Find the handler record for this CPU. */ |
offset = (uintptr_t)arg; |
offset = (uintptr_t)arg; |
KASSERT(offset != 0 && offset < softint_bytes); |
KASSERTMSG(offset != 0 && offset < softint_bytes, "%"PRIuPTR" %u", |
|
offset, softint_bytes); |
sh = (softhand_t *)((uint8_t *)curcpu()->ci_data.cpu_softcpu + offset); |
sh = (softhand_t *)((uint8_t *)curcpu()->ci_data.cpu_softcpu + offset); |
|
|
/* If it's already pending there's nothing to do. */ |
/* If it's already pending there's nothing to do. */ |
Line 828 softint_dispatch(lwp_t *pinned, int s) |
|
Line 831 softint_dispatch(lwp_t *pinned, int s) |
|
l->l_pflag &= ~LP_TIMEINTR; |
l->l_pflag &= ~LP_TIMEINTR; |
} |
} |
|
|
|
/* Indicate a soft-interrupt switch. */ |
|
pserialize_switchpoint(); |
|
|
/* |
/* |
* If we blocked while handling the interrupt, the pinned LWP is |
* If we blocked while handling the interrupt, the pinned LWP is |
* gone so switch to the idle LWP. It will select a new LWP to |
* gone so switch to the idle LWP. It will select a new LWP to |