前面framebuffer章节我们了解了通过write函数来对fremebbuffer中的显存写数据的方式。
在开始分析mmap之前我们再次回顾一下fb_write函数
static ssize_t
fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
{
unsigned long p = *ppos; //显存起始地址的偏移
struct inode *inode = file->f_path.dentry->d_inode;
int fbidx = iminor(inode); //得到次设备号
struct fb_info *info = registered_fb[fbidx]; //得到设备信息
u32 *buffer, *src;
u32 __iomem *dst;
int c, i, cnt = 0, err = 0;
unsigned long total_size;
if (!info || !info->screen_base) /* 参数有效性判断 */
return -ENODEV;
if (info->state != FBINFO_STATE_RUNNING)
return -EPERM;
/* 设备信息中的fb_ops中如果有定义fb_wrute函数,则调用具体驱动中的,不使用通用的(三星的都输通用的,所以