FUSE高级IOCTL函数接收空参数问题排查求助
FUSE高级IOCTL函数接收空参数问题排查求助
我最近在开发一个FUSE文件系统,碰到了个头疼的问题:不管我怎么调用ioctl系统调用,FUSE高级API实现的ioctl处理函数里的arg和data两个参数始终是NULL。我不确定是自己对这两个参数的含义理解错了,还是用户态程序的系统调用写法有问题。
下面是我的代码片段,希望各位能给我一些调试或修复的建议,非常感谢!
FUSE 端IOCTL处理函数
static int cu_fuse_ioctl(const char* path_, int cmd, void* arg, struct fuse_file_info*, unsigned int flags, void* data) { if(arg == NULL) { printf("arg was null!\n"); } if(data == NULL) { printf("data was null!\n"); } return 0; }
用户态调用程序
int main() { const char *dev_path = "/home/theassembler1/src/view/.spec_dev"; const char *message = "test"; int fd; int ret; char buffer[256]; fd = open(dev_path, O_RDWR); if (fd == -1) { perror("Failed to open device"); // 此处省略后续错误处理代码 } // 注:原代码未完整展示ioctl的具体调用语句,推测会有类似如下的调用 // ret = ioctl(fd, CUSTOM_IOCTL_CMD, message); // 或者 ret = ioctl(fd, CUSTOM_IOCTL_CMD, buffer); }
目前我完全找不到问题所在,有没有大佬能指点下排查方向,或者指出我代码里的问题?再次感谢!
备注:内容来源于stack exchange,提问作者Noah Lewis
相关产品推荐
相关产品推荐

