From 54ea7920b24c7717a5d97089385661291737155f Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Tue, 13 Aug 2013 10:31:11 -0300 Subject: [PATCH] Dump hashes --- libkmod/libkmod-hash.c | 31 +++++++++++++++++++++++++++++++ libkmod/libkmod-hash.h | 3 +++ tools/depmod.c | 4 ++++ 3 files changed, 38 insertions(+) diff --git a/libkmod/libkmod-hash.c b/libkmod/libkmod-hash.c index dfe596f..58918b4 100644 --- a/libkmod/libkmod-hash.c +++ b/libkmod/libkmod-hash.c @@ -330,6 +330,37 @@ int hash_add(struct hash *hash, const char *key, const void *value) return 0; } +void hash_dump(struct hash *hash) +{ + unsigned int i _unused_; + + fprintf(stderr, "#####\n"); + fprintf(stderr, "%p %d %u\n", hash, hash->count, hash->n_buckets); + fprintf(stderr, "#####\n"); + for (i = 0; i < hash->n_buckets; i++) { + struct hash_bucket *bucket = hash->buckets + i; + fprintf(stderr, "%u %d\n", i, bucket->used); + } + fprintf(stderr, "#####\n"); + hash_dump_keys(hash); + fprintf(stderr, "#####\n"); +} + +void hash_dump_keys(struct hash *hash) +{ + unsigned int i; + + for (i = 0; i < hash->n_buckets; i++) { + struct hash_bucket *bucket = hash->buckets + i; + struct hash_entry *entry, *entry_end; + + entry = bucket->entries; + entry_end = entry + bucket->used; + for (; entry < entry_end; entry++) + fprintf(stderr, "%s\n", entry->key); + } +} + /* similar to hash_add(), but fails if key already exists */ int hash_add_unique(struct hash *hash, const char *key, const void *value) { diff --git a/libkmod/libkmod-hash.h b/libkmod/libkmod-hash.h index ca0af05..09c536c 100644 --- a/libkmod/libkmod-hash.h +++ b/libkmod/libkmod-hash.h @@ -20,3 +20,6 @@ unsigned int hash_get_count(const struct hash *hash); void hash_iter_init(const struct hash *hash, struct hash_iter *iter); bool hash_iter_next(struct hash_iter *iter, const char **key, const void **value); + +void hash_dump(struct hash *hash); +void hash_dump_keys(struct hash *hash); diff --git a/tools/depmod.c b/tools/depmod.c index b1b5874..4b6ca5b 100644 --- a/tools/depmod.c +++ b/tools/depmod.c @@ -1032,6 +1032,10 @@ static void depmod_shutdown(struct depmod *depmod) { size_t i; + hash_dump(depmod->symbols); + hash_dump(depmod->modules_by_name); + hash_dump(depmod->modules_by_uncrelpath); + hash_free(depmod->symbols); hash_free(depmod->modules_by_uncrelpath);