gpt4 book ai didi

c - #ifdef KERNEL2x & file_operations(..,..,..,..) , ssize_t 函数,printk()

转载 作者:行者123 更新时间:2023-11-30 16:03:04 26 4
gpt4 key购买 nike

您好,我有几个问题。如果有人能回答我会很高兴:)我正在尝试为 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 文件操作预计会返回读取的字节数,但如果内存不足,您可以返回 -ENOMEMerrno 将在用户空间程序中进行适当设置。

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

关于c - #ifdef KERNEL2x & file_operations(..,..,..,..) , ssize_t 函数,printk(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com