From: Albert Cahalan <albert@users.sf.net>
To: john stultz <johnstul@us.ibm.com>
Cc: Albert Cahalan <albert@users.sourceforge.net>,
Tim Schmielau <tim@physik3.uni-rostock.de>,
george anzinger <george@mvista.com>,
Andrew Morton OSDL <akpm@osdl.org>,
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
lkml <linux-kernel@vger.kernel.org>,
voland@dmz.com.pl, nicolas.george@ens.fr,
kaukasoi@elektroni.ee.tut.fi, david+powerix@blue-labs.org
Subject: Re: [PATCH] Re: boot time, process start time, and NOW time
Date: 17 Aug 2004 18:45:54 -0400 [thread overview]
Message-ID: <1092782754.5759.1679.camel@cube> (raw)
In-Reply-To: <1092791363.2429.319.camel@cog.beaverton.ibm.com>
On Tue, 2004-08-17 at 21:09, john stultz wrote:
> On Tue, 2004-08-17 at 15:19, Albert Cahalan wrote:
> > On Tue, 2004-08-17 at 20:11, john stultz wrote:
> >
> > > --- 1.62/fs/proc/array.c 2004-08-05 13:36:53 -07:00
> > > +++ edited/fs/proc/array.c 2004-08-17 17:08:07 -07:00
> > > @@ -356,7 +356,14 @@
> > > read_unlock(&tasklist_lock);
> > >
> > > /* Temporary variable needed for gcc-2.96 */
> > > - start_time = jiffies_64_to_clock_t(task->start_time - INITIAL_JIFFIES);
> > > + /* convert timespec -> nsec*/
> > > + start_time = (unsigned long long)task->start_time.tv_sec * NSEC_PER_SEC
> > > + + task->start_time.tv_nsec;
> > > + /* convert nsec -> ticks */
> > > + start_time *= HZ;
> > > + do_div(start_time, NSEC_PER_SEC);
> > > + /* convert ticks -> USER_HZ ticks */
> > > + start_time = jiffies_64_to_clock_t(start_time);
> >
> > This would overflow in about 6 months at 1024 USER_HZ.
> > Various possible alternatives:
>
> Everybody sing: Thanks, nice catch/Here's an updated patch!
>
> -john
>
> ===== fs/proc/array.c 1.62 vs edited =====
> --- 1.62/fs/proc/array.c 2004-08-05 13:36:53 -07:00
> +++ edited/fs/proc/array.c 2004-08-17 18:03:55 -07:00
> @@ -356,7 +356,13 @@
> read_unlock(&tasklist_lock);
>
> /* Temporary variable needed for gcc-2.96 */
> - start_time = jiffies_64_to_clock_t(task->start_time - INITIAL_JIFFIES);
> + /* convert timespec -> nsec*/
> + start_time = (unsigned long long)task->start_time.tv_sec * NSEC_PER_SEC
> + + task->start_time.tv_nsec;
> + /* convert nsec -> ticks */
> + do_div(start_time, NSEC_PER_SEC/HZ);
> + /* convert ticks -> USER_HZ ticks */
> + start_time = jiffies_64_to_clock_t(start_time);
NSEC_PER_SEC/HZ isn't an integer when HZ is 1024.
Also, you're doing two conversions. You can go directly
from nanoseconds to USER_HZ, without using HZ at all.
I think you really need the #if for this.
It could go in a header if you like, creating
a timespec_to_clock_t macro for use in proc.
next prev parent reply other threads:[~2004-08-18 1:19 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-22 23:57 boot time, process start time, and NOW time Albert Cahalan
2004-06-28 17:56 ` OGAWA Hirofumi
2004-08-16 19:41 ` Andrew Morton
2004-08-16 21:49 ` john stultz
2004-08-16 23:08 ` Tim Schmielau
2004-08-16 23:56 ` Tim Schmielau
2004-08-17 0:21 ` john stultz
2004-08-17 0:37 ` George Anzinger
2004-08-17 0:49 ` john stultz
2004-08-17 0:31 ` George Anzinger
2004-08-16 22:32 ` Albert Cahalan
2004-08-17 1:26 ` George Anzinger
2004-08-16 23:08 ` Albert Cahalan
2004-08-17 1:54 ` James Courtier-Dutton
2004-08-17 2:03 ` Lee Revell
2004-08-17 20:52 ` George Anzinger
2004-08-17 6:56 ` Tim Schmielau
2004-08-17 20:07 ` john stultz
2004-08-17 20:13 ` [RFC] New timeofday implementation proposal john stultz
2004-08-17 20:58 ` [RFC] New timeofday code john stultz
2004-09-01 23:16 ` [RFC] New timeofday implementation proposal Christoph Lameter
2004-08-16 23:24 ` boot time, process start time, and NOW time Albert Cahalan
2004-08-17 19:00 ` john stultz
2004-08-17 17:41 ` Albert Cahalan
2004-08-17 20:58 ` john stultz
2004-08-17 20:25 ` [PATCH] " Tim Schmielau
2004-08-17 22:24 ` George Anzinger
2004-08-17 22:37 ` john stultz
2004-08-17 23:07 ` Tim Schmielau
2004-08-18 0:11 ` john stultz
2004-08-17 22:19 ` Albert Cahalan
2004-08-18 1:09 ` john stultz
2004-08-17 22:45 ` Albert Cahalan [this message]
2004-08-18 7:42 ` Tim Schmielau
2004-08-19 19:15 ` Petri Kaukasoina
2004-08-26 11:04 ` Andrew Morton
2004-08-26 12:07 ` Tim Schmielau
2004-08-30 23:00 ` Tim Schmielau
2004-08-30 23:38 ` john stultz
2004-08-31 0:37 ` Albert Cahalan
2004-08-31 0:49 ` Tim Schmielau
2004-08-31 0:45 ` Tim Schmielau
2004-08-31 1:23 ` john stultz
2004-08-31 1:34 ` john stultz
2004-08-31 6:07 ` Tim Schmielau
2004-08-31 19:27 ` George Anzinger
2004-08-31 20:56 ` john stultz
2004-08-31 21:10 ` David Ford
2004-09-02 20:39 ` George Anzinger
2004-09-01 19:14 ` OGAWA Hirofumi
2004-09-02 20:58 ` George Anzinger
2004-09-02 21:38 ` OGAWA Hirofumi
2004-09-03 0:59 ` George Anzinger
2004-09-03 3:35 ` OGAWA Hirofumi
2004-09-03 7:31 ` George Anzinger
2004-09-03 7:51 ` Tim Schmielau
2004-09-03 7:15 ` Tim Schmielau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1092782754.5759.1679.camel@cube \
--to=albert@users.sf.net \
--cc=akpm@osdl.org \
--cc=albert@users.sourceforge.net \
--cc=david+powerix@blue-labs.org \
--cc=george@mvista.com \
--cc=hirofumi@mail.parknet.co.jp \
--cc=johnstul@us.ibm.com \
--cc=kaukasoi@elektroni.ee.tut.fi \
--cc=linux-kernel@vger.kernel.org \
--cc=nicolas.george@ens.fr \
--cc=tim@physik3.uni-rostock.de \
--cc=voland@dmz.com.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox