通过ioctl函数访问文件系统

时间:2014-01-04 15:00:58

标签: c linux module kernel ioctl

最近,我开发了一个简单的文件系统内核模块。 因此,我需要将自己的ioctl函数(.unlocked_ioctl)分配给file_operation结构,以实现对文件系统模块的特定命令。例如,Ext4文件系统有自己的ioctl函数。

然后,我使用dd命令创建了一个文件并将其挂载:

# mount -t myfs -o loop simple_file /mnt/

一切正常,但如何使用ioctl和用户空间程序访问此文件系统?

我尝试ioctl(fd, MY_COMMAND_1, &my_struct_t);(其中fd是开发文件/dev/loop[0..7]的文件描述符),但它返回Invalid argument

1 个答案:

答案 0 :(得分:3)

如果您打开/dev/loop0,则表示您正在访问循环设备,因此您正在与循环驱动程序进行通信。

您为文件系统注册的ioctl处理程序适用于在已安装文件系统上打开的文件。

fd = open("/mnt/something", O_RDWR);
ioctl(fd, MY_COMMAND_1, &my_struct_t);