社区
Linux_Kernel
帖子详情
ioctl 驱动代码里加打印信息,工作不正常
hhll26
2010-09-27 01:51:49
有个wifi的驱动,在ioctl的代码里,加了一句打印,
printk("tbm WLAN_CMD_BSS_SCAN..begin \n");
后,驱动就不能正常工作,不会出错,但是搜索不到无线网络了,去掉这句,马上就可以搜索到了。
请问,可能是什么原因呢?
...全文
204
12
打赏
收藏
ioctl 驱动代码里加打印信息,工作不正常
有个wifi的驱动,在ioctl的代码里,加了一句打印, printk("tbm WLAN_CMD_BSS_SCAN..begin \n"); 后,驱动就不能正常工作,不会出错,但是搜索不到无线网络了,去掉这句,马上就可以搜索到了。 请问,可能是什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
deep_pro
2010-09-29
打赏
举报
回复
会用source insight这样的工具是非常必要的
hhll26
2010-09-29
打赏
举报
回复
内核中struct device 和struct net_device 都是很常见很重要的数据结构
具体的结构是什么,到哪里可以查到?linux/netdevice.h中吗?
hhll26
2010-09-29
打赏
举报
回复
#define net_device device
----------------------
不知道你在哪看到的,内核中struct device 和struct net_device 都是很常见很重要的数据结构,他们不可能相同
这个是驱动代码里的。
把你的目标板上的镜像先导入pc,挂载成nfs调试
请问,怎么把目标板上的镜像导入pc?
deep_pro
2010-09-29
打赏
举报
回复
不能把整个nfs下的东西制作成镜像烧进目标板,因为目标板装不下那么多。
---------------
那用nfs就没什么意义 还不如把你的目标板上的镜像先导入pc,挂载成nfs调试
如果我想把struct __device_info里的dev的一些值打印出来看,怎么做呢?
-----------------
printk啊 ,这个有什么问题?
#define net_device device
----------------------
不知道你在哪看到的,内核中struct device 和struct net_device 都是很常见很重要的数据结构,他们不可能相同
hhll26
2010-09-29
打赏
举报
回复
不能把整个nfs下的东西制作成镜像烧进目标板,因为目标板装不下那么多。
比如,目标板上就必须用busybox,而nfs下不是的。
刚刚看了一下驱动的代码,有个问题,不明白,请教大家,在代码里,定义了
typedef struct __device_info {
// netdev
struct usb_device* usb;
struct net_device* dev;
struct net_device_stats stats;
...
而这里的net_device,确是宏定义为
#define net_device device
如果我想把struct __device_info里的dev的一些值打印出来看,怎么做呢?
宏定义里的device,是什么?
deep_pro
2010-09-29
打赏
举报
回复
就是nfs下和目标板上,文件系统不是完全一样的。但是没有办法做到完全一样
-------------------
为什么没办法呢 ,一般都是nfs测试好了就把nfs制作成镜像烧进目标板啊
hhll26
2010-09-29
打赏
举报
回复
奇怪的问题,困扰了很久,就是wifi的驱动,nfs下工作正常,下载到目标板上,就不正常了。
并不报错,在nfs挂载方式下,可以搜索到无线网络,下载到目标板后,就搜索不到了。
kernel是一样的,就是nfs下和目标板上,文件系统不是完全一样的。但是没有办法做到完全一样。
另外,文件系统东西太多,不知道怎么查起?
hhll26
2010-09-29
打赏
举报
回复
如果怀疑这里在nfs和目标板上有差异,导致问题,请问,可以查哪些东西?
比如,insmod加载了wifi模块后,ifconfig eth1 up命令后,可以查哪些地方,来看是否正常?
deep_pro
2010-09-27
打赏
举报
回复
把printk 换个延时试试呢
其实加打印信息是为了调试。我这个驱动有个怪问题,在nfs挂载下,可以正常工作,可以搜索到无线网络。但是下载到目标板后,就搜索不到了,因此想加打印信息找找原因。
------------------------------
我也遇到过类似现象,最后发现在nfs里设置的/etc/hostname 在烧写后不起作用,只得手动执行hostname修改
所以nfs也不能全信啊
pottichu
2010-09-27
打赏
举报
回复
从 ioctl 的上下文来看, 加个打印信息应该是不会有问题的。
hhll26
2010-09-27
打赏
举报
回复
其实加打印信息是为了调试。我这个驱动有个怪问题,在nfs挂载下,可以正常工作,可以搜索到无线网络。但是下载到目标板后,就搜索不到了,因此想加打印信息找找原因。
丰满
2010-09-27
打赏
举报
回复
打印影响的哦,不要打印算了
ioctl
调用不执行问题的解决
在
驱动
开发中,
ioctl
是很常用的应用层与内核通信的接口,今天调试过程中遇到一个
ioctl
调用不执行的问题,有点意思,写篇博客记录一下。 对于网络设备,内核通过宏SIOCDEVPRIVATE给各个设备预留了一组私有
ioctl
命令,
驱动
可以自行定义响应函数来执行相应的操作。今天接到一个需求,要在
驱动
里添加一个清空用户统计信息的功能,于是相应的就需要增加一个
ioctl
命令供应用层调用。看了
驱动
代
学习
驱动
开发的步骤
1.会写简单的Makefile,编写一个简单的应用程序,再写一个Makefile,让它能正常编译。Makefile主要目的就是用来管理编译庞大的
代码
文件。 2.了解Linux内核的目录结构,尤其要熟悉kernel目录下的driver目录组织结构,这里一般存放内核中的
驱动
程序。 3.学会配置、编译Linux内核。 4.写一简单char
驱动
,Makefile编译通过,可以insmod,
学习linux设备
驱动
的基本步骤
1.首先需要对C语言编程非常熟悉,这是在Linux下编程的基本条件。 2.会写简单的Makefile,编写一个简单的应用程序,再写一个Makefile,让它能正常编译。Makefile主要目的就是用来管理编译庞大的
代码
文件。 3.了解Linux内核的目录结构,尤其要熟悉kernel目录下的driver目录组织结构,这里一般存放内核中的
驱动
程序。 4.学会配置、编译Linux内核。
Linux
驱动
开发学习基本步骤
1.首先需要对C语言编程非常熟悉,这是在Linux下编程的基本条件。
2.会写简单的Makefile,编写一个简单的应用程序,再写一个Makefile,让它能正常编译。Makefile主要目的就是用来管理编译庞大的
代码
文件。
3.了解Linux内核的目录结构,尤其要熟悉kernel目录下的driver目录组织结构,这里一般存放内核中的
驱动
程序。
4.学会配置、编译Linux内核。
5.写一简单char
驱动
,Makefile编译通过,可以insmod
Linux
驱动
开发学习基本步骤+linux下的源
代码
阅读软件Kscope
Linux
驱动
开发学习基本步骤http://hi.baidu.com/guowenmoon/blog/item/ee59fa578ef7aacab645ae0c.html
1.首先需要对C语言编程非常熟悉,这是在Linux 下编程的基本条件。
2.会写简单的Makefile,编写一个简单的应用程序,再写一个Makefile,让它能正常编译。Makefile主要目的就是用来管理编译庞大的
代码
文件。
3.了解Linux内核 的目录结构,尤其要熟悉ker
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章