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

[复制链接]
查看11 | 回复5 | 2011-3-17 03:42:00 | 显示全部楼层 |阅读模式
我创建了一个字符设备之后,hook内核的ioctl函数,在用户空间调用ioctl发送指令,为啥不能发送超过1024字节的buffer啊?是不是还需要设置什么?
回复

使用道具 举报

千问 | 2011-3-17 03:42:00 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">这个是你自己控制的阿...你的字符设备里面iotcl怎么写的...
iotcl里面已经实现了对若干个命令字的处理,剩下的自定义命令字你需要自己分别处理...

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

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

实在说不清,你就把源码贴出来一部分..
回复

使用道具 举报

千问 | 2011-3-17 03:42:00 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1305867\">老大,你让我无语了,我好急啊,在线等呢
回复

使用道具 举报

千问 | 2011-3-17 03:42:00 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1305932\">我知道你是在线等啊,但是我才玩了没几天就停下了啦,你去那里问,里面高手多
回复

使用道具 举报

千问 | 2011-3-17 03:42:00 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1307939\">不是包的个数问题,是我用ioctl发送的缓冲区大小不能超过1024个字节。例如:
char buff[1030];
ioctl(fd, cmd, buff)
在此情况下,ioctl就返回错误,如果将buff大小改为=1024的话,此函数就能调用成功。

如果要设置此buff的大小该如何设置啊?
回复

使用道具 举报

千问 | 2011-3-17 03:42:00 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1380780\">那就是malloc的空间大小比你设置的大小小了 所以不能超过 超出后造成溢出了...建议你看看内存空间管理吧 我也不太懂,继续学习!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行