BH很古老。所有BH都是静态定义的,最多可以有32个。由于处理函数必须在编译时就被定义好,所以实现模块时不能直接使用BH接口。
每个BH处理程序都有严格地按顺序执行----不允许执行任何两个BH处理程序同时执行,即使它们类型不同。这样做倒是使同步变得简单了,可是却不利于多处理器的可扩展性,也不利于大型SMP的性能。使用BH的驱动程序很难从多个处理器上受益了。除了这些特点,BH机制和tasklet就很像了。
所有可能的32个BH都通过在<linux/interrupt.h>中定义的常量表示。如果需要将一个BH标志为挂起状态,可以把相应的BH号传给mark_bh()函数。
现在已经淘汰了。