Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get current time in seconds in kernel module

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]

like image 487
HXCaine Avatar asked Nov 25 '12 15:11

HXCaine


1 Answers

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>.

like image 198
cnicutar Avatar answered Oct 22 '22 05:10

cnicutar