[i2c] [PATCH 01/03] i2c-i801: Add basic interrupt support

Jean Delvare khali at linux-fr.org
Wed Aug 13 22:38:40 CEST 2008


On Wed, 13 Aug 2008 21:17:22 +0200, Ivo Manca wrote:
> Hey Jean,
> > Ideally this define would replace MAX_TIMEOUT (in a separate patch) so 
> > that both
> > the poll-based and the interrupt-driven paths have the same timeout 
> > value. Right now,
> > the timeout handling of the poll-based path is rather ugly (the actual 
> > timeout depends on
> > the value of HZ.)
>
> Hm, seems like a very sensible thing to do. However, I have no idea how 
> to implement that, since you don't really know how long msleep slept, or 
> not? I sadly don't really have time to look into this right now, sorry.

The trick is to not rely on the duration of the msleep(). As you
rightly said, we have no clue how long it slept. Instead, we remember
the initial value of jiffies, and check after each iteration whether
the timeout has been exceeded or not. Something like:

	unsigned long start = jiffies, now;

	while (!time_after(now, jiffies + timeout)
	 && !<other condition>) {
		msleep(1);
		<do something>
	}

But if you don't have the time, this can be done later, no worry. It
doesn't belong to your patch anyway.

> (...)
> I'll send you an updated patch later this evening. I don't know anything 
> about config files though, so that'll have to wait a bit... The module 
> parameter will be added though.

The Kconfig language is pretty easy. But don't worry about it if you
don't have the time to look into it: I'll add a patch on top of yours
implementing my idea, no problem.

Thanks,
-- 
Jean Delvare



More information about the i2c mailing list