aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Binns2015-02-13 04:51:15 -0600
committerEmil Velikov2015-02-23 03:29:19 -0600
commit1f73578df32f895a678a41758f6c563f49484347 (patch)
tree4370fb5ecf5b2446045c62e6353d91ad77a0abdd /xf86drm.c
parent5c1c09e0d28cde4341777b966c21568fd9b51516 (diff)
downloadexternal-libgbm-1f73578df32f895a678a41758f6c563f49484347.tar.gz
external-libgbm-1f73578df32f895a678a41758f6c563f49484347.tar.xz
external-libgbm-1f73578df32f895a678a41758f6c563f49484347.zip
Add new drmGetNodeTypeFromFd function
Add a helper function that returns the type of device node from an fd. Signed-off-by: Frank Binns <frank.binns@imgtec.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Diffstat (limited to 'xf86drm.c')
-rw-r--r--xf86drm.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/xf86drm.c b/xf86drm.c
index d85115ca..e117bc63 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -505,6 +505,23 @@ static int drmGetMinorBase(int type)
505 }; 505 };
506} 506}
507 507
508static int drmGetMinorType(int minor)
509{
510 int type = minor >> 6;
511
512 if (minor < 0)
513 return -1;
514
515 switch (type) {
516 case DRM_NODE_PRIMARY:
517 case DRM_NODE_CONTROL:
518 case DRM_NODE_RENDER:
519 return type;
520 default:
521 return -1;
522 }
523}
524
508/** 525/**
509 * Open the device by bus ID. 526 * Open the device by bus ID.
510 * 527 *
@@ -2667,6 +2684,28 @@ char *drmGetDeviceNameFromFd(int fd)
2667 return strdup(name); 2684 return strdup(name);
2668} 2685}
2669 2686
2687int drmGetNodeTypeFromFd(int fd)
2688{
2689 struct stat sbuf;
2690 int maj, min, type;
2691
2692 if (fstat(fd, &sbuf))
2693 return -1;
2694
2695 maj = major(sbuf.st_rdev);
2696 min = minor(sbuf.st_rdev);
2697
2698 if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode)) {
2699 errno = EINVAL;
2700 return -1;
2701 }
2702
2703 type = drmGetMinorType(min);
2704 if (type == -1)
2705 errno = ENODEV;
2706 return type;
2707}
2708
2670int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd) 2709int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)
2671{ 2710{
2672 struct drm_prime_handle args; 2711 struct drm_prime_handle args;