Linux 如何使用printk()?
这是第一次在Linux环境中工作。 我需要你的很多帮助。 我想在shced_setattr中添加prink()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
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;
}