Отформатируйте ядро ​​task_struct-> start_time в форму час / мин / сек c - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь распечатать pid и время запуска процессов в linux модуле ядра. Однако обычное поле start_time является длинным и должно быть отформатировано. У меня проблемы с форматированием.

Пока у меня есть:

list_for_each(list, &parent->children) {
        task = list_entry(list, struct task_struct, sibling);
        time64_t start = task->start_time;
        struct tm time;
        time64_to_tm(start, 0,  &time);

        printk(KERN_INFO "%d-(%d:%d:%d)", task->pid, time.tm_hour, time.tm_min,  time.tm_sec);
}

В этом формате я три раза звоню sleep 100 & и загружаю модуль с pid bash как параметр.

Вывод:

[ 9608.211443] 6228 // bash pid
[ 9608.211444] 23574-(23:39:49)
[ 9608.211445] 23576-(20:55:25)
[ 9608.211446] 23577-(11:2:19)

Здесь все пиды верны, с ними проблем нет. Моя проблема в форматировании времени. Очевидно, что это не правильные времена.

Мое местное время, когда я запускаю эти команды: 17.55

И я использую ubuntu на тот случай, если вам нужно знать.

...