mmap() 资源暂时不可用

mmap() Resource temporarily unavailable

我正在尝试实现一个内存管理内核模块。该模块使用 mmap() 系统调用。实施后,我尝试调用 mmap,这给了我一个错误 Resource temporarily unavailable 我经历了 this 个话题。该解决方案不适用于我的情况。

这是内核实现:- 不包括变量声明。

kmalloc_ptr = kmalloc(size, GFP_KERNEL)
static int simple_mmap(struct file *filp, struct vm_area_struct *vma)
{
 remap = remap_pfn_range(vma, vma->vm_start, (virt_to_phys)(kmalloc_ptr) >> 12,
                vma->vm_end - vma->vm_start,
                vma->vm_page_prot)
        return -EAGAIN;

remap 中的值为 0

我发现了错误,我并没有像我怀疑的那样映射有问题。

错误是重新映射应该用作

`if ((remap_pfn_range(vma, vma->vm_start, (unsigned long long)(virt_to_phys((void *)mapped_data)) >> PAGE_SHIFT, size, vma->vm_page_prot))
return -EAGAIN`;