#include <sys/stat.h>
#define stat_t struct stat
#include <sys/ioctl.h>
-#include <sys/mman.h>
#include <sys/time.h>
#include <stdarg.h>
#endif
#include "xf86drm.h"
+#include "libdrm.h"
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
#define DRM_MAJOR 145
* This function is a wrapper around vfprintf().
*/
-static int drmDebugPrint(const char *format, va_list ap)
+static int DRM_PRINTFLIKE(1, 0)
+drmDebugPrint(const char *format, va_list ap)
{
return vfprintf(stderr, format, ap);
}
-static int (*drm_debug_print)(const char *format, va_list ap) = drmDebugPrint;
+typedef int DRM_PRINTFLIKE(1, 0) (*debug_msg_func_t)(const char *format,
+ va_list ap);
+
+static debug_msg_func_t drm_debug_print = drmDebugPrint;
void
drmMsg(const char *format, ...)
}
void
-drmSetDebugMsgFunction(int (*debug_msg_ptr)(const char *format, va_list ap))
+drmSetDebugMsgFunction(debug_msg_func_t debug_msg_ptr)
{
drm_debug_print = debug_msg_ptr;
}
sv.drm_di_minor = 1;
sv.drm_dd_major = -1; /* Don't care */
sv.drm_dd_minor = -1; /* Don't care */
- drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n",fd);
+ drmMsg("drmOpenByBusid: Interface 1.4 failed, trying 1.1\n");
drmSetInterfaceVersion(fd, &sv);
}
buf = drmGetBusid(fd);
int fd;
drmVersionPtr version;
char * id;
-
- if (!drmAvailable()) {
- if (!drm_server_info) {
- return -1;
- }
- else {
- /* try to load the kernel module now */
- if (!drm_server_info->load_module(name)) {
- drmMsg("[drm] failed to load kernel module \"%s\"\n", name);
- return -1;
- }
- }
- }
/*
* Open the first minor number that matches the driver name and isn't
return 0;
}
+int drmSetClientCap(int fd, uint64_t capability, uint64_t value)
+{
+ struct drm_set_client_cap cap = { capability, value };
+
+ return drmIoctl(fd, DRM_IOCTL_SET_CLIENT_CAP, &cap);
+}
+
/**
* Free the bus ID information.
*
size = (size + pagesize_mask) & ~pagesize_mask;
- *address = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
+ *address = drm_mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, handle);
if (*address == MAP_FAILED)
return -errno;
return 0;
*/
int drmUnmap(drmAddress address, drmSize size)
{
- return munmap(address, size);
+ return drm_munmap(address, size);
}
drmBufInfoPtr drmGetBufInfo(int fd)
int i;
for (i = 0; i < bufs->count; i++) {
- munmap(bufs->list[i].address, bufs->list[i].total);
+ drm_munmap(bufs->list[i].address, bufs->list[i].total);
}
drmFree(bufs->list);
ret = clock_gettime(CLOCK_MONOTONIC, &timeout);
if (ret < 0) {
- fprintf(stderr, "clock_gettime failed: %s\n", strerror(ret));
+ fprintf(stderr, "clock_gettime failed: %s\n", strerror(errno));
goto out;
}
timeout.tv_sec++;