Get current time in seconds in kernel module

HXCaine picture HXCaine · Nov 25, 2012 · Viewed 23.2k times · Source

What is the standard way to get the current time in seconds (since the epoch) in a kernel module?

I have seen techniques involving getting xtime which are very long-winded and involve while-loops and locks. There must be a better way.

[This is not a duplicate. I have looked through previous questions on SO. The answers to many of these either don't specify the function used, or incorrectly refer to time.h which is not allowed in the kernel]

Answer

cnicutar picture cnicutar · Nov 25, 2012

You can use getnstimeofday for that.

/* getnstimeofday - Returns the time of day in a timespec */
void getnstimeofday(struct timespec *ts)

where struct timespec is:

struct timespec {
    time_t  tv_sec;     /* seconds */
    long    tv_nsec;    /* nanoseconds */
};

And yes, you'll need #include <linux/time.h>.