On 11/2/05, Andrew Morton wrote:
> Michael Krufky <[email protected]> wrote:
> >
> > +s32 timeval_usec_diff(struct timeval lasttime, struct timeval curtime)
> > +{
> > + return ((curtime.tv_usec < lasttime.tv_usec) ?
> > + 1000000 - lasttime.tv_usec + curtime.tv_usec :
> > + curtime.tv_usec - lasttime.tv_usec);
> > +}
> > +EXPORT_SYMBOL(timeval_usec_diff);
> > +
> > +static inline void timeval_usec_add(struct timeval *curtime, u32 add_usec)
> > +{
> > + curtime->tv_usec += add_usec;
> > + if (curtime->tv_usec >= 1000000) {
> > + curtime->tv_usec -= 1000000;
> > + curtime->tv_sec++;
> > + }
> > +}
>
> timeval arithmetic like this really shouldn't be hidden in a dvb driver -
> it's generic code.
> However I don't believe that the driver should be using timevals and
> do_gettimeofday() at all. Why not use jiffies-based timing like so
> many other parts of the kernel?
>
To be honest, I don't like this solution very much either. It only
works when HZ is ~1000, and even then isn't reliable for everyone who
uses this code. All this is attempting to be is a high precision 8ms
timer. Accuracy needs to be +/- 500us for the code to work. I am not
a (very good) kernel programmer, and didn't find anything that would
really fit the bill when trying to figure out how to ensure a routine
gets called every 8ms (9 times). The ktimers stuff I saw recently on
lwn would seem to work well here, but if there is a way to do it with
what is in the kernel today, I'm just not aware of how to do it. So
if someone will show me the right way (or point me in the irght
direction even), I'll be happy to rework the patch.
Thanks,
Noone
-
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/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]