小编Pet*_*der的帖子

create/dev/fakeDevice支持read,write和ioctl

我有一个在嵌入式设备上运行的软件(x86,最近的linux).为了简化开发,使用自动化测试等,我想在我的主机系统上运行它.代码编译很好,对构建系统进行了一些调整.下一步将是创建"虚拟设备".

应用程序不使用任何类型的库,而是通过读取,写入和ioctl调用直接与多个设备通信.这些设备代表具有自定义协议的自定义硬件.要创建虚拟环境,我需要响应此调用.一种可能的方法是:

  • 创造每一个需要的设备的驱动程序(/dev/deviceA,/dev/deviceB,/dev/deviceC,...)
  • 创建另一个设备驱动程序以与用户空间进行通信(例如/dev/deviceSimulation)
  • 所有虚拟设备都会转发每个呼叫 /dev/deviceSimulation
  • 另一个用户空间应用程序与/dev/deviceSimulation模拟的状态交互并跟踪模拟的状态.

如果没有通过Linux内核的往返,有没有更简单的方法呢?

linux linux-device-driver linux-kernel

7
推荐指数
1
解决办法
1608
查看次数

inout-parameter - 将一个const-handle替换为另一个const-handle

在一个对象中,我有一个const-handle数组到另一个特定类的某个对象.在方法中,我可能希望将此句柄之一作为inout参数返回.这是一个简化的例子:

class A {}

class B {
    const(A) a[];
    this() { 
        a = [new A(), new A(), new A()];
    }

    void assign_const(const(A)* value) const {
        // *value = a[0]; // fails with: Error: cannot modify const expression *value
    }
}
void main() {
    const(A) a;
    B b = new B();
    b.assign_const(&a);
    assert(a == b.a[0]); // fails .. obviously
}
Run Code Online (Sandbox Code Playgroud)

我不想删除原始数组中的const.类B是指对集合常量的某种视图 - A项.我是来自C++的D新手.我是否在D-way中搞乱了const-correctness?我已经尝试了几种方法让它工作,但不知道如何正确.

如果没有"邪恶"的投射,如何正确执行此查找?

pointers casting d const-correctness const-cast

4
推荐指数
1
解决办法
102
查看次数