Ошибка модуля ядра после for_each_process в линейном дереве задач - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь скомпилировать программу для линейного вывода списка задач, чтобы при запуске команды ps -el получал такой же или похожий вывод.В моем учебнике написано: «В ядре Linux макрос for_each_process () позволяет легко выполнять итерации по всем текущим задачам в системе:

# include //linux/sched.h//

structtask_struct * task;

for_each_process (task) {

/ * на каждой итерационной задаче указывает на следующую задачу * /

} "

, поэтому яиметь следующее:

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>


int tasks_lister_linear_init(void)
{
  printk(KERN_INFO "Loading module...\n");

  struct task_struct *task;

  for_each_process(task)
  {
    printk(KERN_INFO "pid: %d | pname: %s | state: %ld\n", task->pid, task- 
   >comm, task->state);
  }

  printk(KERN_INFO "Module loaded.\n");
  return 0;
}

void tasks_lister_linear_exit(void)
{
  printk(KERN_INFO "Module removed.\n");
}

module_init(tasks_lister_linear_init);
module_exit(tasks_lister_linear_exit);

и когда я иду, чтобы сделать, я получаю сообщение об ошибке, говорящее, я имел в виду for_each_node, а не for_each_process, а также он ожидает;после for_each_process, но каждый вызов этого, который я видел, не имел следующей точки с запятой.Любой совет по поводу этих ошибок будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...