On Sat, 2005-04-02 at 20:37 +0100, Al Viro wrote: > On Sat, Apr 02, 2005 at 02:04:11PM -0500, Steven Rostedt wrote: > > You can also use globally static variables too. But this makes for > > non-reentry code. > > > > Sometimes I don't feel that a kmalloc is worth it, and if the function > > in question for the driver would seldom have problems with reentry, I > > use a statically defined global, and protect it with spin_locks. If > > these can also be used in interrupt context, you need to use the > > spin_lock_irqsave variants. But don't do this if the critical section > > has long latencies. > > ... and the first time copy_from_user() blocks under your spinlock > you will get a nice shiny deadlock.
I forgot that he mentioned that this was for ioctls. I then use semaphores if I need to access userspace. But if it just needs to modify data around areas that only the kernel uses, without access to userspace, than I use spinlocks. I admit you really need to know what you're doing to use this method. If I believe that a kmalloc would be too expensive, then I use the locking of static variables. But each situation is different and I try to use the best method for the occasion. -- Steve - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/