]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/private.h
tdb2: use ccan/endian
[ccan] / ccan / tdb2 / private.h
index 306cb3ff467f70397fbcd91709a285c34e9e9de8..1650cf833d7988599e1d73e55181ed9317bbb1c6 100644 (file)
@@ -19,6 +19,9 @@
 */
 
 #include "config.h"
+#if HAVE_FILE_OFFSET_BITS
+#define _FILE_OFFSET_BITS 64
+#endif
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -35,9 +38,7 @@
 #include <ccan/tdb2/tdb2.h>
 #include <ccan/likely/likely.h>
 #include <ccan/compiler/compiler.h>
-#if HAVE_BYTESWAP_H
-#include <byteswap.h>
-#endif
+#include <ccan/endian/endian.h>
 
 #ifndef TEST_IT
 #define TEST_IT(cond)
@@ -134,20 +135,6 @@ typedef int tdb_bool_err;
 /* Indicates this entry is not on an flist (can happen during coalescing) */
 #define TDB_FTABLE_NONE ((1ULL << TDB_OFF_UPPER_STEAL) - 1)
 
-#if !HAVE_BSWAP_64
-static inline uint64_t bswap_64(uint64_t x)
-{
-       return (((x&0x000000FFULL)<<56)
-               | ((x&0x0000FF00ULL)<<48)
-               | ((x&0x00FF0000ULL)<<40)
-               | ((x&0xFF000000ULL)<<32)
-               | ((x>>8)&0xFF000000ULL)
-               | ((x>>16)&0x00FF0000ULL)
-               | ((x>>24)&0x0000FF00ULL)
-               | ((x>>32)&0x000000FFULL));
-}
-#endif
-
 struct tdb_used_record {
        /* For on-disk compatibility, we avoid bitfields:
           magic: 16,        (highest)
@@ -219,7 +206,7 @@ static inline unsigned frec_ftable(const struct tdb_free_record *f)
 
 struct tdb_recovery_record {
        uint64_t magic;
-       /* Length of record. */
+       /* Length of record (add this header to get total length). */
        uint64_t max_len;
        /* Length used. */
        uint64_t len;
@@ -358,9 +345,6 @@ struct tdb_context {
        /* mmap read only? */
        int mmap_flags;
 
-       /* Error code for last tdb error. */
-       enum TDB_ERROR ecode;
-
        /* the flags passed to tdb_open, for tdb_reopen. */
        uint32_t flags;
 
@@ -391,7 +375,8 @@ struct tdb_context {
        /* IO methods: changes for transactions. */
        const struct tdb_methods *methods;
 
-       struct tdb_attribute_stats *stats;
+       /* Our statistics. */
+       struct tdb_attribute_stats stats;
 
        /* Direct access information */
        struct tdb_access_hdr *access;
@@ -464,7 +449,9 @@ tdb_off_t alloc(struct tdb_context *tdb, size_t keylen, size_t datalen,
 
 /* Put this record in a free list. */
 enum TDB_ERROR add_free_record(struct tdb_context *tdb,
-                              tdb_off_t off, tdb_len_t len_with_header);
+                              tdb_off_t off, tdb_len_t len_with_header,
+                              enum tdb_lock_flags waitflag,
+                              bool coalesce_ok);
 
 /* Set up header for a used/ftable/htable/chain record. */
 enum TDB_ERROR set_header(struct tdb_context *tdb,
@@ -535,14 +522,6 @@ enum TDB_ERROR tdb_read_convert(struct tdb_context *tdb, tdb_off_t off,
 /* Bump the seqnum (caller checks for tdb->flags & TDB_SEQNUM) */
 void tdb_inc_seqnum(struct tdb_context *tdb);
 
-/* Adds a stat, if it's in range. */
-void add_stat_(struct tdb_context *tdb, uint64_t *stat, size_t val);
-#define add_stat(tdb, statname, val)                                   \
-       do {                                                            \
-               if (unlikely((tdb)->stats))                             \
-                       add_stat_((tdb), &(tdb)->stats->statname, (val)); \
-       } while (0)
-
 /* lock.c: */
 /* Lock/unlock a range of hashes. */
 enum TDB_ERROR tdb_lock_hashes(struct tdb_context *tdb,
@@ -575,8 +554,8 @@ enum TDB_ERROR tdb_allrecord_upgrade(struct tdb_context *tdb);
 
 /* Serialize db open. */
 enum TDB_ERROR tdb_lock_open(struct tdb_context *tdb,
-                            enum tdb_lock_flags flags);
-void tdb_unlock_open(struct tdb_context *tdb);
+                            int ltype, enum tdb_lock_flags flags);
+void tdb_unlock_open(struct tdb_context *tdb, int ltype);
 bool tdb_has_open_lock(struct tdb_context *tdb);
 
 /* Serialize db expand. */