On Sun, Mar 23, 2008 at 2:44 PM, Codrin Alexandru Grajdeanu <grcodal@xxxxxxxxx> wrote: > To test this, sparse would be required to run twice. First to get all > interrupt context functions, by verifying what arguments are passed to > irq_handler_t() and what values are passed to the function pointers in You can identify the interrupt handler by return type is "irqreturn_t". > struct timer_list, softirq_action and tasklet_struct. The second run That is harder. > would generate the call graph for this function and would verify if > schedule() is called inside their call graph. I don't think two pass is enough. You need to build the call graph for pretty much every function. Because the irq handler function might call other function which calls other function which calls schedule(). I don't think you can go very far without doing any control flow and data flow analyze. e.g. kmalloc() can go to sleep or not depend on the allocation flag (GFP_ATOMIC). Which points back to the proposal of: a) allow sparse to access function from different files. b) building the call graph for every function in the kernel. Chris -- 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