tests: Add helper to open a device/module

The new function util_open() encapsulates the standard method employed
by tests to open a device or module. There is a verbatim copy of this in
almost all test programs, with slight variations in the list of modules.
Moving this code into a common helper allows code reuse and makes tests
more consistent.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
Thierry Reding 2015-12-09 18:37:45 +01:00 committed by Emil Velikov
parent 89cca28dfb
commit e744b02375
2 changed files with 57 additions and 0 deletions

View file

@ -41,9 +41,13 @@
#include "config.h"
#endif
#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "xf86drm.h"
#include "xf86drmMode.h"
#include "common.h"
@ -120,3 +124,54 @@ const char *util_lookup_connector_type_name(unsigned int type)
return util_lookup_type_name(type, connector_type_names,
ARRAY_SIZE(connector_type_names));
}
static const char * const modules[] = {
"i915",
"radeon",
"nouveau",
"vmwgfx",
"omapdrm",
"exynos",
"tilcdc",
"msm",
"sti",
"tegra",
"imx-drm",
"rockchip",
"atmel-hlcdc",
};
int util_open(const char *device, const char *module)
{
int fd;
if (module) {
fd = drmOpen(module, device);
if (fd < 0) {
fprintf(stderr, "failed to open device '%s': %s\n",
module, strerror(errno));
return -errno;
}
} else {
unsigned int i;
for (i = 0; i < ARRAY_SIZE(modules); i++) {
printf("trying to open device '%s'...", modules[i]);
fd = drmOpen(modules[i], device);
if (fd < 0) {
printf("failed\n");
} else {
printf("done\n");
break;
}
}
if (fd < 0) {
fprintf(stderr, "no device found\n");
return -ENODEV;
}
}
return fd;
}

View file

@ -30,4 +30,6 @@ const char *util_lookup_encoder_type_name(unsigned int type);
const char *util_lookup_connector_status_name(unsigned int type);
const char *util_lookup_connector_type_name(unsigned int type);
int util_open(const char *device, const char *module);
#endif /* UTIL_KMS_H */