On Wed, 2013-05-15 at 17:26 +0200, Arnd Bergmann wrote: > On Tuesday 14 May 2013, Imre Deak wrote: > > The *_to_jiffies(x) macros return a jiffy value, which if used as a > > delta to wait for a specific amount of time, may result in a wait time > > that is less than x. Many callers already compensate for this by adding > > one to the returned value. Instead of having this adjustment open-coded > > at every call site add helpers that return the adjusted value. This will > > make the intention for the adjustment more explicit and also provide > > documentation for why it is needed. > > > > Later patches will convert the currently open-coded call sites to use > > the new helpers. > > > > Also this can serve as a basis for auditing those users of *_to_jiffies > > that most likely do the wrong thing - for example set a timeout value of > > msecs_to_jiffies(1) - and converting them to use the new helpers. > > > > Kudos to Daniel Vetter for the idea of the new helpers. > > > > Signed-off-by: Imre Deak <imre.d...@intel.com> > > This certainly looks like a reasonable change, but I wonder if we could take > it one step further and add milisecond based interfaces for some of those > functions that currently take a jiffies value, something like > > int timer_set_msecs(struct timer_list *timer, unsigned long msecs) > { > unsigned long j = msec_to_jiffies(msecs); > return mod_timer(timer, min_t(msecs, MAX_JIFFY_OFFSET)); > }
Ok, but I think we'd still need the *_to_jiffies_timeout helpers, so that we don't have to open code the +1 magic anywhere. > > +#define __define_time_to_jiffies_timeout(tname, ttype) \ > > +unsigned long tname ## _to_jiffies_timeout(const ttype v) \ > > +{ \ > > + unsigned long j = tname ## _to_jiffies(v); \ > > + return min_t(unsigned long, MAX_JIFFY_OFFSET, j + 1); \ > > +} \ > > +EXPORT_SYMBOL(tname ## _to_jiffies_timeout); > > The macro has a few disadvantages: > > * It's impossible to grep for the function or use tags if you generate > the identifier using the macro. They are fully spelled in include/linux/jiffies.h . Would it be ok if I moved the kernel doc there with a reference to kernel/time.c? > * msecs_to_jiffies is what puts MAX_JIFFY_OFFSET there in the first > place, which means you add an extra comparison here that should > not really be needed. Yes, but that allows us to keep things simple across all the helpers. I haven't checked but I'd assume compiler inlining/optimization should make this a non-issue anyway. --Imre -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/