> On Mon, 26 Feb 2007 16:54:17 -0800 Inaky Perez-Gonzalez <[EMAIL PROTECTED]> > wrote: > On Monday 26 February 2007 16:33, Christoph Hellwig wrote: > > On Mon, Feb 26, 2007 at 04:13:38PM -0800, [EMAIL PROTECTED] wrote: > > > Introduce down_interruptible_timeout() using timers to make the waiter > > > stop waiting by simulating a signal (see first patch for more > > > details). As well introduce asm-generic/semaphore.h and make other > > > architectures use it too. > > > > What do you want this for? Do you really need a full counting semaphore > > or do you actually want a mutex? > > Yeah, I need semaphore. This is a hw register that says when the hw > is ready to accept a new command. Code that wants to send commands has > to down the semaphore and then send it. When hw is ready to get a new > command, it sends and IRQ and the IRQ up()s the semaphore. > > Now, we don't want to hang on that down() forever if the hw spaces out. > If we get a timeout, we can try recovery actions (like resetting it, > for sake of being polite). >
This is a very common pattern - for example, shoving characters down a uart or a parport. Nobody else has needed to invent new locking infrastructure to do such things and I'd prefer not to do so now. Can you not do things more conventionally within that driver? Use waitqueues for sleeping with timeout, use a spinlock for serialisation against the device registers. There are squillions of examples in drivers/*, surely. - 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/