32-битное ядро ​​​​Linux в системе Android: требуется 64-битная временная метка в микросекундах

мне нужно получить значение метки времени в 64 битах в микросекундах в ядре Linux системы Android, которая является 32-битной системой

есть ли прямой вызов экспортированной функции ядра для достижения этой цели?

я видел миги для 64-битных, и есть функция, которая конвертирует 64-битные миги в наносекунды. jiffies_64_to_clock_t();

любой указатель для продвижения вперед будет полезен, чтобы получить 64-битную временную метку в микросекундах.

Спасибо за помощь


person DJM    schedule 25.07.2014    source источник
comment
Что-то вроде gettimeofday?   -  person Some programmer dude    schedule 25.07.2014
comment
Прочитайте time(7) и подумайте об использовании clock_gettime(2)   -  person Basile Starynkevitch    schedule 25.07.2014
comment
gettimeofdate и clock_gettime вернут 32-битный размер, мне нужен 64-битный в микросекундах, в 32-битном ядре Linux.   -  person DJM    schedule 25.07.2014


Ответы (1)


Временные метки ядра указаны в наносекундах. Вы можете использовать getnstimeofday(), ktime_get_ns() или getrawmonotonic(), чтобы получить struct timespec, или ktime_get_real() или ktime_get(), чтобы получить ktime_t; последний может быть преобразован в 64-битный счетчик наносекунд с помощью ktime_to_ns().

person CL.    schedule 25.07.2014
comment
все это дает значения в 32-битном размере переменной, я ищу переменную sixe из 64-битной - person DJM; 27.07.2014
comment
Прочитайте еще раз последнюю часть ответа. - person CL.; 27.07.2014
comment
да, я видел последнюю часть, но, как было сказано, мне нужна временная метка в 64-битной переменной, и это тоже в микросекундах, если я получу ее с помощью nano, после деления на 1000 я потеряю последние 3 цифры, и это уменьшит общее количество, которое я могу сделать с 64-битной переменной, если это было в микросекундах, верно? - person DJM; 01.08.2014
comment
Да, это уменьшит общее количество. Примерно до 500 лет. - person CL.; 01.08.2014
comment
2 ^ 64 = 18446744073709551616 = 7014.6543 months = 584.5545 years 2 ^ 63 = 9223372036854775808 = 3507.3271 months = 292.2772 years 2 ^ 63/1000( to get micro seconds) = 9223372036854775808/1000 = 9223372036854775.808 in micro = 3507.3271 months = 292.2772 years ; я думаю, что я достаточно хорош - person DJM; 01.08.2014