From d7a127136f5cca2c5b49a48818290889be9c2432 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 14 Mar 2022 05:53:30 +0000 Subject: [PATCH] more TDB --- source/libs/tdb/src/db/tdbPage.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/source/libs/tdb/src/db/tdbPage.c b/source/libs/tdb/src/db/tdbPage.c index 5d68185e8c..a1e44fbab3 100644 --- a/source/libs/tdb/src/db/tdbPage.c +++ b/source/libs/tdb/src/db/tdbPage.c @@ -40,6 +40,27 @@ typedef struct __attribute__((__packed__)) { #define TDB_LPAGE_FREE_CELL_NXOFFSET_SET(PCELL, OFFSET) TDB_PUT_U24(((SFreeCellL *)(PCELL))[0].nxOffset, OFFSET) /* For page */ +#define TDB_PAGE_FREE_CELL_SIZE(PPAGE, PCELL) \ + (TDB_IS_LARGE_PAGE(pPage) ? TDB_LPAGE_FREE_CELL_SIZE(PCELL) : TDB_SPAGE_FREE_CELL_SIZE(PCELL)) +#define TDB_PAGE_FREE_CELL_NXOFFSET(PPAGE, PCELL) \ + (TDB_IS_LARGE_PAGE(pPage) ? TDB_LPAGE_FREE_CELL_NXOFFSET(PCELL) : TDB_SPAGE_FREE_CELL_NXOFFSET(PCELL)) + +#define TDB_PAGE_FREE_CELL_SIZE_SET(PPAGE, PCELL, SIZE) \ + do { \ + if (TDB_IS_LARGE_PAGE(PPAGE)) { \ + TDB_LPAGE_FREE_CELL_SIZE_SET(PCELL, SIZE); \ + } else { \ + TDB_SPAGE_FREE_CELL_SIZE_SET(PCELL, SIZE); \ + } \ + } while (0) +#define TDB_PAGE_FREE_CELL_NXOFFSET_SET(PPAGE, PCELL, OFFSET) \ + do { \ + if (TDB_IS_LARGE_PAGE(PPAGE)) { \ + TDB_LPAGE_FREE_CELL_NXOFFSET_SET(PCELL, OFFSET); \ + } else { \ + TDB_SPAGE_FREE_CELL_NXOFFSET_SET(PCELL, OFFSET); \ + } \ + } while (0) static int tdbPageAllocate(SPage *pPage, int size, SCell **ppCell); static int tdbPageDefragment(SPage *pPage);