linux drm 源码,DRM内核源码分析之三

本文深入探讨Linux DRM内核源码,重点解析DRM-Core层的功能,包括drm_init和drm_exit关键函数。文章指出drm_gem_init在GEM对象管理中的重要性,并介绍了drm_mm_init在内存管理中的作用。此外,还讨论了i915驱动的加载过程,特别是KMS初始化和结构体的初始化。最后,文章提到了X driver层如何通过ioctl调用实现应用功能。

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

DRM-Core 层为各家显卡driver的编写提供了通用层。 这个好像是必然的,为了复用和代码的规范:-0 Linux内核的guys为我们提高了很多接口,直接用就行了。

对DRM,注册的最关键函数是drm_init,注册了一系列函数回调。

对应的注销函数当然是drm_exit。

drm_init --> drm_get_dev --> drm_fill_in_dev --> drm_ht_create/drm_core_has_AGP/drm_device_is_agp/drm_core_check_feature/drm_core_has_MTRR/drm_ctxbitmap_init/drm_gem_init(终于“真货”来了)

-->drm_core_check_feature-->drm_get_minor-->drm_minor_get_id/drm_proc_init/drm_sysfs_device_add/...

这里调用到的drm开头的函数都属于drm-core层。

下面一个个的分析? 算了,还是挑重要的仔细看吧:-)

直捣drm_gem_init吧。

/**

* GEM specific mm private for tracking GEM objects

*/

struct drm_gem_mm {

struct drm_mm offset_manager; /**< Offset mgmt for buffer objects */

struct drm_open_hash offset_hash; /**< User token hash table for maps */

};

注册DRM的MM重要函数是drm_mm_init.建立保存mem关系的链表。

无论是GEM还是TTM,均会调用到该函

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值