備的驅(qū)動集成)
2.2~2.4 分別討論了drm_driver、drm_device與drm_file三個框架對象,2.5 討論了框架 ioctl 及其權(quán)限檢查。新驅(qū)動接入 DRM,就是為這三個對象提供驅(qū)動側(cè)的定義與實現(xiàn):使硬件設(shè)備成為可打開的設(shè)備節(jié)點(diǎn),承接用戶態(tài)請求,并在客戶端關(guān)閉或設(shè)備移除時釋放資源。本節(jié)按接入順序討論驅(qū)動需要完成的工作,并以 amdgpu 的實現(xiàn)加以印證。以foo_為前綴的代碼是示意代碼,只保留接入框架所需的部分;amdgpu 代碼取自drivers/gpu/drm/amd/amdgpu/。2.6.1 集成邊界DRM 核心提供設(shè)備節(jié)點(diǎn)、請求分派和客戶端管理的通用機(jī)制,驅(qū)動提供與硬件相關(guān)的定義和實現(xiàn),二者的分工如表 2.6.1 所示。表 2.6.1 DRM 核心與驅(qū)動的分工環(huán)節(jié)DRM 核心驅(qū)動設(shè)備節(jié)點(diǎn)分配次設(shè)備號,創(chuàng)建并注冊節(jié)點(diǎn)聲明能力位,分配并注冊設(shè)備實例打開創(chuàng)建drm_file,掛入filelist按需建立文件私有狀態(tài)