]>
Commit | Line | Data |
---|---|---|
92f1da4d UD |
1 | /*- |
2 | * See the file LICENSE for redistribution information. | |
3 | * | |
4 | * Copyright (c) 1996, 1997 | |
5 | * Sleepycat Software. All rights reserved. | |
6 | * | |
af69217f | 7 | * @(#)db_am.h 10.8 (Sleepycat) 1/8/98 |
92f1da4d UD |
8 | */ |
9 | #ifndef _DB_AM_H | |
10 | #define _DB_AM_H | |
11 | ||
12 | #define DB_ISBIG 0x01 | |
13 | #define DB_ADD_DUP 0x10 | |
14 | #define DB_REM_DUP 0x20 | |
15 | #define DB_ADD_BIG 0x30 | |
16 | #define DB_REM_BIG 0x40 | |
17 | #define DB_SPLITOLD 0x50 | |
18 | #define DB_SPLITNEW 0x60 | |
19 | ||
20 | /* | |
21 | * Standard initialization and shutdown macros for all recovery functions. | |
22 | * | |
23 | * Requires the following local variables: | |
24 | * | |
25 | * DB *file_dbp, *mdbp; | |
26 | * DB_MPOOLFILE *mpf; | |
27 | * int ret; | |
28 | */ | |
29 | #define REC_INTRO(func) { \ | |
30 | file_dbp = mdbp = NULL; \ | |
31 | if ((ret = func(dbtp->data, &argp)) != 0) \ | |
32 | goto out; \ | |
26b4d766 | 33 | if ((ret = __db_fileid_to_db(logp, &mdbp, argp->fileid)) != 0) {\ |
92f1da4d UD |
34 | if (ret == DB_DELETED) \ |
35 | ret = 0; \ | |
36 | goto out; \ | |
37 | } \ | |
38 | if (mdbp == NULL) \ | |
39 | goto out; \ | |
40 | if (F_ISSET(mdbp, DB_AM_THREAD)) { \ | |
41 | if ((ret = __db_gethandle(mdbp, \ | |
42 | mdbp->type == DB_HASH ? __ham_hdup : __bam_bdup, \ | |
43 | &file_dbp)) != 0) \ | |
44 | goto out; \ | |
45 | } else \ | |
46 | file_dbp = mdbp; \ | |
47 | F_SET(file_dbp, DB_AM_RECOVER); \ | |
48 | mpf = file_dbp->mpf; \ | |
49 | } | |
50 | #define REC_CLOSE { \ | |
51 | if (argp != NULL) \ | |
cc3fa755 | 52 | __db_free(argp); \ |
92f1da4d UD |
53 | if (file_dbp != NULL) { \ |
54 | F_CLR(file_dbp, DB_AM_RECOVER); \ | |
55 | if (F_ISSET(file_dbp, DB_AM_THREAD)) \ | |
56 | __db_puthandle(file_dbp); \ | |
57 | } \ | |
58 | return (ret); \ | |
59 | } | |
60 | ||
61 | /* | |
62 | * No-op versions of the same macros. | |
63 | */ | |
64 | #define REC_NOOP_INTRO(func) { \ | |
65 | if ((ret = func(dbtp->data, &argp)) != 0) \ | |
66 | return (ret); \ | |
67 | } | |
68 | #define REC_NOOP_CLOSE { \ | |
69 | if (argp != NULL) \ | |
cc3fa755 | 70 | __db_free(argp); \ |
92f1da4d UD |
71 | return (ret); \ |
72 | } | |
73 | ||
74 | /* | |
75 | * Standard debugging macro for all recovery functions. | |
76 | */ | |
77 | #ifdef DEBUG_RECOVER | |
78 | #define REC_PRINT(func) \ | |
79 | (void)func(logp, dbtp, lsnp, redo, info); | |
80 | #else | |
81 | #define REC_PRINT(func) \ | |
af69217f | 82 | COMPQUIET(info, NULL); |
92f1da4d UD |
83 | #endif |
84 | ||
85 | #include "db_auto.h" | |
86 | #include "db_ext.h" | |
87 | #endif |