Я пытаюсь распечатать 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
на тот случай, если вам нужно знать.