X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftdb_private.h;h=babf01bd836f20dfbe771b6926e911b52d118260;hp=228e8dcf9b09eaedf64fd166b8a683deb50070a0;hb=87d99348a110a52fbc6e225b360e566fc474956a;hpb=6dbbd0b7fd9c79c14d9c8a985373dcccbba218c4 diff --git a/ccan/tdb/tdb_private.h b/ccan/tdb/tdb_private.h index 228e8dcf..babf01bd 100644 --- a/ccan/tdb/tdb_private.h +++ b/ccan/tdb/tdb_private.h @@ -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)) @@ -179,7 +180,9 @@ struct tdb_header { 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 { @@ -298,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