Я пытаюсь скомпилировать программу для линейного вывода списка задач, чтобы при запуске команды 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, но каждый вызов этого, который я видел, не имел следующей точки с запятой.Любой совет по поводу этих ошибок будет принята с благодарностью