Linux 如何使用printk()?

Linux 如何使用printk()?,linux,printk,Linux,Printk,这是第一次在Linux环境中工作。 我需要你的很多帮助。 我想在shced_setattr中添加prink() SYSCALL\u DEFINE3(sched\u setattr、pid\u t、pid、struct sched\u attr\u user*、uattr、, 无符号整数,标志) { printk(); 结构sched_attr attr; 结构任务_struct*p; 内部检索; 如果(!uattr | | pid

这是第一次在Linux环境中工作。 我需要你的很多帮助。 我想在shced_setattr中添加prink()

SYSCALL\u DEFINE3(sched\u setattr、pid\u t、pid、struct sched\u attr\u user*、uattr、,
无符号整数,标志)
{
printk();
结构sched_attr attr;
结构任务_struct*p;
内部检索;
如果(!uattr | | pid<0 | |标志)
返回-艾因瓦尔;
retval=计划副本属性(uattr和属性);
如果(返回)
返回返回;
如果((int)attr.sched_策略<0)
返回-艾因瓦尔;
rcu_读取_锁定();
retval=-ESRCH;
p=通过pid(pid)查找流程;
如果(p!=NULL)
retval=sched_setattr(p和attr);
rcu_读取_解锁();
返回返回;
}
但我不知道如何编辑程序。
如果有人能解释我为printk()函数编辑linux函数,那就太好了

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

这也是来源的一部分:

Documentation/printk formats.txt

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

printk(“调用sched_setattr\n”)

使用
pid
打印将导致:

printk(“sched_setattr调用:pid:%d\n”,pid)

可以使用
dmesg
读取输出


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

它的工作原理(大部分)与
printf
一样-您有什么具体问题吗?您想打印什么?谢谢您的回答!!但我也想知道如何在shced_setattr()中添加printk()函数,您能详细说明一下吗?您遇到的技术问题是什么?
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;
}