Получить текущее время в секундах в модуле ядра

Каков стандартный способ получить текущее время в секундах (начиная с эпохи) в модуле ядра?

Я видел методы, связанные с получением xtime, которые очень многословны и включают в себя циклы while и блокировки. Должен быть лучший способ.

[Это не дубликат. Я просмотрел предыдущие вопросы о SO. Ответы на многие из них либо не указывают используемую функцию, либо неправильно ссылаются на time.h, что не разрешено в ядре]


person HXCaine    schedule 25.11.2012    source источник
comment
как насчет stackoverflow.com/questions/5077192/   -  person MOHAMED    schedule 25.11.2012


Ответы (1)


Вы можете использовать getnstimeofday для этого.

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

где struct timespec:

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

И да, вам понадобится #include <linux/time.h>.

person cnicutar    schedule 25.11.2012
comment
Мертвая ссылка. Поиск в Google по запросу man getnstimeofday дает несколько результатов. - person Keith Thompson; 07.02.2014
comment
@KeithThompson Изменил ссылку. Спасибо за наводку! - person cnicutar; 07.02.2014
comment
@KeithThompson Я не думаю, что у функций ядра есть официальные страницы руководства. Я нашел несколько страниц для man getnstimeofday, но не хочу давать на них ссылки. Не стесняйтесь редактировать, если вы найдете что-то полезное. - person cnicutar; 07.02.2014
comment
Я скинул ссылку. Ссылка на источник, которая у вас была раньше, не казалась особенно полезной; Я нашел 3 или около того предполагаемых справочных страниц, но мне не понравилось, как они выглядели, и вся соответствующая информация находится в ответе. Конечно, не стесняйтесь редактировать по своему усмотрению. - person Keith Thompson; 07.02.2014
comment
@KeithThompson Я думаю, что удаление ссылки на самом деле разумно, спасибо. - person cnicutar; 07.02.2014