我有一个用户空间应用程序和一个内核字符驱动程序/dev/myfile
。用户空间打开/dev/myfile
并将命令写入文件。内核接受命令,执行它,并用响应消息替换文件中的整个命令。
现在在用户空间中,我对文件运行一个轮询,以查看内核是否对文件进行了任何写操作。一旦poll方法退出,我就会读取文件内容并在终端上显示。
现在我的问题是民意调查方法:
struct pollfd fds[1];
fds[0].fd = fd;
fds[0].events = POLLIN | POLLERR | POLLRDNORM;
fds[0].revents = 0;
n = poll(fds, 1, POLL_TIMEOUT);
我希望阻止轮询直到内核将一些数据写入文件。记住,即使我打开文件并在文件上写命令,我也是用户空间应用程序 但是一旦用户空间应用程序向文件写入内容,poll方法就不能退出等待条件我希望poll方法只在内核完成向文件写入内容时退出。以便用户空间应用程序可以读取
1)现在任何人都可以为这种情况提供解决方案。
2)我想到的一个解决方案是将数据写入文件,然后打开pthread和
在线程内部调用poll()方法我尝试了这个方法,但我发现轮询退出i
不知道原因。但是当我从文件中读取数据时,我得到0个字节。
答案 0 :(得分:0)
我发现民意调查退出时我不知道原因。
原因可能是您的角色驱动程序的file_operations
函数poll
有问题。我们可能会告诉你是否展示了这个功能。