草庐IT

c - Ruby、ioctl 和复杂结构

我有一个硬件,我正试图通过我计算机的内置SPI驱动程序来控制它。SPI驱动程序通过ioctl控制。我可以通过一个小的C程序成功地驱动硬件;但是当我尝试在Ruby中复制C程序时,我遇到了问题。使用IO#ioctl设置基本寄存器(使用u32和u8整数)工作正常(我知道因为我也可以使用ioctl来读回我设置的值);但是一旦我尝试设置一个复杂的结构,程序就会失败small.rb:51:in'ioctl':Connectiontimedout@rb_ioctl-/dev/spidev32766.0(Errno::ETIMEDOUT)我可能会遇到麻烦,因为spi_ioc_transferstruc

ruby - IOCTL 调用中指向缓冲区的指针

我正在使用Ruby和位结构在测试设置中配置我的网络接口(interface)。这适用于大多数IOCTL调用,但我不知道如何调用SIOCGIFCONF这是一个例子:如果我想获取接口(interface)的MAC地址,我会这样写:classLinuxIfreqMacAddr:nativehex_octets:macaddr,48pad:padding,64endifr=LinuxIfreqMacAddr.newifr.name="eth0"s.ioctl(SIOCGIFHWADDR,ifr)#sisasocketputsifr.macaddr这工作正常,将打印eth0的MAC地址。但是“s
78910