我知道,如果我试图打印一个数组元素的地址,它将是一个来自虚拟内存的地址,而不是来自真实内存(物理内存),即DRAM的地址。
printf ("Address of A[5] and A[6] are %u and %u", &A[5], &A[6]);
我发现地址是连续的(假设元素是字符)。实际上,它们可能不是连续的,至少在DRAM中不是。我想知道真正的地址。我该怎么做呢?
无论是Windows还是Linux,我都需要知道这一点。
我需要在linux驱动程序中获得分配内存块的物理内存:这是一个FPGA SOC,内存被传递给SGDMA FPGA模块。
这可以归结为对“逻辑”和“虚拟”记忆的混淆:--它们是同义词还是反义?--
因此,我的驱动程序代码片段是:
unsigned long m = __get_free_pages(GFP_USER, order); // returns 'logical' address
if (m) {
instance->read_buffer[i].order = order;
if(1) { // should this be 0?
我正试图为最初在linux下运行的esxi编译一个驱动程序。当我尝试加载它时,我会得到以下错误/警告
WARNING: Elf: 1508: Relocation of symbol <pci_find_bus> failed: Unresolved symbol
因为它不是在vmklinux9中定义的--我应该使用哪一个呢?
我刚看到它在ifdef下面:
vmkdrivers/src_9/include/linux/pci.h
vmkdrivers/src_9/vmklinux_9/linux/pci/search.c