linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cputime.h seems to assume HZ==1000
@ 2005-01-18  1:57 Roland McGrath
  2005-01-18  2:46 ` Linus Torvalds
  0 siblings, 1 reply; 3+ messages in thread
From: Roland McGrath @ 2005-01-18  1:57 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel

Shouldn't msecs mean msecs, not secs/HZ?

--- linux-2.6/include/asm-generic/cputime.h
+++ linux-2.6/include/asm-generic/cputime.h
@@ -35,8 +35,8 @@ typedef u64 cputime64_t;
 /*
  * Convert cputime to seconds and back.
  */
-#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / HZ)
-#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * HZ))
+#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / 1000)
+#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * 1000))
 
 /*
  * Convert cputime to timespec and back.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] cputime.h seems to assume HZ==1000
  2005-01-18  1:57 [PATCH] cputime.h seems to assume HZ==1000 Roland McGrath
@ 2005-01-18  2:46 ` Linus Torvalds
  2005-01-20  0:18   ` George Anzinger
  0 siblings, 1 reply; 3+ messages in thread
From: Linus Torvalds @ 2005-01-18  2:46 UTC (permalink / raw)
  To: Roland McGrath, Hugh Dickins, Martin Schwidefsky
  Cc: Andrew Morton, Kernel Mailing List



On Mon, 17 Jan 2005, Roland McGrath wrote:
>
> Shouldn't msecs mean msecs, not secs/HZ?

Hmm, sure, but why go through "msecs" at all?

> --- linux-2.6/include/asm-generic/cputime.h
> +++ linux-2.6/include/asm-generic/cputime.h
> @@ -35,8 +35,8 @@ typedef u64 cputime64_t;
>  /*
>   * Convert cputime to seconds and back.
>   */
> -#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / HZ)
> -#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * HZ))
> +#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / 1000)
> +#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * 1000))

iow, why not

	#define cputime_to_secs(jif)	((jif) / HZ)
	#define secs_to_cputime(sec)	((sec) * HZ)

which avoids double rounding issues etc.

Not to mention that "secs_to_cputime()" lacks the proper parenthesis.

More signers-off-on-this-thing added.

		Linus

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] cputime.h seems to assume HZ==1000
  2005-01-18  2:46 ` Linus Torvalds
@ 2005-01-20  0:18   ` George Anzinger
  0 siblings, 0 replies; 3+ messages in thread
From: George Anzinger @ 2005-01-20  0:18 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Roland McGrath, Hugh Dickins, Martin Schwidefsky, Andrew Morton,
	Kernel Mailing List

Linus Torvalds wrote:
> 
> On Mon, 17 Jan 2005, Roland McGrath wrote:
> 
>>Shouldn't msecs mean msecs, not secs/HZ?
> 
> 
> Hmm, sure, but why go through "msecs" at all?
> 
> 
>>--- linux-2.6/include/asm-generic/cputime.h
>>+++ linux-2.6/include/asm-generic/cputime.h
>>@@ -35,8 +35,8 @@ typedef u64 cputime64_t;
>> /*
>>  * Convert cputime to seconds and back.
>>  */
>>-#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / HZ)
>>-#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * HZ))
>>+#define cputime_to_secs(__ct)		(jiffies_to_msecs(__ct) / 1000)
>>+#define secs_to_cputime(__secs)		(msecs_to_jiffies(__secs * 1000))
> 
> 
> iow, why not
> 
> 	#define cputime_to_secs(jif)	((jif) / HZ)
> 	#define secs_to_cputime(sec)	((sec) * HZ)
> 
> which avoids double rounding issues etc.

If we care, the jiffies_to_msecs() code is in include/linux/jiffies.h just prior 
to other conversion code that does NOT make the assumtion that HZ is exact.  To 
be exact:

static inline long cputime_to_secs(unsigned long jif)
{
	int t;
	u64 result = (u64)jif * TICK_NSEC;
	t = do_div(result ,NSEC_PER_SEC);
	return (u32)result + t ? 1:0;      /* round up if not exact */
}
#define secs_to_cputime(sec) (((U64) sec * SEC_CONVERSION) >> SEC_JIFFIE_SC)

This last assumes sec worth of jiffies will actually fit in a long...

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-01-20  0:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-01-18  1:57 [PATCH] cputime.h seems to assume HZ==1000 Roland McGrath
2005-01-18  2:46 ` Linus Torvalds
2005-01-20  0:18   ` George Anzinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).