mmap映射物理内存到用户空间的方法

本文介绍了在Linux环境下,通过mmap将内核申请的物理内存映射到用户空间的方法。首先在内核部分创建字符设备并配置mmap函数,分配连续内存,然后在应用层进行映射并验证,成功读取初始化的值。映射的内存地址可供后续程序使用。
摘要由CSDN通过智能技术生成

在内核申请一片物理内存,映射到用户空间使用的方法。环境:Linux ubuntu 4.10.0-42-generic。

#include <linux/init.h>  
#include <linux/kernel.h>  
#include <linux/module.h>  
#include <linux/fs.h>  
#include <linux/types.h>  
#include <linux/errno.h>  
#include <linux/fcntl.h>  
#include <linux/vmalloc.h>  
#include <asm/uaccess.h>  
#include <asm/io.h>  
#include <asm/page.h>  
#include <linux/mm.h>  
#include <linux/platform_device.h>  
#include <linux/device.h>  
#include <linux/moduleparam.h>  
#include <linux/cdev.h>  
#include <linux/slab.h> 
#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/dmapool.h>
#include <linux/device.h>

  
#define MMAPIOMEM_DEV_NAME "mmapiomem"  
#define MMAPIOMEM_DEV_MAJOR 280  
#define MMAP_BUF_SIZE 0x500  
  
char *mmap_buf_ptr;  

  
int mmapiomem_open(struct inode *inode,struct file *filp)  
{  
    return 0;  
}  
  
int mmapiomem_release(struct inode *inode,struct file *filp)  
{  
    return 0;  
}  
  
int mmapiomem_mmap(struct file *filp,struct vm_area_struct *vma)  
{  
  
    int result;  
    unsigned long page;
  
    //vma->vm_flags|=VM_RESERVED|VM_SHARED; 
    vma->vm_flags |= (VM_IO | VM_LOCKED | (VM_DONTEXPAND | VM_DONTDUMP)); 
  
    vma->vm_flag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值