summaryrefslogtreecommitdiff
path: root/linux-core/drmP.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-02-13 12:12:52 +1000
committerDave Airlie <airlied@redhat.com>2008-02-13 12:12:52 +1000
commitf276c845bde4c712aa383540a2dd2055ecc00031 (patch)
treeb7b4847cd819cb356e4f13a74326655c7244e7f9 /linux-core/drmP.h
parent04257f1a5a28550dc430d8051bb58fd0ac34e77d (diff)
drm: re-write minor number allocation to use an idr.
Fixup the minor number allocation scheme to use an idr and move the control nodes up higher.
Diffstat (limited to 'linux-core/drmP.h')
-rw-r--r--linux-core/drmP.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/linux-core/drmP.h b/linux-core/drmP.h
index 1c815c5f..afc16f5f 100644
--- a/linux-core/drmP.h
+++ b/linux-core/drmP.h
@@ -733,11 +733,12 @@ struct drm_driver {
#define DRM_MINOR_UNASSIGNED 0
#define DRM_MINOR_CONTROL 1
#define DRM_MINOR_RENDER 2
+#define DRM_MINOR_GPGPU 3 /* this node is restricted to operations that don't require a master */
/**
* DRM minor structure. This structure represents a drm minor number.
*/
struct drm_minor {
- int minor; /**< Minor device number */
+ int index; /**< Minor device number */
int type; /**< Control or render */
dev_t device; /**< Device number for mknod */
struct device kdev; /**< Linux device */
@@ -882,8 +883,8 @@ struct drm_device {
unsigned int agp_buffer_token;
/* minor number for control node */
- struct drm_minor control;
- struct drm_minor primary; /**< primary screen head */
+ struct drm_minor *control;
+ struct drm_minor *primary; /**< primary screen head */
struct drm_fence_manager fm;
struct drm_buffer_manager bm;
@@ -1214,13 +1215,15 @@ extern void drm_agp_chipset_flush(struct drm_device *dev);
extern int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
struct drm_driver *driver);
extern int drm_put_dev(struct drm_device *dev);
-extern int drm_put_minor(struct drm_minor *minor);
+extern int drm_put_minor(struct drm_minor **minor);
extern unsigned int drm_debug; /* 1 to enable debug output */
extern unsigned int drm_minors_limit;
-extern struct drm_minor **drm_minors;
+
extern struct class *drm_class;
extern struct proc_dir_entry *drm_proc_root;
+extern struct idr drm_minors_idr;
+
extern drm_local_map_t *drm_getsarea(struct drm_device *dev);
/* Proc support (drm_proc.h) */