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>main
parent
5c1c09e0d2
commit
1f73578df3
39
xf86drm.c
39
xf86drm.c
|
@ -505,6 +505,23 @@ static int drmGetMinorBase(int type)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int drmGetMinorType(int minor)
|
||||||
|
{
|
||||||
|
int type = minor >> 6;
|
||||||
|
|
||||||
|
if (minor < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case DRM_NODE_PRIMARY:
|
||||||
|
case DRM_NODE_CONTROL:
|
||||||
|
case DRM_NODE_RENDER:
|
||||||
|
return type;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the device by bus ID.
|
* Open the device by bus ID.
|
||||||
*
|
*
|
||||||
|
@ -2667,6 +2684,28 @@ char *drmGetDeviceNameFromFd(int fd)
|
||||||
return strdup(name);
|
return strdup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int drmGetNodeTypeFromFd(int fd)
|
||||||
|
{
|
||||||
|
struct stat sbuf;
|
||||||
|
int maj, min, type;
|
||||||
|
|
||||||
|
if (fstat(fd, &sbuf))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
maj = major(sbuf.st_rdev);
|
||||||
|
min = minor(sbuf.st_rdev);
|
||||||
|
|
||||||
|
if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode)) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
type = drmGetMinorType(min);
|
||||||
|
if (type == -1)
|
||||||
|
errno = ENODEV;
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)
|
int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)
|
||||||
{
|
{
|
||||||
struct drm_prime_handle args;
|
struct drm_prime_handle args;
|
||||||
|
|
|
@ -744,6 +744,7 @@ typedef struct _drmEventContext {
|
||||||
extern int drmHandleEvent(int fd, drmEventContextPtr evctx);
|
extern int drmHandleEvent(int fd, drmEventContextPtr evctx);
|
||||||
|
|
||||||
extern char *drmGetDeviceNameFromFd(int fd);
|
extern char *drmGetDeviceNameFromFd(int fd);
|
||||||
|
extern int drmGetNodeTypeFromFd(int fd);
|
||||||
|
|
||||||
extern int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd);
|
extern int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd);
|
||||||
extern int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle);
|
extern int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle);
|
||||||
|
|
Loading…
Reference in New Issue