如下语句编译报错:undeclared
vma->vm_flags |= VM_RESERVED
出现错误,这句代码的作用是标志该内存区不能被换出,在设备驱动中虚拟页和物理页的关系应该是长期的,应该保留起来,不能随便被别的虚拟页换出,保证映射到虚拟内存空间(vma)中去,经过排查得知从linux 3.7.0开始内核不再支持struct vm_area_struct结构体中flag标志使用值 VM_RESERVED;而是需要在类似的驱动开发中需要将VM_RESERVED改成(VM_DONTEXPAND | VM_DONTDUMP);于是把语句改成如下语句:
vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP)