微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

module_init不显示我想要的printk

我正在试图让我的模块显示一个printk 。 我是新来的,所以我可能有一些编程错误。 这是我的模块C文件

#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省略它,所以它完美地编译。 如果有人可以给我一个链接或如何理解它,我将不胜感激。

当我在terminal中使用insmod插入它,然后使用dmesg显示消息时,我通过调用sys_mycall的module_init得到消息,但是我不能添加任何参数,它显示消息,但是它不显示任何firstname或for myid 。

如果标记为RWX,可丢弃部分对内核驱动程序有什么影响?

Windows内核是否可以在用户模式下发生损坏

如何parsing通过/ proc文件传递给内核模块的大量数据?

madvise(___,___,MADV_DONTNEED)是否指示操作系统懒惰地写入磁盘?

对接时自动启动MTK设备(非三星)

从/ proc / stat计算用户,nice,sys,idle,iowait,irq和sirq

修改menuconfig中的内核版本信息

mprotect()类似于Linux内核的function

是否需要在softirq上下文中调用rcu_read_lock

Linux如何记住它的内核堆栈指针?

我认为模块init期望在函数中没有参数的问题,它必须是无效的(你可以用不同的方式添加它们),所以基本上你的函数被当前在堆栈中的垃圾调用,这可能不是什么可能为零,否则你的内核会崩溃。

你想打印什么? 我了解current-> id,但是没有其他的。

你没有指定日志级别,所以我怀疑它被过滤掉了。 将KERN_WARNING贴在您的格式字符串前,并确认它打印出来。 没有日志级别的消息在CONfig_DEFAULT_MESSAGE_LOGLEVEL中从.config文件解释。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐