From 1575a8146a33bfddb2e498ce77fa0ca8f0f0c85e Mon Sep 17 00:00:00 2001 From: Thomas Helland Date: Sun, 21 May 2017 15:17:26 +0200 Subject: main: Move hashLockMutex/hashUnlockMutex to header and inline Reviewed-by: Timothy Arceri --- src/mesa/main/hash.h | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'src/mesa/main/hash.h') diff --git a/src/mesa/main/hash.h b/src/mesa/main/hash.h index 9eb0f0eac6c..b44959eb13e 100644 --- a/src/mesa/main/hash.h +++ b/src/mesa/main/hash.h @@ -33,8 +33,21 @@ #include "glheader.h" +#include "imports.h" +/** + * The hash table data structure. + */ +struct _mesa_HashTable { + struct hash_table *ht; + GLuint MaxKey; /**< highest key inserted so far */ + mtx_t Mutex; /**< mutual exclusion lock */ + GLboolean InDeleteAll; /**< Debug check */ + /** Value that would be in the table for DELETED_KEY_VALUE. */ + void *deleted_key_data; +}; + extern struct _mesa_HashTable *_mesa_NewHashTable(void); extern void _mesa_DeleteHashTable(struct _mesa_HashTable *table); @@ -45,9 +58,34 @@ extern void _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *da extern void _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key); -extern void _mesa_HashLockMutex(struct _mesa_HashTable *table); +/** + * Lock the hash table mutex. + * + * This function should be used when multiple objects need + * to be looked up in the hash table, to avoid having to lock + * and unlock the mutex each time. + * + * \param table the hash table. + */ +static inline void +_mesa_HashLockMutex(struct _mesa_HashTable *table) +{ + assert(table); + mtx_lock(&table->Mutex); +} + -extern void _mesa_HashUnlockMutex(struct _mesa_HashTable *table); +/** + * Unlock the hash table mutex. + * + * \param table the hash table. + */ +static inline void +_mesa_HashUnlockMutex(struct _mesa_HashTable *table) +{ + assert(table); + mtx_unlock(&table->Mutex); +} extern void *_mesa_HashLookupLocked(struct _mesa_HashTable *table, GLuint key); -- cgit v1.2.3