libdrm: add support for server side functionality in libdrm

This adds APIs to allow the X server to use libdrm from the system
rather than its own in-built copy.
diff --git a/libdrm/xf86drm.h b/libdrm/xf86drm.h
index 86ee7d3..4d9580c 100644
--- a/libdrm/xf86drm.h
+++ b/libdrm/xf86drm.h
@@ -36,6 +36,8 @@
 #ifndef _XF86DRM_H_
 #define _XF86DRM_H_
 
+#include <stdarg.h>
+#include <sys/types.h>
 #include <drm.h>
 
 				/* Defaults, if nothing set in xf86config */
@@ -61,6 +63,21 @@
 typedef unsigned int  drmSize,     *drmSizePtr;	    /**< For mapped regions */
 typedef void          *drmAddress, **drmAddressPtr; /**< For mapped regions */
 
+typedef struct _drmServerInfo {
+  int (*debug_print)(const char *format, va_list ap);
+  int (*load_module)(const char *name);
+  void (*get_perms)(gid_t *, mode_t *);
+} drmServerInfo, *drmServerInfoPtr;
+
+typedef struct drmHashEntry {
+    int      fd;
+    void     (*f)(int, void *, void *);
+    void     *tagTable;
+} drmHashEntry;
+
+extern void *drmGetHashTable(void);
+extern drmHashEntry *drmGetEntry(int fd);
+
 /**
  * Driver version information.
  *
@@ -604,6 +621,7 @@
 extern int           drmWaitVBlank(int fd, drmVBlankPtr vbl);
 
 /* Support routines */
+extern void          drmSetServerInfo(drmServerInfoPtr info);
 extern int           drmError(int err, const char *label);
 extern void          *drmMalloc(int size);
 extern void          drmFree(void *pt);