草庐IT

v4l2_ioctl

全部标签

linux - 一般而言,在 ucLinux 上,ioctl 是否比写入/sys 文件系统更快?

我有一个正在使用的嵌入式系统,它目前使用sysfs来控制某些功能。但是,如果可能的话,我们希望加快某些功能。我发现这个子系统也支持ioctl接口(interface),但在重写代码之前,我决定搜索一下一般来说哪个接口(interface)(在ucLinux上)更快:sysfs或ioctl。是否有人充分了解这两种实现方式,以便让我大致了解每种实现方式的开销差异?我正在寻找通用信息,例如“ioctl更快,因为您已经从函数调用中删除了文件层”。或者“它们大致相同,因为sysfs有一个非常简单的界面”。2013年10月24日更新:我目前做的具体案例如下:intfd=open("/sys/pow

linux - create/dev/fakeDevice 支持读、写和ioctl

我有一个在嵌入式设备(x86,最近的linux)上运行的软件。为了简化开发、使用自动化测试等,我想在我的主机系统上运行它。通过对构建系统进行一些调整,代码编译得很好。下一步将是创建“虚拟设备”。该应用程序不使用任何类型的库,而是通过读取、写入和ioctl调用直接与多个设备通信。这些设备代表具有自定义协议(protocol)的自定义硬件。要创建虚拟环境,我需要响应此调用。一种可能的方法是:为每个需要的设备创build备驱动程序(/dev/deviceA,/dev/deviceB,/dev/deviceC,...)创建另一个设备驱动程序与用户空间通信(例如,/dev/deviceSimul

linux - create/dev/fakeDevice 支持读、写和ioctl

我有一个在嵌入式设备(x86,最近的linux)上运行的软件。为了简化开发、使用自动化测试等,我想在我的主机系统上运行它。通过对构建系统进行一些调整,代码编译得很好。下一步将是创建“虚拟设备”。该应用程序不使用任何类型的库,而是通过读取、写入和ioctl调用直接与多个设备通信。这些设备代表具有自定义协议(protocol)的自定义硬件。要创建虚拟环境,我需要响应此调用。一种可能的方法是:为每个需要的设备创build备驱动程序(/dev/deviceA,/dev/deviceB,/dev/deviceC,...)创建另一个设备驱动程序与用户空间通信(例如,/dev/deviceSimul

linux - ioctl参数(如0x1268/BLKSSZGET)实际指定在哪里?

我正在寻找描述ioctl0x1268(BLKSSZGET)的预期参数和行为的明确规范。这个数字在很多地方都有声明(没有一个包含明确的引用来源),例如linux/fs.h,但我找不到它的规范。当然,过去某个时候有人决定0x1268将获取设备的物理扇区大小,并将其记录在某处。这些信息从何而来,我在哪里可以找到它?编辑:我不是在问BLKSSZGET通常做什么,也不是在问它在什么标题中定义。我正在寻找一个确定的、标准化的来源,说明它应该采用什么参数类型以及它的行为应该是什么任何实现它的驱动程序。具体来说,我问是因为在util-linux2.23(和2.24)的blkdiscard中似乎存在一个

linux - ioctl参数(如0x1268/BLKSSZGET)实际指定在哪里?

我正在寻找描述ioctl0x1268(BLKSSZGET)的预期参数和行为的明确规范。这个数字在很多地方都有声明(没有一个包含明确的引用来源),例如linux/fs.h,但我找不到它的规范。当然,过去某个时候有人决定0x1268将获取设备的物理扇区大小,并将其记录在某处。这些信息从何而来,我在哪里可以找到它?编辑:我不是在问BLKSSZGET通常做什么,也不是在问它在什么标题中定义。我正在寻找一个确定的、标准化的来源,说明它应该采用什么参数类型以及它的行为应该是什么任何实现它的驱动程序。具体来说,我问是因为在util-linux2.23(和2.24)的blkdiscard中似乎存在一个

linux - 我需要一个 TCP 选项 (ioctl) 来立即发送数据

我有一个不寻常的情况:我在嵌入式环境中使用Linux系统(Intel盒子,目前使用2.6.20内核。)它必须与一个TCP实现部分损坏的嵌入式系统通信.据我所知,他们现在希望我们发送的每条消息都来自一个单独的以太网帧!当消息跨以太网帧拆分时,它们似乎有问题。我们和设备在本地网络上,我们之间没有路由器(只有一个交换机)。当然,我们正在努力迫使他们修复他们的系统,但这最终可能不可行。我已经在我的套接字上设置了TCP_NODELAY(我连接到它们),但这只有在我不尝试一次发送多个消息时才有用。如果我连续有几条传出消息,这些消息往往会以一个或两个以太网帧结束,这会给另一个系统带来麻烦。我通常可以

linux - 我需要一个 TCP 选项 (ioctl) 来立即发送数据

我有一个不寻常的情况:我在嵌入式环境中使用Linux系统(Intel盒子,目前使用2.6.20内核。)它必须与一个TCP实现部分损坏的嵌入式系统通信.据我所知,他们现在希望我们发送的每条消息都来自一个单独的以太网帧!当消息跨以太网帧拆分时,它们似乎有问题。我们和设备在本地网络上,我们之间没有路由器(只有一个交换机)。当然,我们正在努力迫使他们修复他们的系统,但这最终可能不可行。我已经在我的套接字上设置了TCP_NODELAY(我连接到它们),但这只有在我不尝试一次发送多个消息时才有用。如果我连续有几条传出消息,这些消息往往会以一个或两个以太网帧结束,这会给另一个系统带来麻烦。我通常可以

linux - ioctls 如何知道在 linux 中调用哪个函数?

因此,当我使用一个ioctl编号在设备上调用ioctl时,它如何知道要调用哪个函数? 最佳答案 ioctl(2)通过fs/ioctl.c函数进入:SYSCALL_DEFINE3(ioctl,unsignedint,fd,unsignedint,cmd,unsignedlong,arg){structfile*filp;interror=-EBADF;intfput_needed;filp=fget_light(fd,&fput_needed);if(!filp)gotoout;error=security_file_ioctl(fi

linux - ioctls 如何知道在 linux 中调用哪个函数?

因此,当我使用一个ioctl编号在设备上调用ioctl时,它如何知道要调用哪个函数? 最佳答案 ioctl(2)通过fs/ioctl.c函数进入:SYSCALL_DEFINE3(ioctl,unsignedint,fd,unsignedint,cmd,unsignedlong,arg){structfile*filp;interror=-EBADF;intfput_needed;filp=fget_light(fd,&fput_needed);if(!filp)gotoout;error=security_file_ioctl(fi

linux - USBDEVFS_RESET 与 IOCTL_USB_RESET

我似乎在USB堆栈上的不同抽象之间纠结。IOCTL_USB_RESET和USBDEVFS_RESET对USB设备触发有什么区别?这两个调用最终会在界面上触发相同的低级别操作,还是有区别?我注意到USBDEVFS_RESET有时被描述为“相当于重新插入和重新枚举设备”,而我自己发现触发IOCTL_USB_RESET(正如libusb的usb_reset()调用)确实触发了dmesg中的重置消息,但没有新的“枚举”,我猜这会导致通常的多行USB检测和识别消息。由于IOCTL_USB_RESET无法解决我的问题(卡住USB设备),甚至不会触发重新枚举,USBDEVFS_RESET是否有机会做