Linux下碰到一个关于ioctl缓冲区的问题

我创建了一个字符设备之后,hook内核的ioctl函数,在用户空间调用ioctl发送指令,为啥不能发送超过1024字节的buffer啊?是不是还需要设置什么?... 我创建了一个字符设备之后,hook内核的ioctl函数,在用户空间调用ioctl发送指令,为啥不能发送超过1024字节的buffer啊?是不是还需要设置什么? 展开
 我来答
6green理工人
2011-03-10 · TA获得超过128个赞
知道小有建树答主
回答量:357
采纳率:0%
帮助的人:183万
展开全部
是不是buffer的长度系统默认是接受100个包的大小,你可以改改大小试试
追问
不是包的个数问题,是我用ioctl发送的缓冲区大小不能超过1024个字节。例如:
char buff[1030];
ioctl(fd, cmd, buff)
在此情况下,ioctl就返回错误,如果将buff大小改为<=1024的话,此函数就能调用成功。

如果要设置此buff的大小该如何设置啊?
追答
那就是malloc的空间大小比你设置的大小小了 所以不能超过 超出后造成溢出了...建议你看看内存空间管理吧 我也不太懂,继续学习!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handsoul
2011-03-11 · TA获得超过955个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:759万
展开全部
这个是你自己控制的阿...你的字符设备里面iotcl怎么写的...
iotcl里面已经实现了对若干个命令字的处理,剩下的自定义命令字你需要自己分别处理...

我不知道你从用户空间拷贝数据到内核用的是copy_to_user还是别的...是不是你自己在内核中申请的用来存数据的缓冲区大小就小于1024了..

具体原因要看你到底怎么写的ioctl函数...你说的hook又是怎么回事.. 我没看明白你意思..

实在说不清,你就把源码贴出来一部分..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mynameiskino
2011-03-10 · TA获得超过417个赞
知道小有建树答主
回答量:787
采纳率:0%
帮助的人:446万
展开全部
哦,大哥,我搞不懂这个,你去那些专业的BBS问吧http://www.linuxsir.org这个不错
追问
老大,你让我无语了,我好急啊,在线等呢
追答
我知道你是在线等啊,但是我才玩了没几天就停下了啦,你去那里问,里面高手多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式