]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Changes in shared code that don't affect open-vm-tools functionality.
authorVMware, Inc <>
Thu, 22 Dec 2011 00:35:50 +0000 (16:35 -0800)
committerMarcelo Vanzin <mvanzin@vmware.com>
Thu, 22 Dec 2011 00:35:50 +0000 (16:35 -0800)
Signed-off-by: Marcelo Vanzin <mvanzin@vmware.com>
open-vm-tools/lib/include/hashTable.h

index 2ff54210739d743350033817a66c4152fb87a72e..69354594f66067a14dc4a5a7026193528ee167e3 100644 (file)
@@ -105,7 +105,7 @@ HashTable_Delete(HashTable  *hashTable,
 Bool
 HashTable_LookupAndDelete(HashTable  *hashTable,
                           const void *keyStr,
-                         void      **clientData);
+                          void      **clientData);
 
 void
 HashTable_Clear(HashTable *ht);
@@ -128,4 +128,44 @@ HashTable_ForEach(const HashTable          *ht,
                   HashTableForEachCallback  cb,
                   void                     *clientData);
 
+/*
+ * Specialize hash table that uses the callers data structure as its
+ * hash entry as well, the hash key being an address that must be unique.
+ */
+
+typedef struct PtrHashEntry
+{
+   struct PtrHashEntry  *next;
+   void                 *ptr;
+} PtrHashEntry;
+
+/*
+ * PTRHASH_CONTAINER - get the struct for this entry (like PtrHashEntry)
+ * @ptr: the &struct PtrHashEntry pointer.
+ * @type:   the type of the struct this is embedded in.
+ * @member: the name of the list struct within the struct.
+ */
+
+#define PTRHASH_CONTAINER(ptr, type, member) \
+   ((type *)((char *)(ptr) - offsetof(type, member)))
+
+typedef int (*PtrHashForEachCallback)(PtrHashEntry *entry,
+                                      const void *clientData);
+
+HashTable *PtrHash_Alloc(uint32 numBuckets);
+
+void PtrHash_Free(HashTable *hashTable);
+
+size_t PtrHash_GetNumElements(const HashTable *ht);
+
+int PtrHash_ForEach(const HashTable *ht,
+                    PtrHashForEachCallback cb,
+                    const void *clientData);
+
+PtrHashEntry *PtrHash_LookupAndDelete(HashTable *hashTable,
+                                      const void *ptr);
+
+Bool PtrHash_Insert(HashTable *hashTable,
+                    PtrHashEntry *entry);
+
 #endif