[PATCH] staging: comedi: Use monotonic clock

Ian Abbott abbotti at mev.co.uk
Tue Aug 11 17:41:19 UTC 2015


On 11/08/15 15:31, Abhilash Jindal wrote:
> Wall time obtained from do_gettimeofday is susceptible to sudden jumps due to
> user setting the time or due to NTP.
>
> Monotonic time is constantly increasing time better suited for comparing two
> timestamps.
>
> Signed-off-by: Abhilash Jindal <klock.android at gmail.com>
> ---
>   drivers/staging/comedi/drivers/serial2002.c |   10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/staging/comedi/drivers/serial2002.c b/drivers/staging/comedi/drivers/serial2002.c
> index 83da162..5f19374 100644
> --- a/drivers/staging/comedi/drivers/serial2002.c
> +++ b/drivers/staging/comedi/drivers/serial2002.c
> @@ -32,6 +32,7 @@ Status: in development
>   #include <linux/delay.h>
>   #include <linux/sched.h>
>   #include <linux/slab.h>
> +#include <linux/ktime.h>
>
>   #include <linux/termios.h>
>   #include <asm/ioctls.h>
> @@ -121,9 +122,9 @@ static int serial2002_tty_write(struct file *f, unsigned char *buf, int count)
>   static void serial2002_tty_read_poll_wait(struct file *f, int timeout)
>   {
>   	struct poll_wqueues table;
> -	struct timeval start, now;
> +	ktime_t start, now;
>
> -	do_gettimeofday(&start);
> +	start = ktime_get();
>   	poll_initwait(&table);
>   	while (1) {
>   		long elapsed;
> @@ -134,9 +135,8 @@ static void serial2002_tty_read_poll_wait(struct file *f, int timeout)
>   			    POLLHUP | POLLERR)) {
>   			break;
>   		}
> -		do_gettimeofday(&now);
> -		elapsed = 1000000 * (now.tv_sec - start.tv_sec) +
> -			  now.tv_usec - start.tv_usec;
> +		now = ktime_get();
> +		elapsed = ktime_us_delta(now, start);
>   		if (elapsed > timeout)
>   			break;
>   		set_current_state(TASK_INTERRUPTIBLE);
>

Thanks, and sorry for the email address mix-up earlier!

Reviewed-by: Ian Abbott <abbotti at mev.co.uk>

-- 
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbotti at mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-


More information about the devel mailing list