On Mon, 2008-11-17 at 15:47 -0600, Yoann Padioleau wrote: > Is it possible by using the __attribute((context(x,y)) sparse > attribute to enforce statically that all the callers of > certain functions do certain actions such as disabling interrupts ? In theory yes, but only half my patches got merged so no. If you search the list you'll find a set of patches from myself that allow you to do this, see below. I have asked that those patches that got merged are reverted for the time being until we can work on a decent implementation, but that hasn't happen either so the current sparse git tree is fairly broken wrt. context attributes... > int __assume_disabled_interrupt > startpoint() > { > return 1; > } > > > int f1ok() > { > spin_lock_irq(); > startpoint(); > spin_unlock_irq(); > } > > > int f1bad() > { > startpoint(); > } You'd have to annotate startpoint() with __attribute__((context(irqsoff,1,1))) and spin_lock_irq() with __attribute__((context(irqsoff,0,1))) and 1,0 for unlock, in addition to the regular locks. [or something like that, the syntax isn't firm in my mind right now] johannes -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html