这是第一次在Linux环境中工作。我需要你的很多帮助。我想在shced_setattr https://elixir.bootlin.com/linux/v4.18/source/kernel/sched/core.c#L4578中添加prink()
SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr,
unsigned int, flags)
{
printk();
struct sched_attr attr;
struct task_struct *p;
int retval;
if (!uattr || pid < 0 || flags)
return -EINVAL;
retval = sched_copy_attr(uattr, &attr);
if (retval)
return retval;
if ((int)attr.sched_policy < 0)
return -EINVAL;
rcu_read_lock();
retval = -ESRCH;
p = find_process_by_pid(pid);
if (p != NULL)
retval = sched_setattr(p, &attr);
rcu_read_unlock();
return retval;
}但我不知道怎么编辑程序。如果有人能给我解释一下为printk()函数编辑linux函数,那就太好了!
发布于 2020-05-12 00:46:39
这完全取决于您尝试使用类似于printf的printk打印的内容。printk文档可在以下位置找到:
https://www.kernel.org/doc/html/latest/core-api/printk-formats.html
这也是来源的一部分:
Documentation/printk-formats.txt
最简单的调用只涉及不带占位符的格式字符串:
printk("sched_setattr called\n");
使用pid打印它将导致:
printk("sched_setattr called: pid: %d\n", pid);
可以使用dmesg读取输出。
printk还支持多个日志级别,但这与入门无关。
https://stackoverflow.com/questions/61734205
复制相似问题