diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/debug.h')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/db/debug.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/debug.h b/debian/htdig/htdig-3.2.0b6/db/debug.h new file mode 100644 index 00000000..02077a04 --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/db/debug.h @@ -0,0 +1,84 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1998, 1999 + * Sleepycat Software. All rights reserved. + * + * @(#)debug.h 11.8 (Sleepycat) 11/8/99 + */ + +/* + * When running with #DIAGNOSTIC defined, we smash memory and do memory + * guarding with a special byte value. + */ +#define CLEAR_BYTE 0xdb +#define GUARD_BYTE 0xdc + +/* + * DB assertions. + */ +#ifdef DIAGNOSTIC +#define DB_ASSERT(e) ((e) ? (void)0 : __db_assert(#e, __FILE__, __LINE__)) +#else +#define DB_ASSERT(e) ((void)0) +#endif + +/* + * Debugging macro to log operations. + * If DEBUG_WOP is defined, log operations that modify the database. + * If DEBUG_ROP is defined, log operations that read the database. + * + * D dbp + * T txn + * O operation (string) + * K key + * A data + * F flags + */ +#define LOG_OP(C, T, O, K, A, F) { \ + DB_LSN __lsn; \ + DBT __op; \ + if (DB_LOGGING((C))) { \ + memset(&__op, 0, sizeof(__op)); \ + __op.data = O; \ + __op.size = strlen(O) + 1; \ + (void)CDB___db_debug_log((C)->dbp->dbenv, \ + T, &__lsn, 0, &__op, (C)->dbp->log_fileid, K, A, F);\ + } \ +} +#ifdef DEBUG_ROP +#define DEBUG_LREAD(C, T, O, K, A, F) LOG_OP(C, T, O, K, A, F) +#else +#define DEBUG_LREAD(C, T, O, K, A, F) +#endif +#ifdef DEBUG_WOP +#define DEBUG_LWRITE(C, T, O, K, A, F) LOG_OP(C, T, O, K, A, F) +#else +#define DEBUG_LWRITE(C, T, O, K, A, F) +#endif + +/* + * Hook for testing recovery at various places in the create/delete paths. + */ +#if CONFIG_TEST +#define DB_TEST_RECOVERY(dbp, val, ret, name) \ +do { \ + int __ret; \ + PANIC_CHECK((dbp)->dbenv); \ + if ((dbp)->dbenv->test_copy == (val)) { \ + /* COPY the FILE */ \ + (void)(dbp)->sync((dbp), 0); \ + if ((__ret = __db_testcopy((dbp), (name))) != 0) \ + (ret) = CDB___db_panic((dbp)->dbenv, __ret); \ + } \ + if ((dbp)->dbenv->test_abort == (val)) { \ + /* ABORT the TXN */ \ + (ret) = EINVAL; \ + goto db_tr_err; \ + } \ +} while (0) +#define DB_TEST_RECOVERY_LABEL db_tr_err: +#else +#define DB_TEST_RECOVERY(dbp, val, ret, name) +#define DB_TEST_RECOVERY_LABEL +#endif |