+++ /dev/null
-/*
- * Written by Josh Dybnis and released to the public domain, as explained at
- * http://creativecommons.org/licenses/publicdomain
- */
-#ifndef HT_H
-#define HT_H
-
-#include "struct.h"
-
-#define HT_EXPECT_NOT_EXISTS ( 0)
-#define HT_EXPECT_EXISTS (-1)
-#define HT_EXPECT_WHATEVER (-2)
-
-typedef struct hash_table_i *hash_table_t;
-
-hash_table_t *ht_alloc (void);
-void ht_free (hash_table_t *ht);
-uint64_t ht_get (hash_table_t *ht, const char *key, uint32_t len);
-uint64_t ht_compare_and_set (hash_table_t *ht, const char *key, uint32_t key_len, uint64_t expected_val, uint64_t val);
-uint64_t ht_remove (hash_table_t *ht, const char *key, uint32_t len);
-uint64_t ht_count (hash_table_t *ht);
-
-#endif//HT_H
#define DOES_NOT_EXIST 0
+#define HT_EXPECT_NOT_EXISTS ( 0)
+#define HT_EXPECT_EXISTS (-1)
+#define HT_EXPECT_WHATEVER (-2)
+
+typedef struct hash_table_i *hash_table_t;
+
+hash_table_t *ht_alloc (void);
+void ht_free (hash_table_t *ht);
+uint64_t ht_get (hash_table_t *ht, const char *key, uint32_t len);
+uint64_t ht_compare_and_set (hash_table_t *ht, const char *key, uint32_t key_len, uint64_t expected_val, uint64_t val);
+uint64_t ht_remove (hash_table_t *ht, const char *key, uint32_t len);
+uint64_t ht_count (hash_table_t *ht);
+
#endif//STRUCT_H
*/
#ifndef TXN_H
#define TXN_H
-#include "ht.h"
+#include "struct.h"
typedef enum { TXN_READ_WRITE, TXN_READ_ONLY, TXN_BLIND_WRITE } txn_access_t;
typedef enum { TXN_DIRTY_READ, TXN_READ_COMMITTED, TXN_REPEATABLE_READ } txn_isolation_t;
rcu_test_SRCS := $(TEST_SRCS)
list_test_SRCS := $(TEST_SRCS) struct/list.c
skiplist_test_SRCS := $(TEST_SRCS) struct/skiplist.c
-ht_test_SRCS := $(TEST_SRCS) struct/ht.c test/ht_test.c test/CuTest.c
-txn_test_SRCS := $(TEST_SRCS) struct/ht.c txn/txn.c
+ht_test_SRCS := $(TEST_SRCS) struct/hashtable.c test/ht_test.c test/CuTest.c
+txn_test_SRCS := $(TEST_SRCS) struct/hashtable.c txn/txn.c
tests: $(TESTS)
*/
#include "common.h"
-#include "ht.h"
#include "murmur.h"
#include "mem.h"
#include "struct.h"
#include "runtime.h"
#include "CuTest.h"
#include "common.h"
-#include "ht.h"
+#include "struct.h"
#include "mem.h"
#include "lwt.h"
- investigate 16 byte CAS; ht can store GUIDs inline instead of pointers to actual keys
- test ht
+ optimize tracing code, still too much overhead
+- use NULL instead of a sentinal node in skiplist and list
+- make interfaces for all data structures consistent