Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2a22e557
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看板
提交
2a22e557
编写于
8月 01, 2023
作者:
K
kailixu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: null pointer check for mutex on windows
上级
f78208c3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
36 addition
and
6 deletion
+36
-6
source/os/src/osThread.c
source/os/src/osThread.c
+36
-6
未找到文件。
source/os/src/osThread.c
浏览文件 @
2a22e557
...
...
@@ -17,6 +17,15 @@
#include <pthread.h>
#include "os.h"
#ifdef WINDOWS
#define THREAD_PTR_CHECK(p) \
do { \
if (!(p) || !(*(p))) return 0; \
} while (0);
#else
#define THREAD_PTR_CHECK(p)
#endif
int32_t
taosThreadCreate
(
TdThread
*
tid
,
const
TdThreadAttr
*
attr
,
void
*
(
*
start
)(
void
*
),
void
*
arg
)
{
return
pthread_create
(
tid
,
attr
,
start
,
arg
);
}
...
...
@@ -83,9 +92,13 @@ int32_t taosThreadCondSignal(TdThreadCond *cond) { return pthread_cond_signal(co
int32_t
taosThreadCondBroadcast
(
TdThreadCond
*
cond
)
{
return
pthread_cond_broadcast
(
cond
);
}
int32_t
taosThreadCondWait
(
TdThreadCond
*
cond
,
TdThreadMutex
*
mutex
)
{
return
pthread_cond_wait
(
cond
,
mutex
);
}
int32_t
taosThreadCondWait
(
TdThreadCond
*
cond
,
TdThreadMutex
*
mutex
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_cond_wait
(
cond
,
mutex
);
}
int32_t
taosThreadCondTimedWait
(
TdThreadCond
*
cond
,
TdThreadMutex
*
mutex
,
const
struct
timespec
*
abstime
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_cond_timedwait
(
cond
,
mutex
,
abstime
);
}
...
...
@@ -124,24 +137,37 @@ int32_t taosThreadKeyDelete(TdThreadKey key) { return pthread_key_delete(key); }
int32_t
taosThreadKill
(
TdThread
thread
,
int32_t
sig
)
{
return
pthread_kill
(
thread
,
sig
);
}
// int32_t taosThreadMutexConsistent(TdThreadMutex* mutex) {
// THREAD_PTR_CHECK(mutex)
// return pthread_mutex_consistent(mutex);
// }
int32_t
taosThreadMutexDestroy
(
TdThreadMutex
*
mutex
)
{
return
pthread_mutex_destroy
(
mutex
);
}
int32_t
taosThreadMutexDestroy
(
TdThreadMutex
*
mutex
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_mutex_destroy
(
mutex
);
}
int32_t
taosThreadMutexInit
(
TdThreadMutex
*
mutex
,
const
TdThreadMutexAttr
*
attr
)
{
return
pthread_mutex_init
(
mutex
,
attr
);
}
int32_t
taosThreadMutexLock
(
TdThreadMutex
*
mutex
)
{
return
pthread_mutex_lock
(
mutex
);
}
int32_t
taosThreadMutexLock
(
TdThreadMutex
*
mutex
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_mutex_lock
(
mutex
);
}
// int32_t taosThreadMutexTimedLock(TdThreadMutex * mutex, const struct timespec *abstime) {
// return pthread_mutex_timedlock(mutex, abstime);
// }
int32_t
taosThreadMutexTryLock
(
TdThreadMutex
*
mutex
)
{
return
pthread_mutex_trylock
(
mutex
);
}
int32_t
taosThreadMutexTryLock
(
TdThreadMutex
*
mutex
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_mutex_trylock
(
mutex
);
}
int32_t
taosThreadMutexUnlock
(
TdThreadMutex
*
mutex
)
{
return
pthread_mutex_unlock
(
mutex
);
}
int32_t
taosThreadMutexUnlock
(
TdThreadMutex
*
mutex
)
{
THREAD_PTR_CHECK
(
mutex
)
return
pthread_mutex_unlock
(
mutex
);
}
int32_t
taosThreadMutexAttrDestroy
(
TdThreadMutexAttr
*
attr
)
{
return
pthread_mutexattr_destroy
(
attr
);
}
...
...
@@ -224,6 +250,7 @@ int32_t taosThreadSetSchedParam(TdThread thread, int32_t policy, const struct sc
int32_t
taosThreadSetSpecific
(
TdThreadKey
key
,
const
void
*
value
)
{
return
pthread_setspecific
(
key
,
value
);
}
int32_t
taosThreadSpinDestroy
(
TdThreadSpinlock
*
lock
)
{
THREAD_PTR_CHECK
(
lock
)
#ifdef TD_USE_SPINLOCK_AS_MUTEX
return
pthread_mutex_destroy
((
pthread_mutex_t
*
)
lock
);
#else
...
...
@@ -242,6 +269,7 @@ int32_t taosThreadSpinInit(TdThreadSpinlock *lock, int32_t pshared) {
}
int32_t
taosThreadSpinLock
(
TdThreadSpinlock
*
lock
)
{
THREAD_PTR_CHECK
(
lock
)
#ifdef TD_USE_SPINLOCK_AS_MUTEX
return
pthread_mutex_lock
((
pthread_mutex_t
*
)
lock
);
#else
...
...
@@ -250,6 +278,7 @@ int32_t taosThreadSpinLock(TdThreadSpinlock *lock) {
}
int32_t
taosThreadSpinTrylock
(
TdThreadSpinlock
*
lock
)
{
THREAD_PTR_CHECK
(
lock
)
#ifdef TD_USE_SPINLOCK_AS_MUTEX
return
pthread_mutex_trylock
((
pthread_mutex_t
*
)
lock
);
#else
...
...
@@ -258,6 +287,7 @@ int32_t taosThreadSpinTrylock(TdThreadSpinlock *lock) {
}
int32_t
taosThreadSpinUnlock
(
TdThreadSpinlock
*
lock
)
{
THREAD_PTR_CHECK
(
lock
)
#ifdef TD_USE_SPINLOCK_AS_MUTEX
return
pthread_mutex_unlock
((
pthread_mutex_t
*
)
lock
);
#else
...
...
@@ -267,4 +297,4 @@ int32_t taosThreadSpinUnlock(TdThreadSpinlock *lock) {
void
taosThreadTestCancel
(
void
)
{
return
pthread_testcancel
();
}
void
taosThreadClear
(
TdThread
*
thread
)
{
memset
(
thread
,
0
,
sizeof
(
TdThread
));
}
\ No newline at end of file
void
taosThreadClear
(
TdThread
*
thread
)
{
memset
(
thread
,
0
,
sizeof
(
TdThread
));
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录