tdbPgCache.h 1.3 KB
Newer Older
H
Hongze Cheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * This program is free software: you can use, redistribute, and/or modify
 * it under the terms of the GNU Affero General Public License, version 3
 * or later ("AGPL"), as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

H
Hongze Cheng 已提交
16 17
#ifndef _TD_PAGE_CACHE_H_
#define _TD_PAGE_CACHE_H_
H
Hongze Cheng 已提交
18 19 20 21 22

#ifdef __cplusplus
extern "C" {
#endif

H
Hongze Cheng 已提交
23 24 25 26
typedef struct SPgCache SPgCache;
typedef struct SPage    SPage;

// SPgCache
H
Hongze Cheng 已提交
27
int pgCacheOpen(SPgCache **ppPgCache, TENV *pEnv);
H
Hongze Cheng 已提交
28
int pgCacheClose(SPgCache *pPgCache);
H
Hongze Cheng 已提交
29

H
Hongze Cheng 已提交
30
SPage *pgCacheFetch(SPgCache *pPgCache, pgid_t pgid);
H
Hongze Cheng 已提交
31 32 33
int    pgCacheRelease(SPage *pPage);

// SPage
H
Hongze Cheng 已提交
34 35 36 37 38 39 40 41 42
typedef TD_DLIST_NODE(SPage) SPgListNode;
struct SPage {
  pgid_t      pgid;      // page id
  frame_id_t  frameid;   // frame id
  uint8_t *   pData;     // real data
  SPgListNode freeNode;  // for SPgCache.freeList
  SPgListNode pghtNode;  // for pght
  SPgListNode lruNode;   // for LRU
};
H
Hongze Cheng 已提交
43

H
Hongze Cheng 已提交
44 45 46 47
#ifdef __cplusplus
}
#endif

H
Hongze Cheng 已提交
48
#endif /*_TD_PAGE_CACHE_H_*/