免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3100 | 回复: 0
打印 上一主题 下一主题

DRM内核代码分析之一 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-15 20:38 |只看该作者 |倒序浏览

                                                                  主要分析内核2.6.30. 写下来,主要为了敦促自己分析下去.今天当一个开始吧.
  1. 首先建立代码阅读方式
  http://cscope.sourceforge.net/cscope_vim_tutorial.html
  
  http://cscope.sourceforge.net/large_projects.html
  
  建立x86的代码目录, 这样可便利找到所针对的CPU架构的代码.
2. 从Makefile与Kconfig文件开始
2.6.26之前内核中,drm内核模块在 drivers/char/drm目录. 2.6.27以后在 drivers/gpu/drm.也许是为了特出对gpu显示处理单元的重要性吧.
  
drivers/gpu/Makefile
drivers/gpu/drm/Makefile
drivers/gpu/drm/Kconfig
3. 第一级Makefile文件内容
obj-y                   += drm/
很简单,意味着这个文件夹里部分内容默认会编译.
4. 第二级Makefile文件内容
#
# Makefile for the drm device driver.  This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
ccflags-y := -Iinclude/drm
drm-y     :=  drm_auth.o drm_bufs.o drm_cache.o \
              drm_context.o drm_dma.o drm_drawable.o \
              drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \
              drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
              drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
              drm_sysfs.o drm_hashtab.o drm_sman.o drm_mm.o \
              drm_crtc.o drm_crtc_helper.o drm_modes.o drm_edid.o \
              drm_info.o drm_debugfs.o  #默认编译的drm模块代码
drm-$(CONFIG_COMPAT) += drm_ioc32.o    #兼任性ioctl接口
obj-$(CONFIG_DRM)       += drm.o      #对应Kconfig的  DRM选项
obj-$(CONFIG_DRM_TDFX)  += tdfx/      #以下为设备相关驱动 对应
obj-$(CONFIG_DRM_R128)  += r128/
obj-$(CONFIG_DRM_RADEON)+= radeon/
obj-$(CONFIG_DRM_MGA)   += mga/
obj-$(CONFIG_DRM_I810)  += i810/
obj-$(CONFIG_DRM_I830)  += i830/
obj-$(CONFIG_DRM_I915)  += i915/
obj-$(CONFIG_DRM_SIS)   += sis/
obj-$(CONFIG_DRM_SAVAGE)+= savage/
obj-$(CONFIG_DRM_VIA)   +=via/
对应各家显卡厂商的显卡驱动,绝大部分我们不需要关注. 我自己的本本配搭的是GM965,只要关注i915文件夹就可以.
似乎默认编译的文件比较多,到include文件夹碰碰运气.
include/drm/Kbuild
似乎没有啥帮助. 几个月之前,KMS还没引入的时候,drm内的文件要少许多;甚至GEM也不存在.不过,要分析要趁早,不如AMD/ATI的TTM也进内核了就更麻烦了:-)
接下来,有几条思路.
A. 从drm内核模块的初始化看接口调用关系. grub i915.modeset=1的解析等等.
B. 从ioctl看看libdrm是如何调用内核接口的吧.
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6547/showart_1965408.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP