如何使用printk()?



这是第一次在Linux环境中工作。 我需要你的很多帮助。 我想在shced_setattr中添加 prink(( https://elixir.bootlin.com/linux/v4.18/source/kernel/sched/core.c#L4578

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 函数,那就太好了!

这完全取决于您尝试使用printk打印的内容,这类似于printfprintk文档可在以下位置找到:

https://www.kernel.org/doc/html/latest/core-api/printk-formats.html

它也是来源的一部分:

Documentation/printk-formats.txt

最简单的调用只涉及没有占位符的格式字符串:

printk("sched_setattr calledn");

使用pid打印将导致:

printk("sched_setattr called: pid: %dn", pid);

可以使用dmesg读取输出。

printk还支持多个日志级别,但这应该与入门无关。

相关内容

  • 没有找到相关文章

最新更新