summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/hash.h
diff options
context:
space:
mode:
authorThomas Helland <[email protected]>2017-05-21 15:17:26 +0200
committerTimothy Arceri <[email protected]>2017-05-22 09:19:24 +1000
commit1575a8146a33bfddb2e498ce77fa0ca8f0f0c85e (patch)
tree27d65e1ee5cedafae5132b596118ea6f75814afc /src/mesa/main/hash.h
parentf203a9f7d1a7fc4cf41b35a477eb1f3699418fe3 (diff)
main: Move hashLockMutex/hashUnlockMutex to header and inline
Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/mesa/main/hash.h')
-rw-r--r--src/mesa/main/hash.h42
1 files changed, 40 insertions, 2 deletions
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);