小弟因工作需要,要写Linux的设备驱动,正学习中,一起没搞过Linux方面的开发,没经验,现碰到一个简单问题,请多多指点

土豆 2003-11-28 11:06:19
我写了一个非常简单的使用proc的小例子mytest.c,希望能在Linux下运行,Linux使最新的Redhat9,下面是源代码:

#ifndef MODULE
#define MODULE
#endif

#include <linux/module.h>
#include <linux/types.h>
#include <linux/proc_fs.h>


int test_read_proc(char *buf, char **start, off_t offset,int count, int *eof, void *data)
{
int len;
len = sprintf(buf,"\nOnly a test\n");
*eof = 1;

return len;
}

int init_module(void)
{
create_proc_read_entry("test2003",
0,
NULL, /* parent dir */
test_read_proc,
NULL /* client data */);
return 0;
}

void cleanup_module(void)
{
remove_proc_entry("test2003", NULL /* parent dir */);
}


可是一编译就出错,而起报的错误报到头文件中了。In file included from mytest.c:7:
/usr/include/linux/proc_fs.h:70: parse error before "atomic_t"
/usr/include/linux/proc_fs.h:72: parse error before "rdev"
/usr/include/linux/proc_fs.h:187: parse error before "kdev_t"
/usr/include/linux/proc_fs.h:203: parse error before "void"

更有甚者,我即使即使一个空的init_module和clearup_module,仅仅包含proc_fs.h也出同样的错误,如下:
#ifndef MODULE
#define MODULE
#endif

#include <linux/module.h>
#include <linux/types.h>
#include <linux/proc_fs.h>

int init_module(void)
{
return 0;
}

void cleanup_module(void)
{
}
请熟悉此道的朋友指点指点,领我进门,分是小事,要多少加多少,我不胜感激。
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CoolQ 2003-11-28
  • 打赏
  • 举报
回复
这种问题都问过不知道多少遍了,你编译Module的话,不能用/usr/include里的头文件,需要使用/usr/src/linux-2.4/include里的头文件,需要用-I来指定路径!
土豆 2003-11-28
  • 打赏
  • 举报
回复
唉,还是不行,其实我原来也定义过__KERNEL__
土豆 2003-11-28
  • 打赏
  • 举报
回复
我试下看
blh 2003-11-28
  • 打赏
  • 举报
回复
你可能没有定义__KERNEL__宏
用下面的命令行编译
gcc -c -D__KERNEL__ -DLINUX -DMODULE -DMODULEVERSION mytest.c
土豆 2003-11-28
  • 打赏
  • 举报
回复
对不起,分给错了,本来是给CoolQ()的,给成bjyjy了
土豆 2003-11-28
  • 打赏
  • 举报
回复
谢谢Cool,老猫,所谓会者不难,难者不会,就这个道理,在你们看来很简单,在我来看就难了,呵呵,总之,不胜感谢。
bjyjy 2003-11-28
  • 打赏
  • 举报
回复
参考LDD,《Linux Device Driver》
内容概要:本文详细介绍了利用二维时域有限差分法(2D FDTD)对光子晶体90度弯曲波导进行数值仿真的Matlab代码实。该仿真方法旨在精确分析光子晶体波导在弯曲结构下的光传输特性,揭示其导光机制与缺陷模式的调控原理。资源包含完整的Matlab程序代码,支持对空间网格划分、介电常数分布、边界条件(如PML吸收边界)及光源参数等关键仿真要素的灵活设置与优化,便于用户复结果并开展深入研究。通过仿真可直观获得光场在波导的传播动态、透射谱特性以及能量损耗情况,为高性能光子器件的设计与优化提供理论依据和技术支持。; 适合人群:具备电磁场理论、光学基础和Matlab编程能力,从事光子学、集成光学或纳米光子器件研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①学习和掌握FDTD方法在周期性介质(光子晶体)器件仿真的具体应用流程;②研究90度弯波导的光传输性能,分析弯曲损耗来源并探索低损耗结构优化方案;③作为光子集成电路关键无源器件的设计与教学参考案例,服务于学术研究与工程实践。; 阅读建议:建议结合光子晶体能带理论与FDTD算法基本原理进行系统学习,运行代码时应逐步调整结构参数与仿真设置,观察光场演化和输出结果的变化,以深化对物理象的理解,并可在此基础上拓展至其他复杂光子结构(如分束器、谐振腔)的仿真分析。
内容概要:本文系统研究了基于共识的捆绑算法(Consensus-Based Bundle Algorithm, CBBA)在多智能体多任务分配的应用,重点聚焦于远程太空船交会与维修任务的相对运动规划(RPO)问题。通过构建多航天器协同任务场景,采用Matlab代码实了CBBA算法的全过程仿真,展示了其在分布式决策框架下高效完成任务分配的能力。研究深入探讨了任务收益建模、路径规划约束、通信延迟与动态重规划等关键环节,验证了CBBA在确保任务分配一致性、避免资源冲突、适应动态环境变化以及优化整体任务效能方面的优越性能,为复杂空间任务的自主协同提供了可靠的技术路径。; 适合人群:具备控制理论、航天动力学、分布式优化或多智能体系统等相关背景,从事航天任务规划、智能优化算法研究或相关工程实践的研究生、科研人员及航空航天领域工程师。; 使用场景及目标:①为多航天器在轨服务(如交会对接、空间维修)提供高效、鲁棒的分布式任务分配解决方案;②深入理解CBBA算法的核心机制及其在高动态、强约束空间任务的适应性与优化潜力;③推动分布式人工智能算法在航天工程实际系统的集成与应用验证。; 阅读建议:建议读者结合提供的Matlab代码,重点剖析任务建模逻辑、收益函数设计、共识迭代过程及收敛性分析模块,通过修改场景参数进行仿真实验,以深化对多智能体协同决策机制与算法性能边界条件的理解。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧