问题标签 [ioctl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7386 浏览

linux - Linux:ioctl/FIONREAD 返回 /dev/random 中可用的 0 个字节?

在打开 /dev/random 的文件描述符fd和其他健全性检查后,我试图读取设备可以读取的字节数,因此如果我的程序需要,我可以提取这个数量。

我的基本代码是这样的:

无论在何种情况下(如果需要,作为 root 或普通用户)它总是返回 0 个字节可供读取。

之前有人建议我这是一种检索我可以从设备中取出的内容的方法,你知道我的程序中可能出现的问题或故障导致它总是返回零吗?你知道任何其他方法来做我想做的事吗?

0 投票
2 回答
498 浏览

winapi - IOCTL_MOUNTDEV_QUERY_UNIQUE_ID 的唯一性

上的文档IOCTL_MOUNTDEV_QUERY_UNIQUE_ID有点令人困惑......到底应该在结构中返回什么MOUNTDEV_UNIQUE_ID样的 ID ?

的文档

说:

UniqueIdLength

  • 包含唯一卷 ID 的长度。

UniqueId

  • 包含唯一的卷 ID。唯一卷名的格式是"\??\Volume{GUID}\",其中 GUID 是标识卷的全局唯一标识符。

但是,这里有些奇怪: 的确切格式应该是什么UniqueId?如果它的意思是采用\??\Volume{GUID}\格式,那么该UniqueIdLength字段的意义何在——它们的大小不都一样吗?否则,设备 ID 需要采用什么格式?

此外,这是设备ID 还是ID?换句话说,这应该是每个介质(例如 CD)还是每个设备(CD 驱动器)都是唯一的?

0 投票
2 回答
16169 浏览

ubuntu-10.04 - 在内核模式和用户模式之间使用ioctl通信

我想使用 ioctl 与我的内核模块进行通信。我已经编写了两个 c 程序,一个用于内核模块,另一个用于用户模式。编译内核模块时出现此错误:

错误:初始化程序中指定的未知字段“ioctl”

在这一行:

知道为什么会这样。

谢谢

0 投票
1 回答
17873 浏览

c - 用户模式权限被拒绝绑定到套接字

在 linux 机器上的用户模式 ​​[non-root] 中,我正在尝试使用ioctl(iInterfaceSocket, SIOCSIFADDR, &stCommand). 我越来越error 13 -> Permission denied because of user mode。如果从用户模式更改为内核模式,一切正常。

我只需要在用户模式下绑定套接字。请在解释上述问题时提出解决方案。如果我错过了任何信息,请告诉我,我会提供更多信息。

0 投票
2 回答
11903 浏览

linux-kernel - 有人可以帮我替换块设备驱动程序上的“lock_kernel”吗?

谢谢你看这篇文章。我正在尝试修补网络块设备驱动程序。如果您需要查看它们的来源,请访问 http://code.ximeta.com。

我注意到 lock_kernel() 从 linux 2.6.37 开始似乎已被弃用。我阅读了“ioctl() 的新方法”,发现设备驱动程序现在应该在操作之前执行特定的锁定。

因此,如果可能的话,我想要一些建议来代替它。

我在块文件夹部分中找到了我认为相关的当前代码中的两个部分。

我把每个片段的片段供你考虑。

io.c 包含一个对 lock_kernel 的调用:

而 ctrldev.c 包含主要的 io 函数:

后来 ndas_ctrldev_ioctl 函数设置为以前的 .ioctl。

现在我想转换它以避免使用 lock_kernel();

根据我的理解,我将对前面的部分进行如下修改:

所以,我想请教以下建议。

  1. 这看起来像正确的程序吗?

  2. 我是否理解将锁移动到 io 函数中是否正确?

  3. 根据 crtrldev.c 中包含的内容,您能推荐任何您头顶上的锁吗?(我试图研究其他一些处理 filp 和 lock_kernel 的驱动程序,但我太菜鸟了,无法立即找到答案。)

0 投票
1 回答
744 浏览

linux - 除了 strace 还有其他方法可以记录 iotcl 调用吗?

我试图查看当我调用函数时是否调用了某些 ioctl 调用(这是在 linux 上)。没有办法让内核用这种数据写入日志,是吗?

0 投票
2 回答
4418 浏览

c - 为具有多个接口的设备设置 MTU

我在用

ioctl(s, SIOCSIFMTU, (caddr_t)&ifr)

更改接口的 MTU。

代码与此类似

我的问题是设备有多个接口,并且所有这些的 MTU 都设置为 1492。我只想专门为一个接口做这件事,而其他所有接口都不受影响。我该怎么做?

bond1:43 Link encap:Ethernet HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.59 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Metric:1

bond1:48 Link encap:Ethernet HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.60 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Metric:1

bond1:49 Link encap:Ethernet HWaddr 00:0E:0C:E4:C5:45
inet addr:10.7.181.61 Bcast:10.7.181.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU: 1492 Metric:1

0 投票
1 回答
1018 浏览

linux-kernel - pppd 卡在拨号过程中

我正在将几个 USB 调制解调器连接到我的 Ubuntu:
uname -a
Linux devlp 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux
pppd version: 2.4.5

我正在用 8 个 sierra 无线调制解调器进行测试,它们都已连接并工作。他们每个人都有一个“ppp”界面。
在它们连接后,我试图重新连接 ppp7,起初,pppd 失败,然后在第二次尝试中它到达它说:“串行连接建立”并卡住的地步。我尝试了所有终止信号来终止该 pppd,但没有成功,终止它的唯一方法是拔出它尝试拨号的调制解调器。
我寻找 pppd 卡住的确切位置,它就在这里:

看起来问题出在 ppp7 上——它可以是任何调制解调器,所以我认为这不是调制解调器问题,但我不明白该命令中到底发生了什么?谁负责回答?它只是内核吗?调制解调器驱动程序?调制解调器本身?我不太明白如何处理这些信息,因为 PPPIOCGCHAN 文档很差..

起初我以为 pppd 可能在断开连接后没有释放通道或 ppp,所以我编译了我自己的 pppd 版本并添加了 PPPIOCDISCONN 和 PPPIOCDETACH 只是为了确保我的版本很好,结果是一样的。
你认为呢?

0 投票
4 回答
57600 浏览

c - Linux - 带有 FIONREAD 的 ioctl 始终为 0

我想知道我的 TCP 套接字上有多少字节是可读的。我用标志“FIONREAD”调用ioctl,它实际上应该给我这个值。当我调用该函数时,我得到了 return val 0(所以没有 Error),但我的整数参数也得到了值 0。这没问题,但是当我调用 recv() 方法时,我实际上从套接字中读取了一些字节。我究竟做错了什么?

// 这里有一些代码:

当我调用 recv 函数时,我确实读取了一些有效的数据(这是我所期望的)

0 投票
2 回答
7392 浏览

android - Android ioctl - root 权限和使用

我正在开发 Android 应用程序中的一些路由功能,并且需要访问 ioctls。由于使用 ioctls 的应用程序需要 root 权限才能运行,所以我能够调用它们的唯一方法是链接一个单独的可执行文件并从 Java 调用它Runtime.getRuntime().exec()

有没有办法在不构建单独的可执行文件的情况下从 Android 中的 JNI 访问 root 权限?构建可执行文件是访问 ioctl 的最佳方法吗?