View Single Post
  #1   (View Single Post)  
Old 19th May 2008
n4uti1us n4uti1us is offline
New User
 
Join Date: May 2008
Location: Ireland
Posts: 3
Default Spin locks and interrupts disabling

Hi All,

I was looking at the linux kernel, and in the implementation of spinlocks, one can use different functions. One of them is spin_lock_bh(). What it does is it creates a spin lock and disables the software irqs.

In FreeBSD on the other hand, the implementation of spinlocks is done by mtx_lock_spin (which is actually a macro that calls mtx_lock_spin_flags()) but the problem is that is disables all the irq vector (at the bottom of the stack it executes an "cli"). Is there any way one can implement spinlocks that only disable the bottom half (sof irq)?

Alternatively, what would be the best way to manualy disable the soft irqs?

Thank you for reading.
Reply With Quote