netdev
[Top] [All Lists]

Re: MSEC_TO_JIFFIES is messed up...

To: Andrew Morton <akpm@xxxxxxxx>
Subject: Re: MSEC_TO_JIFFIES is messed up...
From: William Lee Irwin III <wli@xxxxxxxxxxxxxx>
Date: Wed, 12 May 2004 13:59:15 -0700
Cc: mingo@xxxxxxx, davidel@xxxxxxxxxxxxxxx, jgarzik@xxxxxxxxx, greg@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20040512134718.7e55cceb.akpm@xxxxxxxx>
Mail-followup-to: William Lee Irwin III <wli@xxxxxxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxx>, mingo@xxxxxxx, davidel@xxxxxxxxxxxxxxx, jgarzik@xxxxxxxxx, greg@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
References: <20040512020700.6f6aa61f.akpm@xxxxxxxx> <20040512181903.GG13421@xxxxxxxxx> <40A26FFA.4030701@xxxxxxxxx> <20040512193349.GA14936@xxxxxxx> <Pine.LNX.4.58.0405121247011.11950@xxxxxxxxxxxxxxxxxxxxxxx> <20040512200305.GA16078@xxxxxxx> <20040512132050.6eae6905.akpm@xxxxxxxx> <20040512203829.GI1397@xxxxxxxxxxxxxx> <20040512134718.7e55cceb.akpm@xxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.5.1+cvs20040105i
William Lee Irwin III <wli@xxxxxxxxxxxxxx> wrote:
>> How about this?
>>  #if HZ <= 1000 && !(1000 % HZ)
>>  #define MSEC_TO_JIFFIES(m)  ((1000/HZ)*(m))
>>  #define JIFFIES_TO_MSEC(j)  ((j)/(1000/HZ))
>>  #elif HZ > 1000 && !(HZ % 1000)
>>  #define MSEC_TO_JIFFIES(m)  ((m)/(HZ/1000))
>>  #define JIFFIES_TO_MSEC(j)  ((HZ/1000)*(j))
>>  #else
>>  #define MSEC_TO_JIFFIES(m)  ((HZ*(m) + 999)/1000)
>>  #define JIFFIES_TO_MSEC(j)  ((1000*(j) + HZ - 1)/HZ)
>>  #endif

On Wed, May 12, 2004 at 01:47:18PM -0700, Andrew Morton wrote:
> You promise it's correct and generates good code?

Yes. Changelog:

Optimize the cases where HZ is a divisor of 1000 or vice-versa in
JIFFIES_TO_MSEC() and MSEC_TO_JIFFIES() by allowing the nonvanishing(!)
integral ratios to appear as a parenthesized expressions eligible for
constant folding optimizations.

I'll resend the #ifdef logic against Ingo's latest, which is orthogonal.


-- wli

<Prev in Thread] Current Thread [Next in Thread>