X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb%2Ftdb_private.h;h=b6eae478736696541d0767f5a90a529ba5b1d459;hp=e3ec695642d06263e79c62e8ed7ce98a5505ebb8;hb=c5316eef05ab024c44224a165282e8df8ad30285;hpb=e1f11b7b1e39ceb092155ba742b34f0785d88d06 diff --git a/ccan/tdb/tdb_private.h b/ccan/tdb/tdb_private.h index e3ec6956..b6eae478 100644 --- a/ccan/tdb/tdb_private.h +++ b/ccan/tdb/tdb_private.h @@ -49,6 +49,8 @@ #endif #include "tdb.h" +#define TDB_TRACE 1 + #if HAVE_GETPAGESIZE #define getpagesize() 0x2000 #endif @@ -87,15 +89,34 @@ typedef uint32_t tdb_off_t; #define TDB_LOG(x) tdb->log.log_fn x #ifdef TDB_TRACE -void tdb_trace(const struct tdb_context *tdb, const char *fmt, ...); -void tdb_trace_record(const struct tdb_context *tdb, TDB_DATA rec); +void tdb_trace(struct tdb_context *tdb, const char *op); +void tdb_trace_seqnum(struct tdb_context *tdb, uint32_t seqnum, const char *op); +void tdb_trace_open(struct tdb_context *tdb, const char *op, + unsigned hash_size, unsigned tdb_flags, unsigned open_flags); +void tdb_trace_ret(struct tdb_context *tdb, const char *op, int ret); +void tdb_trace_retrec(struct tdb_context *tdb, const char *op, TDB_DATA ret); +void tdb_trace_1rec(struct tdb_context *tdb, const char *op, + TDB_DATA rec); +void tdb_trace_1rec_ret(struct tdb_context *tdb, const char *op, + TDB_DATA rec, int ret); +void tdb_trace_1rec_retrec(struct tdb_context *tdb, const char *op, + TDB_DATA rec, TDB_DATA ret); +void tdb_trace_2rec_flag_ret(struct tdb_context *tdb, const char *op, + TDB_DATA rec1, TDB_DATA rec2, unsigned flag, + int ret); +void tdb_trace_2rec_retrec(struct tdb_context *tdb, const char *op, + TDB_DATA rec1, TDB_DATA rec2, TDB_DATA ret); #else -static inline void tdb_trace(const struct tdb_context *tdb, const char *fmt, ...) -{ -} -static inline void tdb_trace_record(const struct tdb_context *tdb, TDB_DATA rec) -{ -} +#define tdb_trace(tdb, op) +#define tdb_trace_seqnum(tdb, seqnum, op) +#define tdb_trace_open(tdb, op, hash_size, tdb_flags, open_flags) +#define tdb_trace_ret(tdb, op, ret) +#define tdb_trace_retrec(tdb, op, ret) +#define tdb_trace_1rec(tdb, op, rec) +#define tdb_trace_1rec_ret(tdb, op, rec, ret) +#define tdb_trace_1rec_retrec(tdb, op, rec, ret) +#define tdb_trace_2rec_flag_ret(tdb, op, rec1, rec2, flag, ret) +#define tdb_trace_2rec_retrec(tdb, op, rec1, rec2, ret) #endif /* !TDB_TRACE */ /* lock offsets */ @@ -196,8 +217,11 @@ struct tdb_context { struct tdb_transaction *transaction; int page_size; int max_dead_records; - bool have_transaction_lock; + int transaction_lock_count; +#ifdef TDB_TRACE int tracefd; + uint32_t transaction_prepare_seqnum; +#endif volatile sig_atomic_t *interrupt_sig_ptr; }; @@ -225,6 +249,7 @@ int tdb_ofs_read(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); int tdb_ofs_write(struct tdb_context *tdb, tdb_off_t offset, tdb_off_t *d); int tdb_lock_record(struct tdb_context *tdb, tdb_off_t off); int tdb_unlock_record(struct tdb_context *tdb, tdb_off_t off); +int tdb_transaction_cancel_internal(struct tdb_context *tdb); int tdb_rec_read(struct tdb_context *tdb, tdb_off_t offset, struct list_struct *rec); int tdb_rec_write(struct tdb_context *tdb, tdb_off_t offset, struct list_struct *rec); int tdb_do_delete(struct tdb_context *tdb, tdb_off_t rec_ptr, struct list_struct *rec);