pmem的配置可以参考http://pmem.io/2016/02/22/pm-emulation.html,没有的选项可以不选。不要少选了,不然没有pmem设备滴。
配置完之后,想要在内核中获取pmem的虚拟地址,就先来个系统调用吧。
我的内核是4.4.4。所以在arch/x86/entry/syscall_64.tbl中添加编号,顺序添加即可。然后在include/linux/syscalls.h添加asmlinkage long +系统调用名。OK。
接下来在系统调用实现中使用一下代码
static struct file_system_type you_fs_type = {
.owner = THIS_MODULE,
.name = "搞事情",
};
fmode_t mode = FMODE_READ | FMODE_WRITE | FMODE_EXCL;
struct block_device *bdev;
unsigned long virt_addr = 0;
unsigned long pfn = 0;
bdev = blkde