[PATCH] Make MIPS dynamic clocksource/clockevent clock code generic
Mikael Pettersson
mikpe at it.uu.se
Tue Oct 20 04:19:12 EDT 2009
Thomas Gleixner writes:
> > +static inline void clockevent_set_clock(struct clock_event_device *dev, u32 hz)
> > +{
> > + u64 temp;
> > + u32 shift;
> > +
> > + /* Find a shift value */
> > + for (shift = 32; shift > 0; shift--) {
> > + temp = (u64) hz << shift;
> > + do_div(temp, NSEC_PER_SEC);
> > + if ((temp >> 32) == 0)
> > + break;
> > + }
> > + dev->shift = shift;
> > + dev->mult = (u32) temp;
> > +}
> > +
> > +
> > +static inline void clocksource_set_clock(struct clocksource *cs, u32 hz)
> > +{
> > + u64 temp;
> > + u32 shift;
> > +
> > + /* Find a shift value */
> > + for (shift = 32; shift > 0; shift--) {
> > + temp = (u64) NSEC_PER_SEC << shift;
> > + do_div(temp, hz);
> > + if ((temp >> 32) == 0)
> > + break;
> > + }
> > + cs->shift = shift;
> > + cs->mult = (u32) temp;
> > +}
> > +
>
> So that's the same function twice, right ?
They are similar but not identical:
> > + temp = (u64) hz << shift;
> > + do_div(temp, NSEC_PER_SEC);
vs
> > + temp = (u64) NSEC_PER_SEC << shift;
> > + do_div(temp, hz);
I suppose both functions could be implemented by a suitably
parametric third function, but IMO that would just obscure things.
Making them non-inline I fully agree with.
More information about the linux-arm-kernel
mailing list