Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e7b97be7
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e7b97be7
编写于
9月 27, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refact
上级
6c3b627e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
61 addition
and
10 deletion
+61
-10
include/util/amalloc.h
include/util/amalloc.h
+47
-0
include/util/tlockfree.h
include/util/tlockfree.h
+1
-1
source/server/vnode/CMakeLists.txt
source/server/vnode/CMakeLists.txt
+3
-2
source/server/vnode/inc/vnodeInt.h
source/server/vnode/inc/vnodeInt.h
+5
-4
source/server/vnode/inc/vnodeMemAllocator.h
source/server/vnode/inc/vnodeMemAllocator.h
+2
-0
source/server/vnode/src/vnodeWrite.c
source/server/vnode/src/vnodeWrite.c
+3
-3
未找到文件。
include/util/amalloc.h
0 → 100644
浏览文件 @
e7b97be7
/*
* 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/>.
*/
#ifndef _TD_AMALLOC_H_
#define _TD_AMALLOC_H_
#include "os.h"
#ifdef __cplusplus
extern
"C"
{
#endif
// Interfaces to implement
typedef
struct
{
void
*
(
*
malloc
)(
void
*
,
size_t
size
);
void
*
(
*
calloc
)(
void
*
,
size_t
nmemb
,
size_t
size
);
void
(
*
free
)(
void
*
ptr
,
size_t
size
);
// Do we need to set size in the allocated memory?
void
*
(
*
realloc
)(
void
*
ptr
,
size_t
size
);
}
SMemAllocatorIf
;
typedef
struct
{
void
*
impl
;
SMemAllocatorIf
interface
;
}
SMemAllocator
;
#define amalloc(allocator, size) (*((allocator)->interface.malloc))((allocator)->impl, size)
#define acalloc(allocator, nmemb, size) (*((allocator)->interface.calloc))((allocator)->impl, nmemb, size)
#define arealloc(allocator, ptr, size) (*((allocator)->interface.realloc))((allocator)->impl, ptr, size)
#define afree(allocator, ptr, size) (*((allocator)->interface.free))((allocator)->impl, ptr, size)
#ifdef __cplusplus
}
#endif
#endif
/*_TD_AMALLOC_H_*/
\ No newline at end of file
include/util/tlockfree.h
浏览文件 @
e7b97be7
...
...
@@ -71,7 +71,7 @@ typedef void (*_ref_fn_t)(const void* pObj);
// single writer multiple reader lock
typedef
int32_t
SRWLatch
;
typedef
volatile
int32_t
SRWLatch
;
void
taosInitRWLatch
(
SRWLatch
*
pLatch
);
void
taosWLockLatch
(
SRWLatch
*
pLatch
);
...
...
source/server/vnode/CMakeLists.txt
浏览文件 @
e7b97be7
...
...
@@ -14,6 +14,7 @@ target_link_libraries(
PUBLIC meta
PUBLIC tq
PUBLIC tsdb
PRIVATE os
PRIVATE common
PUBLIC os
PUBLIC common
PUBLIC util
)
\ No newline at end of file
source/server/vnode/inc/vnodeInt.h
浏览文件 @
e7b97be7
...
...
@@ -16,6 +16,7 @@
#ifndef _TD_VNODE_INT_H_
#define _TD_VNODE_INT_H_
#include "amalloc.h"
#include "tq.h"
#include "tsdb.h"
#include "meta.h"
...
...
@@ -25,10 +26,10 @@ extern "C" {
#endif
typedef
struct
SVnode
{
SMeta
*
pMeta
;
STsdb
*
pTsdb
;
STQ
*
pTQ
;
void
*
allocator
;
// TODO
SMeta
*
pMeta
;
STsdb
*
pTsdb
;
STQ
*
pTQ
;
SMemAllocator
*
allocator
;
}
SVnode
;
#ifdef __cplusplus
...
...
source/server/vnode/inc/vnodeMemAllocator.h
浏览文件 @
e7b97be7
...
...
@@ -16,6 +16,8 @@
#ifndef _TD_VNODE_MEM_ALLOCATOR_H_
#define _TD_VNODE_MEM_ALLOCATOR_H_
#include "amalloc.h"
#ifdef __cplusplus
extern
"C"
{
#endif
...
...
source/server/vnode/src/vnodeWrite.c
浏览文件 @
e7b97be7
...
...
@@ -20,14 +20,14 @@ int vnodeProcessSubmitReq(SVnode *pVnode, SSubmitReq *pReq, SSubmitRsp *pRsp) {
#if 1
void
*
pMem
=
NULL
;
if
((
pMem
=
a
M
alloc
(
pVnode
->
allocator
,
REQ_SIZE
(
pReq
)))
==
NULL
)
{
if
((
pMem
=
a
m
alloc
(
pVnode
->
allocator
,
REQ_SIZE
(
pReq
)))
==
NULL
)
{
// No more memory to allocate, schedule an async commit
// and continue
vnodeAsyncCommit
(
pVnode
);
// Reset allocator and allocat more
vnodeResetAllocator
(
pVnode
);
pMem
=
a
M
alloc
(
pVnode
->
allocator
,
REQ_SIZE
(
pReq
));
pMem
=
a
m
alloc
(
pVnode
->
allocator
,
REQ_SIZE
(
pReq
));
if
(
pMem
==
NULL
)
{
// TODO: handle the error
}
...
...
@@ -43,7 +43,7 @@ int vnodeProcessSubmitReq(SVnode *pVnode, SSubmitReq *pReq, SSubmitRsp *pRsp) {
SSubmitReqReader
reader
;
taosInitSubmitReqReader
(
&
reader
,
(
SSubmitReq
*
)
pMem
);
if
(
tsdbInsert
Data
(
(
SSubmitReq
*
)
pMem
)
<
0
)
{
if
(
tsdbInsert
(
pVnode
->
pTsdb
,
(
SSubmitReq
*
)
pMem
)
<
0
)
{
// TODO: handler error
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录