BUS_BIND_INTR(9) | FreeBSD Kernel Developer's Manual | BUS_BIND_INTR(9) |
名称
BUS_BIND_INTR, bus_bind_intr — 特定の CPU への割り込みリソースをバインドする書式
#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);
解説
BUS_BIND_INTR() メソッドによって、割り込みリソースを、特定の CPU に割り当てることができます。割り込みリソースは、 BUS_SETUP_INTR(9) を通してアタッチされた割り込みハンドラがなければなりません。 cpu パラメータは、システムの有効な CPU の ID に対応しています。割り込みをバインドすると、指定された CPU のみを含む任意の関連する割り込みスレッドの cpuset(2) を制限します。また、同様に指定された CPU への割り込みの低レベル割り込み操作を指示しますが、この振る舞いは、プラットフォームに依存しています。値 NOCPU が cpu に対して使用されるなら、割り込みは、デフォルトの cpuset に戻す、任意の関連する割り込みスレッドが復旧される“unbound” (アンバインド) となります。ミューテックスのようなスリープ不可能なロックは、これらの関数への呼び出しのに渡って保持されるべきではありません。
bus_bind_intr() 関数は、 BUS_BIND_INTR() を周りの簡単なラッパ (wrapper) です。
現在、同じデバイスまたは複数のデバイスのどちらかから同じ割り込みに対して複数のバインド要求の間の調停 (arbitration) を行う試みがないことに注意してください。また、 cpuset(2) と BUS_BIND_INTR() を通してユーザランドによって発行された割り込みバインド要求の間の調停 (arbitration) はありません。最新のバインド要求は、有効となるものの 1 つです。
戻り値
成功すれば、0 が返され、そうでなければ、適切なエラーが返されます。歴史
BUS_BIND_INTR() メソッドと bus_bind_intr() 関数は、 FreeBSD 7.2 ではじめて登場しました。October 14, 2009 | FreeBSD |