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`;
我正在尝试实现一个内存管理内核模块。该模块使用 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`;