Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
78cbb515
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
78cbb515
编写于
7月 06, 2022
作者:
wafwerar
提交者:
GitHub
7月 06, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14551 from taosdata/fix/ZhiqiangWang/TD-13063-add-file-auto-del-func
os: add file auto del func
上级
eafbaa63
55cf31a0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
43 addition
and
9 deletion
+43
-9
include/os/osMemory.h
include/os/osMemory.h
+1
-1
source/os/src/osFile.c
source/os/src/osFile.c
+39
-5
source/os/src/osMemory.c
source/os/src/osMemory.c
+3
-3
未找到文件。
include/os/osMemory.h
浏览文件 @
78cbb515
...
...
@@ -32,7 +32,7 @@ extern "C" {
void
*
taosMemoryMalloc
(
int32_t
size
);
void
*
taosMemoryCalloc
(
int32_t
num
,
int32_t
size
);
void
*
taosMemoryRealloc
(
void
*
ptr
,
int32_t
size
);
void
*
taosMemoryStrDup
(
void
*
ptr
);
void
*
taosMemoryStrDup
(
const
char
*
ptr
);
void
taosMemoryFree
(
void
*
ptr
);
int32_t
taosMemorySize
(
void
*
ptr
);
void
taosPrintBackTrace
();
...
...
source/os/src/osFile.c
浏览文件 @
78cbb515
...
...
@@ -58,6 +58,15 @@ typedef struct TdFile {
#define FILE_WITH_LOCK 1
typedef
struct
AutoDelFile
*
AutoDelFilePtr
;
typedef
struct
AutoDelFile
{
char
*
name
;
AutoDelFilePtr
lastAutoDelFilePtr
;
}
AutoDelFile
;
static
TdThreadMutex
autoDelFileLock
;
static
AutoDelFilePtr
nowAutoDelFilePtr
=
NULL
;
static
TdThreadOnce
autoDelFileInit
=
PTHREAD_ONCE_INIT
;
void
taosGetTmpfilePath
(
const
char
*
inputTmpDir
,
const
char
*
fileNamePrefix
,
char
*
dstPath
)
{
#ifdef WINDOWS
const
char
*
tdengineTmpFileNamePrefix
=
"tdengine-"
;
...
...
@@ -238,7 +247,33 @@ int32_t taosDevInoFile(TdFilePtr pFile, int64_t *stDev, int64_t *stIno) {
return
0
;
}
void
autoDelFileListAdd
(
const
char
*
path
)
{
return
;
}
void
autoDelFileList
()
{
taosThreadMutexLock
(
&
autoDelFileLock
);
while
(
nowAutoDelFilePtr
!=
NULL
)
{
taosRemoveFile
(
nowAutoDelFilePtr
->
name
);
AutoDelFilePtr
tmp
=
nowAutoDelFilePtr
->
lastAutoDelFilePtr
;
taosMemoryFree
(
nowAutoDelFilePtr
->
name
);
taosMemoryFree
(
nowAutoDelFilePtr
);
nowAutoDelFilePtr
=
tmp
;
}
taosThreadMutexUnlock
(
&
autoDelFileLock
);
taosThreadMutexDestroy
(
&
autoDelFileLock
);
}
void
autoDelFileListInit
()
{
taosThreadMutexInit
(
&
autoDelFileLock
,
NULL
);
atexit
(
autoDelFileList
);
}
void
autoDelFileListAdd
(
const
char
*
path
)
{
taosThreadOnce
(
&
autoDelFileInit
,
autoDelFileListInit
);
taosThreadMutexLock
(
&
autoDelFileLock
);
AutoDelFilePtr
tmp
=
taosMemoryMalloc
(
sizeof
(
AutoDelFile
));
tmp
->
lastAutoDelFilePtr
=
nowAutoDelFilePtr
;
tmp
->
name
=
taosMemoryStrDup
(
path
);
nowAutoDelFilePtr
=
tmp
;
taosThreadMutexUnlock
(
&
autoDelFileLock
);
}
TdFilePtr
taosOpenFile
(
const
char
*
path
,
int32_t
tdFileOptions
)
{
int
fd
=
-
1
;
...
...
@@ -283,10 +318,6 @@ TdFilePtr taosOpenFile(const char *path, int32_t tdFileOptions) {
}
}
if
(
tdFileOptions
&
TD_FILE_AUTO_DEL
)
{
autoDelFileListAdd
(
path
);
}
TdFilePtr
pFile
=
(
TdFilePtr
)
taosMemoryMalloc
(
sizeof
(
TdFile
));
if
(
pFile
==
NULL
)
{
if
(
fd
>=
0
)
close
(
fd
);
...
...
@@ -299,6 +330,9 @@ TdFilePtr taosOpenFile(const char *path, int32_t tdFileOptions) {
pFile
->
fd
=
fd
;
pFile
->
fp
=
fp
;
pFile
->
refId
=
0
;
if
(
tdFileOptions
&
TD_FILE_AUTO_DEL
)
{
autoDelFileListAdd
(
path
);
}
return
pFile
;
}
...
...
source/os/src/osMemory.c
浏览文件 @
78cbb515
...
...
@@ -282,14 +282,14 @@ void *taosMemoryRealloc(void *ptr, int32_t size) {
#endif
}
void
*
taosMemoryStrDup
(
void
*
ptr
)
{
void
*
taosMemoryStrDup
(
const
char
*
ptr
)
{
#ifdef USE_TD_MEMORY
if
(
ptr
==
NULL
)
return
NULL
;
TdMemoryInfoPtr
pTdMemoryInfo
=
(
TdMemoryInfoPtr
)((
char
*
)
ptr
-
sizeof
(
TdMemoryInfo
));
assert
(
pTdMemoryInfo
->
symbol
==
TD_MEMORY_SYMBOL
);
void
*
tmp
=
tstrdup
(
(
const
char
*
)
pTdMemoryInfo
);
void
*
tmp
=
tstrdup
(
pTdMemoryInfo
);
if
(
tmp
==
NULL
)
return
NULL
;
memcpy
(
tmp
,
pTdMemoryInfo
,
sizeof
(
TdMemoryInfo
));
...
...
@@ -297,7 +297,7 @@ void *taosMemoryStrDup(void *ptr) {
return
(
char
*
)
tmp
+
sizeof
(
TdMemoryInfo
);
#else
return
tstrdup
(
(
const
char
*
)
ptr
);
return
tstrdup
(
ptr
);
#endif
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录