这个问题可能看起来很幼稚,但我是内核/驱动程序编程的新手。我在块设备上创建了一个设备映射器,它工作正常。它的构造函数/析构函数和映射方法被调用。
现在,我正在尝试为这个映射器编写一个 ioctl。当为设备编写 ioctl 时,它具有以下签名:
int ioctl(int d, /* other args */);
ioctl 中需要一个文件结构/描述符。这可以很容易地被应用程序进程使用,因为它可以访问文件。
但是设备映射器的 ioctl 具有以下签名(在struct target_type中):
typedef int (*dm_ioctl_fn) (struct dm_target *ti, unsigned int cmd,
unsigned long arg);
用户应用程序如何在不了解struct dm_target的情况下使用 ioctl 访问设备映射器?