从零开始之驱动发开、linux驱动(三十一、framebuffer中对mmap使用)

本文介绍了Linux驱动开发中,如何使用mmap提高framebuffer效率。相比于write函数,mmap避免了用户空间到内核空间的数据拷贝,直接对显存进行操作,从而提升了对高分辨率、大数据量显示设备的效率。示例展示了如何通过mmap将LCD显示器背景设为红色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面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函数,则调用具体驱动中的,不使用通用的(三星的都输通用的,所以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值