summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2020-04-28 16:33:05 +0200
committerEmmanuel Vadot <manu@FreeBSD.org>2020-05-04 21:19:58 +0200
commit5aa83dd6fa2bbfeb098877898d10261b2ec4f2d0 (patch)
tree173da2bd5a8684a1cfb995ac82330484b722de09
parentf52e2b20edda32e06f506bc455fcc44ed9266a36 (diff)
libdrm: drmGetDeviceNameFromFd: Always return /dev/dri/ node for FreeBSD
Since we now always returns the /dev/dri/ node for drmGet<nodetype>DeviceNameFromFd, be consistant with the names returned in drmGetDeviceNameFromFd. Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Emmanuel Vadot <manu@FreeBSD.org>
-rw-r--r--xf86drm.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 6fe0296f..b49d42f7 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -122,6 +122,7 @@ struct drm_pciinfo {
static drmServerInfoPtr drm_server_info;
static bool drmNodeIsDRM(int maj, int min);
+static char *drmGetMinorNameForFD(int fd, int type);
drm_public void drmSetServerInfo(drmServerInfoPtr info)
{
@@ -2776,24 +2777,16 @@ drm_public char *drmGetDeviceNameFromFd(int fd)
{
#ifdef __FreeBSD__
struct stat sbuf;
- char dname[SPECNAMELEN];
- char name[SPECNAMELEN];
int maj, min;
+ int nodetype;
if (fstat(fd, &sbuf))
return NULL;
maj = major(sbuf.st_rdev);
min = minor(sbuf.st_rdev);
-
- if (!drmNodeIsDRM(maj, min) || !S_ISCHR(sbuf.st_mode))
- return NULL;
-
- if (!devname_r(sbuf.st_rdev, S_IFCHR, dname, sizeof(dname)))
- return NULL;
-
- snprintf(name, sizeof(name), "/dev/%s", dname);
- return strdup(name);
+ nodetype = drmGetMinorType(maj, min);
+ return drmGetMinorNameForFD(fd, nodetype);
#else
char name[128];
struct stat sbuf;