KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(28)

2023-12-22 11:39:36

接前一篇文章:KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(27)

上回书在探究i915_gem_object_lookup_rcu函数调用idr_find函数时所传递的参数的时候,由第1个实参&file->object_idr引出了对于它是在何时何处赋值的探索。

static inline struct drm_i915_gem_object *
i915_gem_object_lookup_rcu(struct drm_file *file, u32 handle)
{
#ifdef CONFIG_LOCKDEP
	WARN_ON(debug_locks && !lock_is_held(&rcu_lock_map));
#endif
	return idr_find(&file->object_idr, handle);
}

而后经过定位和排查,最终锁定在drivers/gpu/drm/drm_gem.c中的两个函数:drm_gem_handle_create_tail()和drm_gem_open()。本回就开始对这两个函数进行深入解析,探究它们是如何与object_idr以及Linux Radix Tree建立联系的。

为了便于理解,再次贴出两个函数源码:

  • drm_gem_handle_create_tail函数
/**
 * drm_gem_handle_create_tail - internal fu

文章来源:https://blog.csdn.net/phmatthaus/article/details/135144357
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。