草庐IT

unlocked_ioctl

全部标签

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

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

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 - spin_lock 和 spin_unlock 是否会影响单 cpu 机器上 SMP 内核的性能?

在我的Ubuntu机器上,正在运行的默认内核镜像是为smp(CONFIG_SMP=y)构建的。但是这台机器只有1个cpu。在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数。那么spin_lock()和spin_unlock()在此设置中的行为如何?这种特定于smp的代码是否会对性能产生影响? 最佳答案 当前的Linux内核包含一个补丁,您可以使用术语“SMP替代品”在谷歌上搜索该补丁。简而言之,在引导过程中,如果内核检测到它正在单处理器机器上运行,自旋锁功能将通过无操作进行热修补。

linux - spin_lock 和 spin_unlock 是否会影响单 cpu 机器上 SMP 内核的性能?

在我的Ubuntu机器上,正在运行的默认内核镜像是为smp(CONFIG_SMP=y)构建的。但是这台机器只有1个cpu。在单处理器内核上,与smp内核不同,spin_lock/unlock是空函数。那么spin_lock()和spin_unlock()在此设置中的行为如何?这种特定于smp的代码是否会对性能产生影响? 最佳答案 当前的Linux内核包含一个补丁,您可以使用术语“SMP替代品”在谷歌上搜索该补丁。简而言之,在引导过程中,如果内核检测到它正在单处理器机器上运行,自旋锁功能将通过无操作进行热修补。