如何从虚拟地址转换为物理地址并返回?

时间:2016-06-28 01:05:27

标签: linux linux-kernel memory virtual-memory

我已经完成了编写与设备通信的应用程序的任务。然而,这不是驱动程序,因为设备仍在开发中,并且该应用程序旨在执行其第一次修订。

我们将通过/ dev / mem与设备通话。我们将拥有所有权利。我们知道这不是正确的方法(即需要使用驱动程序),但这只是一个测试,以确保设备开发按计划进行,它确实有效。

通信协议具有指定的读写操作。问题是所有地址都是物理的。这就是它的意思。

如果主机想要写入设备,则需要提供需要写入的数据的物理地址。如果主机需要从设备读取,则需要提供缓冲区的物理地址,以便设备可以放置数据。

说我的界面有以下功能:

WriteToDevice(void *ptrToDataToWriteToADevice, unsgined numBytes);
ReadFromDevice(void *whereToPlaceDataReadFromADevice, unsigned numBytes);

ptrToDataToWriteToADevicewhereToPlaceDataReadFromADevice都在应用程序空间中,即不是物理地址。如何告诉我的设备在物理内存中找到这些指针?

感谢任何帮助。

0 个答案:

没有答案