⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmapcall_dev.c

📁 linux device driver example
💻 C
字号:
#define MODULE#include <linux/module.h>#include <linux/kernel.h>      #include <linux/fs.h>          #include <linux/errno.h>       #include <linux/types.h>       #include <linux/fcntl.h>       #include <linux/vmalloc.h>#include <asm/uaccess.h>#include <asm/io.h>#include <asm/page.h>#include <asm/mm.h>#define   MMAPCALL_DEV_NAME            "mmapcall"#define   MMAPCALL_DEV_MAJOR            240      int mmapcall_open (struct inode *inode, struct file *filp){    MOD_INC_USE_COUNT;            return 0;}int mmapcall_release (struct inode *inode, struct file *filp){    MOD_DEC_USE_COUNT;    return 0;}int mmapcall_mmap(struct file *filp , struct vm_area_struct *vma ) {    printk( "vm_pgoff     [%08X]\n", vma->vm_pgoff << PAGE_SHIFT );    printk( "vm_start     [%08X]\n", vma->vm_start );    printk( "vm_end       [%08X]\n", vma->vm_end );    printk( "vm_flags     [%08X]\n", vma->vm_flags );        return -EAGAIN;}struct file_operations mmapcall_fops ={    open     : mmapcall_open,    release  : mmapcall_release,      mmap     : mmapcall_mmap,  };int init_module(void){    int result;    result = register_chrdev( MMAPCALL_DEV_MAJOR, MMAPCALL_DEV_NAME, &mmapcall_fops);    if (result < 0) return result;    return 0;}void cleanup_module(void){    unregister_chrdev( MMAPCALL_DEV_MAJOR, MMAPCALL_DEV_NAME );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -