zoran: Use monotonic time
Subsystems (2)
PATCH 1/1 zoran: Use monotonic time
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 <[email protected]>
--- drivers/media/pci/zoran/zoran_device.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-)
drivers/media/pci/zoran/zoran_device.c +5 -13
@@ -31,6 +31,7 @@#include <linux/kernel.h> #include <linux/module.h> #include <linux/vmalloc.h> +#include <linux/ktime.h> #include <linux/interrupt.h> #include <linux/proc_fs.h>
@@ -181,20 +182,11 @@ dump_guests (struct zoran *zr) } } -static inline unsigned long -get_time (void ) -{ -struct timeval tv; - -do_gettimeofday (&tv); -return (1000000 * tv.tv_sec + tv.tv_usec); -} -void detect_guest_activity (struct zoran *zr) {int timeout, i, j, res, guest[8 ], guest0[8 ], change[8 ][3 ]; -unsigned long t0, t1; +ktime_t t0, t1;dump_guests (zr); printk(KERN_INFO "%s: Detecting guests activity, please wait...\n",
@@ -205,15 +197,15 @@ detect_guest_activity (struct zoran *zr) timeout =0 ; j =0 ; - t0 =get_time (); + t0 =ktime_get ();while (timeout <10000 ) {udelay (10 ); timeout++;for (i =1 ; (i <8 ) && (j <8 ); i++) { res =post_office_read (zr, i,0 );if (res != guest[i]) { - t1 =get_time (); - change[j][0 ] = (t1 - t0); + t1 =ktime_get (); + change[j][0 ] =ktime_to_us (ktime_sub (t1, t0)); t0 = t1; change[j][1 ] = i; change[j][2 ] = res;
Signature · 1 line
1.7.9.5