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.