xf86drm: dedupe drmGetDeviceName() logic
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>main
parent
6869e4cea7
commit
331e51e32f
86
xf86drm.c
86
xf86drm.c
|
@ -300,6 +300,19 @@ static int chown_check_return(const char *path, uid_t owner, gid_t group)
|
|||
}
|
||||
#endif
|
||||
|
||||
static const char *drmGetDeviceName(int type)
|
||||
{
|
||||
switch (type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
return DRM_DEV_NAME;
|
||||
case DRM_NODE_CONTROL:
|
||||
return DRM_CONTROL_DEV_NAME;
|
||||
case DRM_NODE_RENDER:
|
||||
return DRM_RENDER_DEV_NAME;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the DRM device, creating it if necessary.
|
||||
*
|
||||
|
@ -316,7 +329,7 @@ static int chown_check_return(const char *path, uid_t owner, gid_t group)
|
|||
static int drmOpenDevice(dev_t dev, int minor, int type)
|
||||
{
|
||||
stat_t st;
|
||||
const char *dev_name;
|
||||
const char *dev_name = drmGetDeviceName(type);
|
||||
char buf[DRM_NODE_NAME_MAX];
|
||||
int fd;
|
||||
mode_t devmode = DRM_DEV_MODE, serv_mode;
|
||||
|
@ -327,19 +340,8 @@ static int drmOpenDevice(dev_t dev, int minor, int type)
|
|||
gid_t group = DRM_DEV_GID;
|
||||
#endif
|
||||
|
||||
switch (type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
dev_name = DRM_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_CONTROL:
|
||||
dev_name = DRM_CONTROL_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_RENDER:
|
||||
dev_name = DRM_RENDER_DEV_NAME;
|
||||
break;
|
||||
default:
|
||||
if (!dev_name)
|
||||
return -EINVAL;
|
||||
};
|
||||
|
||||
sprintf(buf, dev_name, DRM_DIR_NAME, minor);
|
||||
drmMsg("drmOpenDevice: node name is %s\n", buf);
|
||||
|
@ -446,24 +448,13 @@ static int drmOpenMinor(int minor, int create, int type)
|
|||
{
|
||||
int fd;
|
||||
char buf[DRM_NODE_NAME_MAX];
|
||||
const char *dev_name;
|
||||
const char *dev_name = drmGetDeviceName(type);
|
||||
|
||||
if (create)
|
||||
return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
|
||||
|
||||
switch (type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
dev_name = DRM_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_CONTROL:
|
||||
dev_name = DRM_CONTROL_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_RENDER:
|
||||
dev_name = DRM_RENDER_DEV_NAME;
|
||||
break;
|
||||
default:
|
||||
if (!dev_name)
|
||||
return -EINVAL;
|
||||
};
|
||||
|
||||
sprintf(buf, dev_name, DRM_DIR_NAME, minor);
|
||||
if ((fd = open(buf, O_RDWR | O_CLOEXEC, 0)) >= 0)
|
||||
|
@ -2892,7 +2883,7 @@ static char *drmGetMinorNameForFD(int fd, int type)
|
|||
#else
|
||||
struct stat sbuf;
|
||||
char buf[PATH_MAX + 1];
|
||||
const char *dev_name;
|
||||
const char *dev_name = drmGetDeviceName(type);
|
||||
unsigned int maj, min;
|
||||
int n;
|
||||
|
||||
|
@ -2905,19 +2896,8 @@ static char *drmGetMinorNameForFD(int fd, int type)
|
|||
if (!drmNodeIsDRM(maj, min) || !S_ISCHR(sbuf.st_mode))
|
||||
return NULL;
|
||||
|
||||
switch (type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
dev_name = DRM_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_CONTROL:
|
||||
dev_name = DRM_CONTROL_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_RENDER:
|
||||
dev_name = DRM_RENDER_DEV_NAME;
|
||||
break;
|
||||
default:
|
||||
if (!dev_name)
|
||||
return NULL;
|
||||
};
|
||||
|
||||
n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min);
|
||||
if (n == -1 || n >= sizeof(buf))
|
||||
|
@ -3831,19 +3811,9 @@ drm_public int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device)
|
|||
if (node_type == -1)
|
||||
return -ENODEV;
|
||||
|
||||
switch (node_type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
dev_name = DRM_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_CONTROL:
|
||||
dev_name = DRM_CONTROL_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_RENDER:
|
||||
dev_name = DRM_RENDER_DEV_NAME;
|
||||
break;
|
||||
default:
|
||||
dev_name = drmGetDeviceName(node_type);
|
||||
if (!dev_name)
|
||||
return -EINVAL;
|
||||
};
|
||||
|
||||
n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
|
||||
if (n == -1 || n >= PATH_MAX)
|
||||
|
@ -4080,19 +4050,9 @@ drm_public char *drmGetDeviceNameFromFd2(int fd)
|
|||
if (node_type == -1)
|
||||
return NULL;
|
||||
|
||||
switch (node_type) {
|
||||
case DRM_NODE_PRIMARY:
|
||||
dev_name = DRM_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_CONTROL:
|
||||
dev_name = DRM_CONTROL_DEV_NAME;
|
||||
break;
|
||||
case DRM_NODE_RENDER:
|
||||
dev_name = DRM_RENDER_DEV_NAME;
|
||||
break;
|
||||
default:
|
||||
dev_name = drmGetDeviceName(node_type);
|
||||
if (!dev_name)
|
||||
return NULL;
|
||||
};
|
||||
|
||||
n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
|
||||
if (n == -1 || n >= PATH_MAX)
|
||||
|
|
Loading…
Reference in New Issue