Análise completa do Libdrm quatorze - análise completa do código-fonte (11)

Continuação do artigo anterior: Análise completa da libdrm treze – Análise completa do código-fonte (10)

Este artigo refere-se às seguintes postagens do blog:

Desenvolvimento de driver DRM (VKMS)

Muito obrigado!

17. DRM_IOCTL_BLOCK

A 17ª macro é DRM_IOCTL_BLOCK, o código correspondente é o seguinte:

#define DRM_IOCTL_BLOCK			DRM_IOWR(0x12, struct drm_block)

Combinado com a definição final de _IOWR(type,nr,size) no artigo anterior, o seguinte código é obtido:

#define DRM_IOCTL_BLOCK		( ((3)  << 30) | (('d') << 8) | ((0x12)   << 0) | ((sizeof(struct drm_block)) << 16) )

struct drm_block é definido no mesmo arquivo (include/drm/drm.h), o código é o seguinte:

struct drm_block {
	int unused;
};

DRM_IOCTL_BLOCK atualmente não possui API de espaço de usuário correspondente (ou seja, nenhum pacote correspondente) e não há código para chamá-lo diretamente no código-fonte do libdrm.

18. DRM_IOCTL_UNBLOCK

A 18ª macro é DRM_IOCTL_UNBLOCK, o código correspondente é o seguinte:

#define DRM_IOCTL_UNBLOCK		DRM_IOWR(0x13, struct drm_block)

Combinado com a definição final de _IOWR(type,nr,size) no artigo anterior, o seguinte código é obtido:

#define DRM_IOCTL_UNBLOCK		( ((3)  << 30) | (('d') << 8) | ((0x13)   << 0) | ((sizeof(struct drm_block)) << 16) )

A definição de struct drm_block foi listada acima. Pode-se observar que DRM_IOCTL_BLOCK e DRM_IOCTL_UNBLOCK são um par.

Como DRM_IOCTL_BLOCK atualmente não possui uma API Userspace correspondente (ou seja, não há pacote correspondente) e não há código que o chame diretamente no código-fonte libdrm, o mesmo se aplica a DRM_IOCTL_UNBLOCK.

おすすめ

転載: blog.csdn.net/phmatthaus/article/details/132477481