This patch replaces timeval with timespec64 as 32 bit 'struct timeval' will not give current time beyond 2038.
The patch changes the code to use ktime_get_real_ts64() which returns a 'struct timespec64' instead of do_gettimeofday() which returns a 'struct timeval'
This patch also alters the format strings in sprintf() for now.tv_sec and now.tv_nsec to incorporate 'long long' on 32 bit architectures and leading zeroes respectively.
Signed-off-by: Amitoj Kaur Chawla amitoj1606@gmail.com Reviewed-by: Arnd Bergmann arnd@arndb.de --- Changes in v2: -change format string of now.tv_sec to '%llu' -change format string of now.tv_nsec to '%.08lu' Changes in v3: -Replace tv_usec with tv_nsec, error made in v2 -Build tested
drivers/misc/ibmasm/ibmasm.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/misc/ibmasm/ibmasm.h b/drivers/misc/ibmasm/ibmasm.h index 9b08344..82380ae 100644 --- a/drivers/misc/ibmasm/ibmasm.h +++ b/drivers/misc/ibmasm/ibmasm.h @@ -34,6 +34,7 @@ #include <linux/kref.h> #include <linux/device.h> #include <linux/input.h> +#include <linux/time64.h>
/* Driver identification */ #define DRIVER_NAME "ibmasm" @@ -53,9 +54,10 @@ extern int ibmasm_debug;
static inline char *get_timestamp(char *buf) { - struct timeval now; - do_gettimeofday(&now); - sprintf(buf, "%lu.%lu", now.tv_sec, now.tv_usec); + struct timespec64 now; + ktime_get_real_ts64(&now); + sprintf(buf, "%llu.%.08lu", (long long)now.tv_sec, + now.tv_nsec / NSEC_PER_USEC); return buf; }
On Fri, Oct 23, 2015 at 08:37:49PM +0530, Amitoj Kaur Chawla wrote:
This patch replaces timeval with timespec64 as 32 bit 'struct timeval' will not give current time beyond 2038.
The patch changes the code to use ktime_get_real_ts64() which returns a 'struct timespec64' instead of do_gettimeofday() which returns a 'struct timeval'
This patch also alters the format strings in sprintf() for now.tv_sec and now.tv_nsec to incorporate 'long long' on 32 bit architectures and leading zeroes respectively.
Signed-off-by: Amitoj Kaur Chawla amitoj1606@gmail.com Reviewed-by: Arnd Bergmann arnd@arndb.de
Changes in v2: -change format string of now.tv_sec to '%llu' -change format string of now.tv_nsec to '%.08lu' Changes in v3: -Replace tv_usec with tv_nsec, error made in v2 -Build tested
drivers/misc/ibmasm/ibmasm.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/misc/ibmasm/ibmasm.h b/drivers/misc/ibmasm/ibmasm.h index 9b08344..82380ae 100644 --- a/drivers/misc/ibmasm/ibmasm.h +++ b/drivers/misc/ibmasm/ibmasm.h @@ -34,6 +34,7 @@ #include <linux/kref.h> #include <linux/device.h> #include <linux/input.h> +#include <linux/time64.h> /* Driver identification */ #define DRIVER_NAME "ibmasm" @@ -53,9 +54,10 @@ extern int ibmasm_debug; static inline char *get_timestamp(char *buf) {
- struct timeval now;
- do_gettimeofday(&now);
- sprintf(buf, "%lu.%lu", now.tv_sec, now.tv_usec);
- struct timespec64 now;
- ktime_get_real_ts64(&now);
- sprintf(buf, "%llu.%.08lu", (long long)now.tv_sec,
return buf;now.tv_nsec / NSEC_PER_USEC);
}
Always run your patches through checkpatch so that a maintainer doesn't have to be grumpy and tell you to fix up the obvious checkpatch issues in it...
thanks,
greg k-h