drm: Remove unused members from struct drm_open_hash

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Chris Wilson 2011-01-26 18:33:25 +00:00 committed by Dave Airlie
parent 4cb81ac202
commit 7811bddb66
2 changed files with 9 additions and 24 deletions

View File

@ -39,27 +39,18 @@
int drm_ht_create(struct drm_open_hash *ht, unsigned int order) int drm_ht_create(struct drm_open_hash *ht, unsigned int order)
{ {
unsigned int i; unsigned int size = 1 << order;
ht->size = 1 << order;
ht->order = order; ht->order = order;
ht->fill = 0;
ht->table = NULL; ht->table = NULL;
ht->use_vmalloc = ((ht->size * sizeof(*ht->table)) > PAGE_SIZE); if (size <= PAGE_SIZE / sizeof(*ht->table))
if (!ht->use_vmalloc) { ht->table = kcalloc(size, sizeof(*ht->table), GFP_KERNEL);
ht->table = kcalloc(ht->size, sizeof(*ht->table), GFP_KERNEL); else
} ht->table = vzalloc(size*sizeof(*ht->table));
if (!ht->table) {
ht->use_vmalloc = 1;
ht->table = vmalloc(ht->size*sizeof(*ht->table));
}
if (!ht->table) { if (!ht->table) {
DRM_ERROR("Out of memory for hash table\n"); DRM_ERROR("Out of memory for hash table\n");
return -ENOMEM; return -ENOMEM;
} }
for (i=0; i< ht->size; ++i) {
INIT_HLIST_HEAD(&ht->table[i]);
}
return 0; return 0;
} }
EXPORT_SYMBOL(drm_ht_create); EXPORT_SYMBOL(drm_ht_create);
@ -180,7 +171,6 @@ int drm_ht_remove_key(struct drm_open_hash *ht, unsigned long key)
list = drm_ht_find_key(ht, key); list = drm_ht_find_key(ht, key);
if (list) { if (list) {
hlist_del_init(list); hlist_del_init(list);
ht->fill--;
return 0; return 0;
} }
return -EINVAL; return -EINVAL;
@ -189,7 +179,6 @@ int drm_ht_remove_key(struct drm_open_hash *ht, unsigned long key)
int drm_ht_remove_item(struct drm_open_hash *ht, struct drm_hash_item *item) int drm_ht_remove_item(struct drm_open_hash *ht, struct drm_hash_item *item)
{ {
hlist_del_init(&item->head); hlist_del_init(&item->head);
ht->fill--;
return 0; return 0;
} }
EXPORT_SYMBOL(drm_ht_remove_item); EXPORT_SYMBOL(drm_ht_remove_item);
@ -197,10 +186,10 @@ EXPORT_SYMBOL(drm_ht_remove_item);
void drm_ht_remove(struct drm_open_hash *ht) void drm_ht_remove(struct drm_open_hash *ht)
{ {
if (ht->table) { if (ht->table) {
if (ht->use_vmalloc) if ((PAGE_SIZE / sizeof(*ht->table)) >> ht->order)
vfree(ht->table);
else
kfree(ht->table); kfree(ht->table);
else
vfree(ht->table);
ht->table = NULL; ht->table = NULL;
} }
} }

View File

@ -45,14 +45,10 @@ struct drm_hash_item {
}; };
struct drm_open_hash { struct drm_open_hash {
unsigned int size;
unsigned int order;
unsigned int fill;
struct hlist_head *table; struct hlist_head *table;
int use_vmalloc; u8 order;
}; };
extern int drm_ht_create(struct drm_open_hash *ht, unsigned int order); extern int drm_ht_create(struct drm_open_hash *ht, unsigned int order);
extern int drm_ht_insert_item(struct drm_open_hash *ht, struct drm_hash_item *item); extern int drm_ht_insert_item(struct drm_open_hash *ht, struct drm_hash_item *item);
extern int drm_ht_just_insert_please(struct drm_open_hash *ht, struct drm_hash_item *item, extern int drm_ht_just_insert_please(struct drm_open_hash *ht, struct drm_hash_item *item,