Copyright (c) 2009 Hudson River Trading LLC Written by: John H. Baldwin <jhb@FreeBSD.org> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and t...
NAMEBUS_BIND_INTR bus_bind_intr - bind an interrupt resource to a specific CPU
SYNOPSISIn sys/param.h In sys/bus.h Ft int Fo BUS_BIND_INTR Fa device_t dev device_t child struct resource *irq int cpu Fc Ft int Fn bus_bind_intr device_t dev struct resource *irq int cpu
DESCRIPTIONThe Fn BUS_BIND_INTR method allows an interrupt resource to be pinned to a specific CPU. The interrupt resource must have an interrupt handler attached via BUS_SETUP_INTR9. The Fa cpu parameter corresponds to the ID of a valid CPU in the system. Binding an interrupt restricts the cpuset(2) of any associated interrupt threads to only include the specified CPU. It may also direct the low-level interrupt handling of the interrupt to the specified CPU as well, but this behavior is platform-dependent. If the value NOCPU is used for Fa cpu , then the interrupt will be ``unbound'' which restores any associated interrupt threads back to the default cpuset.
Non-sleepable locks such as mutexes should not be held across calls to these functions.
The Fn bus_bind_intr function is a simple wrapper around Fn BUS_BIND_INTR .
Note that currently there is no attempt made to arbitrate between multiple bind requests for the same interrupt from either the same device or multiple devices. There is also no arbitration between interrupt binding requests submitted by userland via cpuset(2) and Fn BUS_BIND_INTR . The most recent binding request is the one that will be in effect.