繁体   English   中英

#ifdef KERNEL2x和file_operations(..,..,..,..),ssize_t函数,printk()

[英]#ifdef KERNEL2x & file_operations(..,..,..,..) , ssize_t function,printk()

嗨,我有几个问题。 如果有人会回答我,我会很高兴:)我正在尝试为LCD 16X2模块编译linux驱动程序。 我试图在我的代码中使用struct file_operations(); 1.通过其他代码,我注意到它们添加了#ifdef KERNEL21进行编译。 我试图做到这一点,而我得到的错误却少得多。 为什么以这种方式工作。 即时通讯使用内核2.6.18-128.4.1.el5 ..我是否需要更改为#ifdef KERNEL26? 如果尝试这样做,我会收到更多错误。

2.一些file_operation参数是rtuen ssize_t函数。 这是什么意思? 在其他代码示例中,也存在“ #ifdef KERNEL21”,但仍然出现错误:“ lcd_module.c:74:错误:预期的标识符或ג(גג{ג令牌之前的“”

3.最后一个问题,我处理了一个Makfile示例,但得到的是.o文件,而不是可以用来工作的.ko文件。 如何使用.o文件运行模块?

提前谢谢:)

ssize_t是一个带符号的size_t并在内核中得到广泛使用,因为小于零的值用于在预期无符号大小的地方返回错误。 例如,预计read文件操作将返回读取的字节数,但是如果内存不足,则可以返回-ENOMEM并且将在用户空间程序中适当errno

对于2.6内核,应该使用kernel-headers包中的Makefile而不是手工制作的文件,它会生成.ko文件而不是.o文件。 在此处进一步阅读: http : //www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM