![]() | ||||||||||
Messages in this thread |
PS, I wrote: > Tetsuo Handa wrote: >> So, it is impossible to know whether I am inside a spinlock or not. >> OK. That's not what I want to do. >> >> I want to make sure that my code (not a device driver) is called only >> from a context where use of down()/mutex_lock()/kmalloc(GFP_KERNEL)/ >> get_user_pages()/kmap() etc. are permitted. >> Is "if (in_atomic()) return;" check a correct method for avoiding >> deadlocks when my code was accidentally called from a context >> where use of down()/mutex_lock()/kmalloc(GFP_KERNEL)/get_user_pages()/ >> kmap() etc. are not permitted? No. Quoting Andrew: "in_atomic() returns false inside spinlock on non-preemptible kernels." > You shouldn't sleep while holding a spinlock. As soon as another thread or interrupt handler or tasklet > attempts to take the spinlock, it will be stuck in a busy-wait loop. -- Stefan Richter -=====-==--- --== =-=-= http://arcgraph.de/sr/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | |||||||||
| Last update: 2008-03-21 18:05 [from the cache] ©2003-2008 | ||||||||||