Мне нужно создать 2 новых системных вызова для установки и получения свойства из процесса данным pid. Я изменил task_struct, добавил int z_value (это то, что мне нужно установить/получить)Мой системный вызов не работает должным образом
Мне также удалось установить значение по умолчанию z_value (200) для каждого созданного процесса.
Когда я запустил системный вызов, я вижу корректное значение z_value по умолчанию. Но когда я пытаюсь установить z_value, ничего не происходит.
Нет Компиляция ошибок, сегментация не придираться и т.д.
Вот мой набор системных вызовов.
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/uaccess.h>
asmlinkage void sys_set_z_value (int user_value , pid_t pid)
{
rcu_read_lock();
struct task_struct *p = find_task_by_vpid(pid);
p->z_value = user_value;
rcu_read_unlock();
}
Не можете ли вы расширить существующий вызов, например prctl? Альтернативно, напишите char-устройство с некоторыми ioctls, которые выполняют функцию? – MarkR