Глядя прямо на исходный код ядра, вы можете просматривать задачи, подобные приведенным ниже.
struct task_struct *process, *thread;
int cnt = 0;
rcu_read_lock();
for_each_process_thread(process, thread) {
task_lock(thread);
/* do something with the task properties:
thread->state;
thread->wake_cpu;
thread->pid;
thread->comm;
*/
task_unlock(thread);
cnt++;
}
rcu_read_unlock();
Самая важная часть - заблокировать задачи RCU при входе и разблокировать при выходе. Вы запрограммируете этот дамп в модуле ядра и предоставите среднее для получения списка в команде пользовательского пространства.
Я предлагаю вам прочитать и улучшить мой пример в GitHub @ dumptask