的printk的,我试图让我的模块显示printk
。我是新来的,所以我可能会有一些编程错误。这是我的模块的C文件:宏module_init不显示,我希望它
#include <linux/linkage.h>
#include <linux/time.h>
#include <linux/module.h>
asmlinkage long sys_mycall(int myid, char* firstname)
{
printk ("Hello, %s! \n sys_mycall called from process %d with ID %d. \n",
firstname, current->id, myid);
return 0;
}
static int my_init(void)
{
return 0;
}
static int my_exit(void)
{
printk("Goodbye!");
return 0;
}
module_init(sys_mycall);
module_exit(my_exit);
的第一件事是,我不知道该怎么箭头指针正好工作,所以我通常忽略它从printk
所以它编译完美。如果有人可以给我一个链接或如何理解它,我会很感激。
当我将其插入到终端使用insmod
,然后显示使用dmesg
我得到了module_init
调用sys_mycall
但我不能任何参数添加到它并显示该消息的消息的消息,但它并没有显示任何东西对于firstname
或对于myid
。
什么是'current'的类型?为什么不在'sys_mycall'中声明? “pantherid”同样的问题? –
@EitanT我不知道整个'current-> id'如何工作 – randomizertech
'current'指向某种结构,'id'是该结构中的一个字段。 'current-> id'指那个字段。你使用'current-> id'而不是'current.id',因为'current'是一个指针。在继续编码之前,您应该阅读[this](http://www.taranets.net/cgi/ts/1.37/ts.ws.pl?w=329;b=282)。 –