Re: I made a patch and would like feedback/testers (drivers/cdrom/aztcd.c)

From: Nick Piggin
Date: Mon Nov 21 2005 - 04:49:17 EST


Con Kolivas wrote:
On Mon, 21 Nov 2005 19:42, Daniel Marjamäki wrote:

Hmm.. The minimum value should be 2, right?
Otherwise the loop could time out after only a few nanoseconds.. since the
loop will then timeout immediately on a clock tick. Or am I wrong?


aztTimeOut = HZ / 500 ? : 1;
Would give you a 2ms timeout on 1000Hz and 500Hz
It would give you 5ms on 250Hz and 10ms on 100Hz

ie the absolute minimum it would be would be 2ms, but it would always be at least one timer tick which is longer than 2ms at low HZ values.


Not true. From 'now', the next timer interrupt is somewhere
between epsilon and 1/HZ seconds away.

Luckily, time_after is < rather than <=, so your aztTimeOut would
actually make Daniel's code wait until a minimum of *two* timer
ticks have elapsed since reading jiffies. So it would manage to
scrape by the values of HZ you quoted.

OTOH, if HZ were between 500 and 1000, it would again be too short
due to truncation.

Better I think would be to use the proper interfaces for converting
msecs to jiffies:

aztTimeOut = jiffies + msecs_to_jiffies(2);

Nick

--
SUSE Labs, Novell Inc.

Send instant messages to your online friends http://au.messenger.yahoo.com -
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/