问题标签 [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.
linux - 为什么linux用户空间和内核空间存在代码运行速度差异?
当我在 linux 用户空间和内核空间运行一些简单的 while 循环代码并测量经过的时间时,我可以得到差异。
测试代码是访问 Arm Cortex SoC 芯片中的一些硬件寄存器。
结果是
用户层:52002.16 ms
内核层:32650.53 ms
内核层比用户层快 1.6 倍。
c++ - ioctl 阻止操作
我正在使用ioctl函数访问framebuffer
问题是对于每一帧,我都写了三次framebuffer
例如,每一帧,我先用红色填充帧,做一些计算,填充绿色,然后再做一个计算,然后填充蓝色的。
换句话说,每一帧,我有三层,红色作为底部,绿色,然后蓝色作为顶部。因此,红色和绿色是看不见的,我能看到的只有蓝色。
现在,我的问题是,当我使用 ioctl 调用时,它似乎无法识别红色和绿色,而只能识别蓝色。
对于每一帧,我做了类似的事情:
我的 getFrameBuffer() 类似于:
到目前为止,当我调用 getFrameBuffer() 时,它返回所有蓝色。是否有可能阻止写入帧缓冲区或类似的东西,以便当我调用 getFrameBuffer() 时,我得到红色?
c++ - 临时锁定帧缓冲区
我之前在 ioctl 中问过类似的问题来阻止操作。
更笼统地说,我想知道如何阻止覆盖帧缓冲区。
我的帧缓冲区由 3 层组成,我想访问
我使用系统/硬件调用 ioctl 函数的最底层的帧缓冲区,以直接从硬件获取帧缓冲区。
这与opencv无关。我尝试了其他方法,到目前为止,它仍然以相同的方式工作。它基本上将帧缓冲区返回为整个蓝色,但我希望它是红色的。这是否意味着我应该在调用 Red() 之前锁定并在 getFrameBuffer() 之后解锁?无论如何我会阻止写入帧缓冲区,直到我得到数据?
编辑:在 ioctl 方法之前,在 getFrameBuffer() 中,我使用了glReadPixels,它工作正常。它返回红色。但它太慢了,我希望使用 ioctl 调用来提高速度。在我的 getFrameBuffer 中,我有类似的东西:
c - char 设备捕获多个 (int) ioctl 参数
我必须编写一个 linux char 设备,它处理每个 unlock_ioctl 的 ioctl(没有 BKL)函数。目前我可以从用户空间 ioctl 命令中接收一个参数
如何接收多个 int 参数(例如此调用)?:
linux - 将新的 IOCTL 添加到内核中(数字范围)
我正在编写新的内核模块并添加实现新的 IOCTL。
IOCTL 的编号有什么我应该遵循的规则吗?
也许有一些“用户范围”?
我在嵌入式平台上使用内核 2.6.21。
c - 如何判断wlan usb设备使用的是哪个驱动
简短:是否有一种 posix 方法来检查某些 USB 设备使用什么驱动程序,例如使用ioctl()
?
现在,为什么我需要它:
我有一个从 iwlist 派生并使用 iwlib 的 wlan 扫描应用程序(专用于使用 USB wlan 加密狗的设备)。
简而言之,它所做的是使用以下内容初始化扫描:
而不是等待存储的结果,wrq.u.data.pointer
然后使用iw_extract_event_stream
它将数据struct iw_event iwe
标记为包含有关检测到的网络信息的标记进行解析。
这是背景,现在我真正的问题开始了。为了获得信号质量,我们需要找到标记为的标记IWEVQUAL
,然后从中读取值iwe.u.qual.qual
。不幸的是,对于某些驱动程序和系统架构,这个值总是错误的。因为由于某些原因我不能/不想更改驱动程序,所以我不得不实施一些使用信号电平计算信号质量的解决方法:
如您所见,这是一种非常肮脏的方式,基于许多任意假设,因此最好尽可能使用原始值iwe.u.qual.qual
。因此,我想检查当前插入的设备使用的驱动程序是否可以使用标准方式,或者我应该使用上面描述的 hocus pocus。
c - 所有接口的 C/C++ Linux MAC 地址
我正在使用以下代码检索当前计算机的所有 MAC 地址:
通过运行简单的 shell 命令 ifconfig 我可以看到 lo、eth0 和 wlan0。我想通过我的 C/C++ 代码检索 eth0 和 wlan0 的 MAC 地址。但只返回 wlan0 - 缺少 eth0(我得到了 ifr_names lo、lo、wlan0)。可能是因为 eth0 未激活(未连接以太网电缆,使用电缆返回)。我是否可以以某种方式更改该 ioctl(SIOCGIFCONF) 命令以检索 eth0,即使它已“关闭”?
我可以直接使用它来获取它的硬件地址
但是如果名称不是 eth0 而是其他名称(eth1、em0、...)怎么办?我想得到所有这些。感谢帮助。
linux - 关于 ioctl 函数的执行,在 64 位操作系统上以 32 位模式编译和 64 位模式编译有什么不同?
我有一个 64 位 Enterprice SuSE 11 我有一个应用程序,它打开一个 HIDRAW 设备并在其上运行 ioctl 函数以从该设备获取原始信息,如下所示:
如果我在 64 位模式下编译这个程序,没有错误也没有问题,当我执行应用程序时,ioctl 函数可以正常工作。
如果我在 32 位模式下编译这个程序也没有错误也没有问题。但是当我执行应用程序时,ioctl 函数返回 EINVAL 错误(errno = 22,无效参数)
有什么问题?
笔记:
c - OSX 获取 CD 速度 (ioctl)
我正在分发使用光盘的软件,并且在默认全速下它太嘈杂而无法接受。我的目标是使用 ioctl 降低磁盘的速度,但我不知道如何从 /Volumes/MyDisk/Application 中找到 /dev/disk(n)。
以下是我到目前为止所拥有的,但我不希望磁盘路径硬编码。
visual-c++ - ERROR_INVALID_HANDLE
我正在尝试使用 mpusbapi.h 中定义的以下函数
当我在我的 test.cpp 中使用这些时,它看起来像;
控制台输出为:
MPUSBWrite 返回 0 表示写函数失败。错误代码 6 对应于 ERROR_INVALID_HANDLE:句柄无效。
有谁知道为什么?我有一种预感,pipeName
但不知道如何检查/解决这个问题。