]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb/tdb_private.h
tdb2: fix tdb_summary reports
[ccan] / ccan / tdb / tdb_private.h
index 16f5d925c0954e2105ed63eeb969a45a374ad9cb..babf01bd836f20dfbe771b6926e911b52d118260 100644 (file)
@@ -72,7 +72,7 @@ typedef uint32_t tdb_len_t;
 typedef uint32_t tdb_off_t;
 
 #ifndef offsetof
-#define offsetof(t,f) ((unsigned int)&((t *)0)->f)
+#define offsetof(t,f) ((size_t)&((t *)0)->f)
 #endif
 
 #define TDB_MAGIC_FOOD "TDB file\n"
@@ -82,6 +82,7 @@ typedef uint32_t tdb_off_t;
 #define TDB_DEAD_MAGIC (0xFEE1DEAD)
 #define TDB_RECOVERY_MAGIC (0xf53bc0e7U)
 #define TDB_RECOVERY_INVALID_MAGIC (0x0)
+#define TDB_HASH_RWLOCK_MAGIC (0xbad1a51U)
 #define TDB_ALIGNMENT 4
 #define DEFAULT_HASH_SIZE 131
 #define FREELIST_TOP (sizeof(struct tdb_header))
@@ -176,10 +177,12 @@ struct tdb_header {
        char magic_food[32]; /* for /etc/magic */
        uint32_t version; /* version of the code */
        uint32_t hash_size; /* number of hash entries */
-       tdb_off_t hashcheck; /* 0 for default hash. */
+       tdb_off_t rwlocks; /* obsolete - kept to detect old formats */
        tdb_off_t recovery_start; /* offset of transaction recovery region */
        tdb_off_t sequence_number; /* used when TDB_SEQNUM is set */
-       tdb_off_t reserved[29];
+       uint32_t magic1_hash; /* hash of TDB_MAGIC_FOOD. */
+       uint32_t magic2_hash; /* hash of TDB_MAGIC. */
+       tdb_off_t reserved[27];
 };
 
 struct tdb_lock_type {
@@ -248,7 +251,6 @@ struct tdb_context {
 /*
   internal prototypes
 */
-uint32_t hashcheck(struct tdb_context *tdb);
 int tdb_munmap(struct tdb_context *tdb);
 void tdb_mmap(struct tdb_context *tdb);
 int tdb_lock(struct tdb_context *tdb, int list, int ltype);
@@ -299,6 +301,8 @@ void tdb_io_init(struct tdb_context *tdb);
 int tdb_expand(struct tdb_context *tdb, tdb_off_t size);
 int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off,
                      struct tdb_record *rec);
-
-
+void tdb_header_hash(struct tdb_context *tdb,
+                    uint32_t *magic1_hash, uint32_t *magic2_hash);
+unsigned int tdb_old_hash(TDB_DATA *key);
+size_t tdb_dead_space(struct tdb_context *tdb, tdb_off_t off);
 #endif