All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Tina Ruchandani <ruchandani.tina@gmail.com>
Cc: Karsten Keil <isdn@linux-pingi.de>, netdev@vger.kernel.org
Subject: Re: [PATCH v2] isdn: Use ktime_t instead of 'struct timeval'
Date: Wed, 20 May 2015 15:56:28 +0200	[thread overview]
Message-ID: <6378639.MgDWU7ZGDD@wuerfel> (raw)
In-Reply-To: <20150519073306.GA28427@tinar>

On Tuesday 19 May 2015 13:03:06 Tina Ruchandani wrote:
> 'struct timeval' uses 32-bit representation for seconds which will
> overflow in year 2038 and beyond. mISDN/clock.c needs to compute and
> store elapsed time in intervals of 125 microseconds. This patch replaces
> the usage of 'struct timeval' with 64-bit ktime_t which is y2038 safe.
> The patch also replaces do_gettimeofday() (wall-clock time) with 
> ktime_get() (monotonic time) since we only care about elapsed time here.
> 
> Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
> Suggested-by: Arnd Bergmnann <arnd@arndb.de>

Looks mostly ok now, just one detail left:

> +		delta = ktime_us_delta(tv_now, iclock_tv) / 125;

This line is something I suggested, but I have now realized that it's
still wrong, because you introduce a 64-by-32-bit division here
that will fail to link on most 32-bit architectures.

Using a cast to 32-bit value would solve that, like

      delta = ((u32)ktime_us_delta(tv_now, iclock_tv)) / 125;

as that would replace the 64-bit division with a 32-bit division.
This is fine as long as the delta is never more than 71 minutes,
otherwise you have to use

	delta = ktime_divns(ktime_sub(tv_now, iclock_tv), (NS_PER_SEC / 8000));

which is also potentially more efficient.


	Arnd

      reply	other threads:[~2015-05-20 13:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-19  7:33 [PATCH v2] isdn: Use ktime_t instead of 'struct timeval' Tina Ruchandani
2015-05-20 13:56 ` Arnd Bergmann [this message]

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=6378639.MgDWU7ZGDD@wuerfel \
    --to=arnd@arndb.de \
    --cc=isdn@linux-pingi.de \
    --cc=netdev@vger.kernel.org \
    --cc=ruchandani.tina@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.