BUS_BIND_INTR(9)
okay bestie, welcome to BUS_BIND_INTR(9) from the Kernel Developer's Manual β this is the page about pinning an interrupt resource to a specific CPU, and it is lowkey iconic. π
β¨ NAME β¨
BUS_BIND_INTR, bus_bind_intr β bind an interrupt resource to a specific CPU
π οΈ SYNOPSIS π οΈ
#include <sys/param.h>
#include <sys/bus.h>
int
BUS_BIND_INTR(device_t dev, device_t child, struct resource *irq,
int cpu);
int
bus_bind_intr(device_t dev, struct resource *irq, int cpu);
π DESCRIPTION π
okay so the BUS_BIND_INTR() method is the one that lets an interrupt resource be pinned to a specific CPU. no cap. π
The interrupt resource must have an interrupt handler attached via BUS_SETUP_INTR(9). The 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 β so it's giving "maybe, depending on your platform," iykyk. π¦
If the value NOCPU is used for 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. fr fr, just don't. π
The bus_bind_intr() function is a simple wrapper around 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 BUS_BIND_INTR(). The most recent binding request is the one that will be in effect. periodt. π
π RETURN VALUES π
Zero is returned on success, otherwise an appropriate error is returned. that's the whole tea. β
π SEE ALSO π
πΈ HISTORY πΈ
The BUS_BIND_INTR() method and bus_bind_intr() functions first appeared in FreeBSD 7.2. vintage but make it cute. β¨
π sign-off: source/version is Debian, date is October 14, 2009, and the manual is BUS_BIND_INTR(9). byeee bestie π«Ά
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- Copyright (c) 2009 Hudson River Trading LLC
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms