static void etna_device_del_impl(struct etna_device *dev) { etna_cleanup_bo_cache(dev, 0); drmHashDestroy(dev->handle_table); drmHashDestroy(dev->name_table); free(dev); }
static void fd_device_del_impl(struct fd_device *dev) { fd_cleanup_bo_cache(dev, 0); drmHashDestroy(dev->handle_table); drmHashDestroy(dev->name_table); if (dev->closefd) close(dev->fd); dev->funcs->destroy(dev); }
drm_public void drm_tegra_close(struct drm_tegra *drm) { if (!drm) return; drm_tegra_bo_cache_cleanup(drm, 0); drmHashDestroy(drm->handle_table); drmHashDestroy(drm->name_table); if (drm->close) close(drm->fd); free(drm); }
drm_public void omap_device_del(struct omap_device *dev) { if (!atomic_dec_and_test(&dev->refcnt)) return; pthread_mutex_lock(&table_lock); drmHashDestroy(dev->handle_table); drmHashDelete(dev_table, dev->fd); pthread_mutex_unlock(&table_lock); free(dev); }
void hash_destroy(struct locked_hash_table *table) { drmHashDestroy(table->table); }
int main(void) { HashTablePtr table; unsigned long i; int ret = 0; printf("\n***** 256 consecutive integers ****\n"); table = drmHashCreate(); for (i = 0; i < 256; i++) drmHashInsert(table, i, (void *)(i << 16 | i)); for (i = 0; i < 256; i++) ret |= check_table(table, i, (void *)(i << 16 | i)); compute_dist(table); drmHashDestroy(table); printf("\n***** 1024 consecutive integers ****\n"); table = drmHashCreate(); for (i = 0; i < 1024; i++) drmHashInsert(table, i, (void *)(i << 16 | i)); for (i = 0; i < 1024; i++) ret |= check_table(table, i, (void *)(i << 16 | i)); compute_dist(table); drmHashDestroy(table); printf("\n***** 1024 consecutive page addresses (4k pages) ****\n"); table = drmHashCreate(); for (i = 0; i < 1024; i++) drmHashInsert(table, i*4096, (void *)(i << 16 | i)); for (i = 0; i < 1024; i++) ret |= check_table(table, i*4096, (void *)(i << 16 | i)); compute_dist(table); drmHashDestroy(table); printf("\n***** 1024 random integers ****\n"); table = drmHashCreate(); srandom(0xbeefbeef); for (i = 0; i < 1024; i++) drmHashInsert(table, random(), (void *)(i << 16 | i)); srandom(0xbeefbeef); for (i = 0; i < 1024; i++) ret |= check_table(table, random(), (void *)(i << 16 | i)); srandom(0xbeefbeef); for (i = 0; i < 1024; i++) ret |= check_table(table, random(), (void *)(i << 16 | i)); compute_dist(table); drmHashDestroy(table); printf("\n***** 5000 random integers ****\n"); table = drmHashCreate(); srandom(0xbeefbeef); for (i = 0; i < 5000; i++) drmHashInsert(table, random(), (void *)(i << 16 | i)); srandom(0xbeefbeef); for (i = 0; i < 5000; i++) ret |= check_table(table, random(), (void *)(i << 16 | i)); srandom(0xbeefbeef); for (i = 0; i < 5000; i++) ret |= check_table(table, random(), (void *)(i << 16 | i)); compute_dist(table); drmHashDestroy(table); return ret; }