我知道所有关于为什么不应该从内核读/写文件的讨论,而是如何使用/ proc或netlink来做到这一点.无论如何我想读/写.我也读过" 驾驶我的坚果 - 你应该在内核中做的事情".
但问题是2.6.30不能导出sys_read().相反,它包含在内SYSCALL_DEFINE3.因此,如果我在我的模块中使用它,我会收到以下警告:
WARNING: "sys_read" [xxx.ko] undefined!
WARNING: "sys_open" [xxx.ko] undefined!
Run Code Online (Sandbox Code Playgroud)
显然insmod无法加载模块,因为链接没有正确发生.
问题:
sys_read()/ sys_open()不导出)?SYSCALL_DEFINEn()内核中包含宏的系统调用?是否有类似sprintf()Linux内核的功能(如printf()- > printk())?
我刚开始学习内核开发并且有一点疑问.为什么我们不能在将它与c库链接后在内核开发中使用c函数?为什么内核永远不会与ac库链接,而是有自己的一些标准c函数的实现,printk()而不是printf().如果内核是用c编写的并且在ac编译器的帮助下编译的话,为什么我们不能使用c库中的标准函数呢?