[PATCH libdrm 3/5] xf86drm: implement drmParsePciDeviceInfo for OpenBSD

Emil Velikov emil.l.velikov at gmail.com
Tue Nov 29 19:55:13 UTC 2016


On 26 November 2016 at 00:40, Jonathan Gray <jsg at jsg.id.au> wrote:
> Implement drmParsePciDeviceInfo for OpenBSD by using the new
> DRM_IOCTL_GET_PCIINFO ioctl.
>
> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> ---
>  xf86drm.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>
> diff --git a/xf86drm.c b/xf86drm.c
> index b355c83..581527b 100644
> --- a/xf86drm.c
> +++ b/xf86drm.c
> @@ -102,6 +102,26 @@
>  #define DRM_MAJOR 226 /* Linux */
>  #endif
>
> +#ifdef __OpenBSD__
> +
> +#define X_PRIVSEP
> +
> +struct drm_pciinfo {
> +       uint16_t        domain;
> +       uint8_t         bus;
> +       uint8_t         dev;
> +       uint8_t         func;
> +       uint16_t        vendor_id;
> +       uint16_t        device_id;
> +       uint16_t        subvendor_id;
> +       uint16_t        subdevice_id;
> +       uint8_t         revision_id;
> +};
> +
> +#define DRM_IOCTL_GET_PCIINFO  DRM_IOR(0x15, struct drm_pciinfo)
> +
> +#endif
> +
>  #define DRM_MSG_VERBOSITY 3
>
>  #define memclear(s) memset(&s, 0, sizeof(s))
> @@ -2991,6 +3011,37 @@ static int drmParsePciDeviceInfo(const char *d_name,
>      device->subdevice_id = config[46] | (config[47] << 8);
>
>      return 0;
> +#elif defined(__OpenBSD__)
> +    struct drm_pciinfo pinfo;
> +    char buf[PATH_MAX + 1];
> +    int fd, n;
> +
> +    n = snprintf(buf, sizeof(buf), "%s/%s", DRM_DIR_NAME, d_name);
> +    if (n == -1 || n >= sizeof(buf))
> +        return -errno;
> +
> +#ifndef X_PRIVSEP
> +    fd = open(buf, O_RDWR, 0);
> +#else
> +    fd = priv_open_device(buf);
> +#endif
> +
Since X_PRIVSEP is always set one can drop the ifndef case alongside
the define X_PRIVSEP all together. At the same time, priv_open_device
isn't defined thus one might well use drmOpenMinor() like in 4/5 ?

Sidenote: In the future we might fold drmParsePciBusInfo and
drmParsePciDeviceInfo, but for the moment we have to keep them
separate :-(

Thanks
Emil


More information about the dri-devel mailing list