diff options
author | Thomas Hellstrom <thomas@tungstengraphics.com> | 2006-06-06 14:19:00 +0000 |
---|---|---|
committer | Thomas Hellstrom <thomas@tungstengraphics.com> | 2006-06-06 14:19:00 +0000 |
commit | 6bacb180cef00573fc41a1e79bdd5b89d6f1c1f5 (patch) | |
tree | e11dc34c7c318a1ce901b932ac53d95012e5c871 /linux-core/drmP.h | |
parent | 838b03f7aad579bcb593c06e44ade02a0583d3ce (diff) |
Merge in the drm-sman-branch
Diffstat (limited to 'linux-core/drmP.h')
-rw-r--r-- | linux-core/drmP.h | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/linux-core/drmP.h b/linux-core/drmP.h index b2295b99..ec72ebca 100644 --- a/linux-core/drmP.h +++ b/linux-core/drmP.h @@ -147,7 +147,9 @@ #define DRM_MEM_CTXBITMAP 18 #define DRM_MEM_STUB 19 #define DRM_MEM_SGLISTS 20 -#define DRM_MEM_CTXLIST 21 +#define DRM_MEM_CTXLIST 21 +#define DRM_MEM_MM 22 +#define DRM_MEM_HASHTAB 23 #define DRM_MAX_CTXBITMAP (PAGE_SIZE * 8) @@ -533,6 +535,24 @@ typedef struct ati_pcigart_info { drm_local_map_t mapping; } drm_ati_pcigart_info; +/* + * Generic memory manager structs + */ + +typedef struct drm_mm_node { + struct list_head fl_entry; + struct list_head ml_entry; + int free; + unsigned long start; + unsigned long size; + void *private; +} drm_mm_node_t; + +typedef struct drm_mm { + drm_mm_node_t root_node; +} drm_mm_t; + + /** * DRM driver structure. This structure represent the common code for * a family of cards. There will one drm_device for each card present @@ -1017,6 +1037,19 @@ extern struct class_device *drm_sysfs_device_add(struct drm_sysfs_class *cs, drm_head_t * head); extern void drm_sysfs_device_remove(struct class_device *class_dev); +/* + * Basic memory manager support (drm_mm.c) + */ + +extern drm_mm_node_t * drm_mm_get_block(drm_mm_node_t * parent, unsigned long size, + unsigned alignment); +extern void drm_mm_put_block(drm_mm_t *mm, drm_mm_node_t *cur); +extern drm_mm_node_t *drm_mm_search_free(const drm_mm_t *mm, unsigned long size, + unsigned alignment, int best_match); +extern int drm_mm_init(drm_mm_t *mm, unsigned long start, unsigned long size); +extern void drm_mm_takedown(drm_mm_t *mm); + + /* Inline replacements for DRM_IOREMAP macros */ static __inline__ void drm_core_ioremap(struct drm_map *map, struct drm_device *dev) |