Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d012c3eb
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
Star
22015
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看板
提交
d012c3eb
编写于
7月 30, 2020
作者:
S
slguan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-992] cmake file for darwin
上级
a6a0c408
变更
24
显示空白变更内容
内联
并排
Showing
24 changed file
with
473 addition
and
639 deletion
+473
-639
CMakeLists.txt
CMakeLists.txt
+10
-1
cmake/platform.inc
cmake/platform.inc
+8
-6
src/common/src/tglobal.c
src/common/src/tglobal.c
+1
-1
src/os/inc/osDarwin64.h
src/os/inc/osDarwin64.h
+11
-176
src/os/inc/osLinux32.h
src/os/inc/osLinux32.h
+6
-1
src/os/inc/osSpec.h
src/os/inc/osSpec.h
+18
-9
src/os/src/darwin64/CMakeLists.txt
src/os/src/darwin64/CMakeLists.txt
+6
-9
src/os/src/darwin64/darwinCoredump.c
src/os/src/darwin64/darwinCoredump.c
+19
-0
src/os/src/darwin64/darwinEnv.c
src/os/src/darwin64/darwinEnv.c
+4
-4
src/os/src/darwin64/darwinFileOp.c
src/os/src/darwin64/darwinFileOp.c
+67
-0
src/os/src/darwin64/darwinPlatform.c
src/os/src/darwin64/darwinPlatform.c
+0
-370
src/os/src/darwin64/darwinSem.c
src/os/src/darwin64/darwinSem.c
+47
-0
src/os/src/darwin64/darwinSocket.c
src/os/src/darwin64/darwinSocket.c
+36
-0
src/os/src/darwin64/darwinSysInfo.c
src/os/src/darwin64/darwinSysInfo.c
+106
-0
src/os/src/darwin64/darwinTimer.c
src/os/src/darwin64/darwinTimer.c
+43
-0
src/os/src/darwin64/darwinUtil.c
src/os/src/darwin64/darwinUtil.c
+22
-0
src/os/src/detail/osDir.c
src/os/src/detail/osDir.c
+1
-1
src/os/src/detail/osFileOp.c
src/os/src/detail/osFileOp.c
+23
-19
src/os/src/detail/osSocket.c
src/os/src/detail/osSocket.c
+8
-4
src/os/src/detail/osSysinfo.c
src/os/src/detail/osSysinfo.c
+2
-2
src/os/src/detail/osTimer.c
src/os/src/detail/osTimer.c
+29
-30
src/os/src/linux64/CMakeLists.txt
src/os/src/linux64/CMakeLists.txt
+0
-1
src/query/src/qTsbuf.c
src/query/src/qTsbuf.c
+1
-5
src/util/inc/talgo.h
src/util/inc/talgo.h
+5
-0
未找到文件。
CMakeLists.txt
浏览文件 @
d012c3eb
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.8
)
PROJECT
(
TDengine
)
IF
(
CMAKE_VERSION VERSION_LESS 3.0
)
PROJECT
(
TDengine CXX
)
SET
(
PROJECT_VERSION_MAJOR
"
${
LIB_MAJOR_VERSION
}
"
)
SET
(
PROJECT_VERSION_MINOR
"
${
LIB_MINOR_VERSION
}
"
)
SET
(
PROJECT_VERSION_PATCH
"
${
LIB_PATCH_VERSION
}
"
)
SET
(
PROJECT_VERSION
"
${
LIB_VERSION_STRING
}
"
)
ELSE
()
CMAKE_POLICY
(
SET CMP0048 NEW
)
PROJECT
(
TDengine VERSION
"
${
LIB_VERSION_STRING
}
"
LANGUAGES CXX
)
ENDIF
()
SET
(
TD_ACCOUNT FALSE
)
SET
(
TD_ADMIN FALSE
)
...
...
cmake/platform.inc
浏览文件 @
d012c3eb
...
...
@@ -52,14 +52,16 @@ ELSE ()
MESSAGE
(
STATUS
"input cpuType unknown "
$
{
CPUTYPE
})
ENDIF
()
#
# Get OS information and store in variable TD_OS_INFO.
#
execute_process
(
COMMAND
chmod
777
$
{
TD_COMMUNITY_DIR
}
/
packaging
/
tools
/
get_os
.
sh
)
execute_process
(
COMMAND
$
{
TD_COMMUNITY_DIR
}
/
packaging
/
tools
/
get_os
.
sh
""
OUTPUT_VARIABLE
TD_OS_INFO
)
MESSAGE
(
STATUS
"The current os is "
$
{
TD_OS_INFO
})
IF
(
$
{
CMAKE_SYSTEM_NAME
}
MATCHES
"Linux"
)
#
# Get OS information and store in variable TD_OS_INFO.
#
execute_process
(
COMMAND
chmod
777
$
{
TD_COMMUNITY_DIR
}
/
packaging
/
tools
/
get_os
.
sh
)
execute_process
(
COMMAND
$
{
TD_COMMUNITY_DIR
}
/
packaging
/
tools
/
get_os
.
sh
""
OUTPUT_VARIABLE
TD_OS_INFO
)
MESSAGE
(
STATUS
"The current os is "
$
{
TD_OS_INFO
})
SET
(
TD_LINUX
TRUE
)
IF
(
$
{
CMAKE_SIZEOF_VOID_P
}
MATCHES
8
)
SET
(
TD_LINUX_64
TRUE
)
...
...
src/common/src/tglobal.c
浏览文件 @
d012c3eb
...
...
@@ -111,7 +111,7 @@ int32_t tsFsyncPeriod = TSDB_DEFAULT_FSYNC_PERIOD;
int32_t
tsReplications
=
TSDB_DEFAULT_DB_REPLICA_OPTION
;
int32_t
tsQuorum
=
TSDB_DEFAULT_DB_QUORUM_OPTION
;
int32_t
tsMaxVgroupsPerDb
=
0
;
int32_t
tsMinTablePerVnode
=
100
;
int32_t
tsMinTablePerVnode
=
TSDB_TABLES_STEP
;
int32_t
tsMaxTablePerVnode
=
TSDB_DEFAULT_TABLES
;
int32_t
tsTableIncStepPerVnode
=
TSDB_TABLES_STEP
;
...
...
src/os/inc/osDarwin64.h
浏览文件 @
d012c3eb
...
...
@@ -22,7 +22,6 @@ extern "C" {
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <assert.h>
#include <ctype.h>
...
...
@@ -72,168 +71,25 @@ extern "C" {
#include <fcntl.h>
#include <sys/utsname.h>
#define htobe64 htonll
#define taosCloseSocket(x) \
{ \
if (FD_VALID(x)) { \
close(x); \
x = FD_INITIALIZER; \
} \
}
#define taosWriteSocket(fd, buf, len) write(fd, buf, len)
#define taosReadSocket(fd, buf, len) read(fd, buf, len)
#define atomic_load_8(ptr) __atomic_load_n((ptr), __ATOMIC_SEQ_CST)
#define atomic_load_16(ptr) __atomic_load_n((ptr), __ATOMIC_SEQ_CST)
#define atomic_load_32(ptr) __atomic_load_n((ptr), __ATOMIC_SEQ_CST)
#define atomic_load_64(ptr) __atomic_load_n((ptr), __ATOMIC_SEQ_CST)
#define atomic_load_ptr(ptr) __atomic_load_n((ptr), __ATOMIC_SEQ_CST)
#define atomic_store_8(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_store_16(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_store_32(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_store_64(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_store_ptr(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_exchange_8(ptr, val) __atomic_exchange_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_exchange_16(ptr, val) __atomic_exchange_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_exchange_32(ptr, val) __atomic_exchange_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_exchange_64(ptr, val) __atomic_exchange_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_exchange_ptr(ptr, val) __atomic_exchange_n((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_val_compare_exchange_8 __sync_val_compare_and_swap
#define atomic_val_compare_exchange_16 __sync_val_compare_and_swap
#define atomic_val_compare_exchange_32 __sync_val_compare_and_swap
#define atomic_val_compare_exchange_64 __sync_val_compare_and_swap
#define atomic_val_compare_exchange_ptr __sync_val_compare_and_swap
#define atomic_add_fetch_8(ptr, val) __atomic_add_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_add_fetch_16(ptr, val) __atomic_add_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_add_fetch_32(ptr, val) __atomic_add_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_add_fetch_64(ptr, val) __atomic_add_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_add_fetch_ptr(ptr, val) __atomic_add_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_add_8(ptr, val) __atomic_fetch_add((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_add_16(ptr, val) __atomic_fetch_add((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_add_32(ptr, val) __atomic_fetch_add((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_add_64(ptr, val) __atomic_fetch_add((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_add_ptr(ptr, val) __atomic_fetch_add((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_sub_fetch_8(ptr, val) __atomic_sub_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_sub_fetch_16(ptr, val) __atomic_sub_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_sub_fetch_32(ptr, val) __atomic_sub_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_sub_fetch_64(ptr, val) __atomic_sub_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_sub_fetch_ptr(ptr, val) __atomic_sub_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_sub_8(ptr, val) __atomic_fetch_sub((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_sub_16(ptr, val) __atomic_fetch_sub((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_sub_32(ptr, val) __atomic_fetch_sub((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_sub_64(ptr, val) __atomic_fetch_sub((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_sub_ptr(ptr, val) __atomic_fetch_sub((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_and_fetch_8(ptr, val) __atomic_and_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_and_fetch_16(ptr, val) __atomic_and_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_and_fetch_32(ptr, val) __atomic_and_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_and_fetch_64(ptr, val) __atomic_and_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_and_fetch_ptr(ptr, val) __atomic_and_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_and_8(ptr, val) __atomic_fetch_and((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_and_16(ptr, val) __atomic_fetch_and((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_and_32(ptr, val) __atomic_fetch_and((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_and_64(ptr, val) __atomic_fetch_and((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_and_ptr(ptr, val) __atomic_fetch_and((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_or_fetch_8(ptr, val) __atomic_or_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_or_fetch_16(ptr, val) __atomic_or_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_or_fetch_32(ptr, val) __atomic_or_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_or_fetch_64(ptr, val) __atomic_or_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_or_fetch_ptr(ptr, val) __atomic_or_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_or_8(ptr, val) __atomic_fetch_or((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_or_16(ptr, val) __atomic_fetch_or((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_or_32(ptr, val) __atomic_fetch_or((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_or_64(ptr, val) __atomic_fetch_or((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_or_ptr(ptr, val) __atomic_fetch_or((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_xor_fetch_8(ptr, val) __atomic_xor_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_xor_fetch_16(ptr, val) __atomic_xor_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_xor_fetch_32(ptr, val) __atomic_xor_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_xor_fetch_64(ptr, val) __atomic_xor_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_xor_fetch_ptr(ptr, val) __atomic_xor_fetch((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_xor_8(ptr, val) __atomic_fetch_xor((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_xor_16(ptr, val) __atomic_fetch_xor((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_xor_32(ptr, val) __atomic_fetch_xor((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_xor_64(ptr, val) __atomic_fetch_xor((ptr), (val), __ATOMIC_SEQ_CST)
#define atomic_fetch_xor_ptr(ptr, val) __atomic_fetch_xor((ptr), (val), __ATOMIC_SEQ_CST)
#define SWAP(a, b, c) \
do { \
typeof(a) __tmp = (a); \
(a) = (b); \
(b) = __tmp; \
} while (0)
#define MAX(a, b) \
({ \
typeof(a) __a = (a); \
typeof(b) __b = (b); \
(__a > __b) ? __a : __b; \
})
#define MIN(a, b) \
({ \
typeof(a) __a = (a); \
typeof(b) __b = (b); \
(__a < __b) ? __a : __b; \
})
#define MILLISECOND_PER_SECOND ((int64_t)1000L)
#define TAOS_OS_FUNC_CORE
#define TAOS_OS_FUNC_FILEOP
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
#define TAOS_OS_FUNC_SEMPHONE
#define tsem_t dispatch_semaphore_t
int
tsem_init
(
dispatch_semaphore_t
*
sem
,
int
pshared
,
unsigned
int
value
);
int
tsem_wait
(
dispatch_semaphore_t
*
sem
);
int
tsem_post
(
dispatch_semaphore_t
*
sem
);
int
tsem_destroy
(
dispatch_semaphore_t
*
sem
);
void
osInit
();
ssize_t
tread
(
int
fd
,
void
*
buf
,
size_t
count
);
ssize_t
twrite
(
int
fd
,
void
*
buf
,
size_t
n
);
bool
taosCheckPthreadValid
(
pthread_t
thread
);
void
taosResetPthread
(
pthread_t
*
thread
);
int64_t
taosGetPthreadId
();
int
taosSetNonblocking
(
int
sock
,
int
on
);
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
);
void
taosPrintOsInfo
();
void
taosPrintOsInfo
();
void
taosGetSystemInfo
();
void
taosKillSystem
();
bool
taosSkipSocketCheck
();
bool
taosGetDisk
();
int
fsendfile
(
FILE
*
out_file
,
FILE
*
in_file
,
int64_t
*
offset
,
int32_t
count
);
void
taosSetCoreDump
();
int
tSystem
(
const
char
*
cmd
);
#define TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
#define TAOS_OS_FUNC_SYSINFO
#define TAOS_OS_FUNC_TIMER
#define TAOS_OS_FUNC_UTIL
// specific
#define htobe64 htonll
typedef
int
(
*
__compar_fn_t
)(
const
void
*
,
const
void
*
);
// for send function in tsocket.c
...
...
@@ -246,27 +102,6 @@ typedef int(*__compar_fn_t)(const void *, const void *);
#define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE
#endif
#ifndef _TD_ARM_32_
#define BUILDIN_CLZL(val) __builtin_clzl(val)
#define BUILDIN_CTZL(val) __builtin_ctzl(val)
#else
#define BUILDIN_CLZL(val) __builtin_clzll(val)
#define BUILDIN_CTZL(val) __builtin_ctzll(val)
#endif
#define BUILDIN_CLZ(val) __builtin_clz(val)
#define BUILDIN_CTZ(val) __builtin_ctz(val)
#undef threadlocal
#ifdef _ISOC11_SOURCE
#define threadlocal _Thread_local
#elif defined(__APPLE__)
#define threadlocal
#elif defined(__GNUC__) && !defined(threadlocal)
#define threadlocal __thread
#else
#define threadlocal
#endif
#ifdef __cplusplus
}
#endif
...
...
src/os/inc/osLinux32.h
浏览文件 @
d012c3eb
...
...
@@ -22,7 +22,6 @@ extern "C" {
#include <stdio.h>
#include <stdlib.h>
#include <argp.h>
#include <arpa/inet.h>
#include <assert.h>
...
...
@@ -78,6 +77,12 @@ extern "C" {
#include <sys/resource.h>
#include <error.h>
#define TAOS_OS_FUNC_LZ4
#define BUILDIN_CLZL(val) __builtin_clzll(val)
#define BUILDIN_CTZL(val) __builtin_ctzll(val)
#define BUILDIN_CLZ(val) __builtin_clz(val)
#define BUILDIN_CTZ(val) __builtin_ctz(val)
#ifdef __cplusplus
}
#endif
...
...
src/os/inc/osSpec.h
浏览文件 @
d012c3eb
...
...
@@ -232,12 +232,12 @@ extern "C" {
ssize_t
taosTReadImp
(
int
fd
,
void
*
buf
,
size_t
count
);
ssize_t
taosTWriteImp
(
int
fd
,
void
*
buf
,
size_t
count
);
// TAOS_OS_FUNC_FILEOP
ssize_t
taosTSendFileImp
(
int
dfd
,
int
sfd
,
off_t
*
offset
,
size_t
size
);
#ifndef TAOS_OS_FUNC_FILE_OP
#define taosTRead(fd, buf, count) taosTReadImp(fd, buf, count)
#define taosTWrite(fd, buf, count) taosTWriteImp(fd, buf, count)
#define taosLSeek(fd, offset, whence) lseek(fd, offset, whence)
int
taosFSendFileImp
(
FILE
*
out_file
,
FILE
*
in_file
,
int64_t
*
offset
,
int32_t
count
);
#ifndef TAOS_OS_FUNC_FILEOP
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
#define taosFSendFile(outfile, infile, offset, count) taosTSendFileImp(fileno(outfile), fileno(infile), offset, size)
#endif
#ifndef TAOS_OS_FUNC_NETWORK
...
...
@@ -284,14 +284,22 @@ int64_t taosGetPthreadId();
// TAOS_OS_FUNC_SOCKET
int
taosSetNonblocking
(
int
sock
,
int
on
);
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
);
void
taosBlockSIGPIPE
();
// TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
);
// TAOS_OS_FUNC_SYSINFO
void
taosGetSystemInfo
();
bool
taosGetProcIO
(
float
*
readKB
,
float
*
writeKB
);
bool
taosGetBandSpeed
(
float
*
bandSpeedKb
);
bool
taosGetDisk
();
bool
taosGetCpuUsage
(
float
*
sysCpuUsage
,
float
*
procCpuUsage
)
;
bool
taosGetProcMemory
(
float
*
memoryUsedMB
)
;
bool
taosGetSysMemory
(
float
*
memoryUsedMB
);
void
taosPrintOsInfo
();
int
taosSystem
(
const
char
*
cmd
)
;
void
taosKillSystem
();
int
tSystem
(
const
char
*
cmd
)
;
// TAOS_OS_FUNC_CORE
void
taosSetCoreDump
();
...
...
@@ -344,12 +352,13 @@ void taosMvDir(char* destDir, char *srcDir);
ssize_t
taosReadFileRandomFail
(
int
fd
,
void
*
buf
,
size_t
count
,
const
char
*
file
,
uint32_t
line
);
ssize_t
taosWriteFileRandomFail
(
int
fd
,
void
*
buf
,
size_t
count
,
const
char
*
file
,
uint32_t
line
);
off_t
taosLSeekRandomFail
(
int
fd
,
off_t
offset
,
int
whence
,
const
char
*
file
,
uint32_t
line
);
#undef taosTRead
#undef taosTWrite
#undef taosLSeek
#define taosTRead(fd, buf, count) taosReadFileRandomFail(fd, buf, count, __FILE__, __LINE__)
#define taosTWrite(fd, buf, count) taosWriteFileRandomFail(fd, buf, count, __FILE__, __LINE__)
#define taosLSeek(fd, offset, whence) taosLSeekRandomFail(fd, offset, whence, __FILE__, __LINE__)
#else
#define taosTRead(fd, buf, count) taosTReadImp(fd, buf, count)
#define taosTWrite(fd, buf, count) taosTWriteImp(fd, buf, count)
#define taosLSeek(fd, offset, whence) lseek(fd, offset, whence)
#endif
#ifdef TAOS_RANDOM_NETWORK_FAIL
...
...
src/os/src/darwin64/CMakeLists.txt
浏览文件 @
d012c3eb
CMAKE_MINIMUM_REQUIRED
(
VERSION 2.8
)
PROJECT
(
TDengine
)
IF
(
TD_DARWIN_64
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/os/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/util/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/common/inc
)
INCLUDE_DIRECTORIES
(
inc
)
AUX_SOURCE_DIRECTORY
(
src SRC
)
ADD_LIBRARY
(
os
${
SRC
}
)
ENDIF
()
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/os/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/util/inc
)
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/common/inc
)
AUX_SOURCE_DIRECTORY
(
. SRC
)
ADD_LIBRARY
(
os
${
SRC
}
)
src/os/src/darwin64/darwinCoredump.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
void
taosSetCoreDump
()
{}
src/os/src/darwin64/darwinEnv.c
浏览文件 @
d012c3eb
...
...
@@ -19,12 +19,12 @@
#include "tulog.h"
void
osInit
()
{
strcpy
(
configDir
,
"
/etc/taos
"
);
strcpy
(
configDir
,
"
~/TDengine/cfg
"
);
strcpy
(
tsVnodeDir
,
""
);
strcpy
(
tsDnodeDir
,
""
);
strcpy
(
tsMnodeDir
,
""
);
strcpy
(
tsDataDir
,
"
/var/lib/taos
"
);
strcpy
(
tsLogDir
,
"~/TDengine
L
og"
);
strcpy
(
tsScriptDir
,
"
/etc/taos
"
);
strcpy
(
tsDataDir
,
"
~/TDengine/data
"
);
strcpy
(
tsLogDir
,
"~/TDengine
/l
og"
);
strcpy
(
tsScriptDir
,
"
~/TDengine/cfg
"
);
strcpy
(
tsOsName
,
"Darwin"
);
}
src/os/src/darwin64/darwinFileOp.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
#define _SEND_FILE_STEP_ 1000
int
taosFSendFileImp
(
FILE
*
out_file
,
FILE
*
in_file
,
int64_t
*
offset
,
int32_t
count
)
{
fseek
(
in_file
,
(
int32_t
)(
*
offset
),
0
);
int
writeLen
=
0
;
uint8_t
buffer
[
_SEND_FILE_STEP_
]
=
{
0
};
for
(
int
len
=
0
;
len
<
(
count
-
_SEND_FILE_STEP_
);
len
+=
_SEND_FILE_STEP_
)
{
size_t
rlen
=
fread
(
buffer
,
1
,
_SEND_FILE_STEP_
,
in_file
);
if
(
rlen
<=
0
)
{
return
writeLen
;
}
else
if
(
rlen
<
_SEND_FILE_STEP_
)
{
fwrite
(
buffer
,
1
,
rlen
,
out_file
);
return
(
int
)(
writeLen
+
rlen
);
}
else
{
fwrite
(
buffer
,
1
,
_SEND_FILE_STEP_
,
in_file
);
writeLen
+=
_SEND_FILE_STEP_
;
}
}
int
remain
=
count
-
writeLen
;
if
(
remain
>
0
)
{
size_t
rlen
=
fread
(
buffer
,
1
,
remain
,
in_file
);
if
(
rlen
<=
0
)
{
return
writeLen
;
}
else
{
fwrite
(
buffer
,
1
,
remain
,
out_file
);
writeLen
+=
remain
;
}
}
return
writeLen
;
}
ssize_t
taosTSendFileImp
(
int
dfd
,
int
sfd
,
off_t
*
offset
,
size_t
size
)
{
uError
(
"not implemented yet"
);
return
-
1
;
}
\ No newline at end of file
src/os/src/darwin64/darwinPlatform.c
已删除
100644 → 0
浏览文件 @
a6a0c408
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
int64_t
tsosStr2int64
(
char
*
str
)
{
char
*
endptr
=
NULL
;
return
strtoll
(
str
,
&
endptr
,
10
);
}
/*
to make taosMsleep work,
signal SIGALRM shall be blocked in the calling thread,
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGALRM);
pthread_sigmask(SIG_BLOCK, &set, NULL);
*/
void
taosMsleep
(
int
mseconds
)
{
struct
timeval
timeout
;
int
seconds
,
useconds
;
seconds
=
mseconds
/
1000
;
useconds
=
(
mseconds
%
1000
)
*
1000
;
timeout
.
tv_sec
=
seconds
;
timeout
.
tv_usec
=
useconds
;
/* sigset_t set; */
/* sigemptyset(&set); */
/* sigaddset(&set, SIGALRM); */
/* pthread_sigmask(SIG_BLOCK, &set, NULL); */
select
(
0
,
NULL
,
NULL
,
NULL
,
&
timeout
);
/* pthread_sigmask(SIG_UNBLOCK, &set, NULL); */
}
bool
taosCheckPthreadValid
(
pthread_t
thread
)
{
return
thread
!=
0
;
}
void
taosResetPthread
(
pthread_t
*
thread
)
{
*
thread
=
0
;
}
int64_t
taosGetPthreadId
()
{
return
(
int64_t
)
pthread_self
();
}
/*
* Function to get the private ip address of current machine. If get IP
* successfully, return 0, else, return -1. The return values is ip.
*
* Use:
* if (taosGetPrivateIp(ip) != 0) {
* perror("Fail to get private IP address\n");
* exit(EXIT_FAILURE);
* }
*/
int
taosGetPrivateIp
(
char
*
const
ip
)
{
bool
hasLoCard
=
false
;
struct
ifaddrs
*
ifaddr
,
*
ifa
;
int
family
,
s
;
char
host
[
NI_MAXHOST
];
if
(
getifaddrs
(
&
ifaddr
)
==
-
1
)
{
return
-
1
;
}
/* Walk through linked list, maintaining head pointer so we can free list later */
int
flag
=
0
;
for
(
ifa
=
ifaddr
;
ifa
!=
NULL
;
ifa
=
ifa
->
ifa_next
)
{
if
(
ifa
->
ifa_addr
==
NULL
)
continue
;
family
=
ifa
->
ifa_addr
->
sa_family
;
if
(
strcmp
(
"lo"
,
ifa
->
ifa_name
)
==
0
)
{
hasLoCard
=
true
;
continue
;
}
if
(
family
==
AF_INET
)
{
/* printf("%-8s", ifa->ifa_name); */
s
=
getnameinfo
(
ifa
->
ifa_addr
,
(
family
==
AF_INET
)
?
sizeof
(
struct
sockaddr_in
)
:
sizeof
(
struct
sockaddr_in6
),
host
,
NI_MAXHOST
,
NULL
,
0
,
NI_NUMERICHOST
);
if
(
s
!=
0
)
{
freeifaddrs
(
ifaddr
);
return
-
1
;
}
strcpy
(
ip
,
host
);
flag
=
1
;
break
;
}
}
freeifaddrs
(
ifaddr
);
if
(
flag
)
{
return
0
;
}
else
{
if
(
hasLoCard
)
{
uInfo
(
"no net card was found, use lo:127.0.0.1 as default"
);
strcpy
(
ip
,
"127.0.0.1"
);
return
0
;
}
return
-
1
;
}
}
int
taosSetNonblocking
(
int
sock
,
int
on
)
{
int
flags
=
0
;
if
((
flags
=
fcntl
(
sock
,
F_GETFL
,
0
))
<
0
)
{
uError
(
"fcntl(F_GETFL) error: %d (%s)
\n
"
,
errno
,
strerror
(
errno
));
return
1
;
}
if
(
on
)
flags
|=
O_NONBLOCK
;
else
flags
&=
~
O_NONBLOCK
;
if
((
flags
=
fcntl
(
sock
,
F_SETFL
,
flags
))
<
0
)
{
uError
(
"fcntl(F_SETFL) error: %d (%s)
\n
"
,
errno
,
strerror
(
errno
));
return
1
;
}
return
0
;
}
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
)
{
if
(
level
==
SOL_SOCKET
&&
optname
==
SO_SNDBUF
)
{
return
0
;
}
if
(
level
==
SOL_SOCKET
&&
optname
==
SO_RCVBUF
)
{
return
0
;
}
return
setsockopt
(
socketfd
,
level
,
optname
,
optval
,
(
socklen_t
)
optlen
);
}
int
taosInitTimer
(
void
(
*
callback
)(
int
),
int
ms
)
{
signal
(
SIGALRM
,
callback
);
struct
itimerval
tv
;
tv
.
it_interval
.
tv_sec
=
0
;
/* my timer resolution */
tv
.
it_interval
.
tv_usec
=
1000
*
ms
;
// resolution is in msecond
tv
.
it_value
=
tv
.
it_interval
;
setitimer
(
ITIMER_REAL
,
&
tv
,
NULL
);
return
0
;
}
void
taosUninitTimer
()
{
struct
itimerval
tv
=
{
0
};
setitimer
(
ITIMER_REAL
,
&
tv
,
NULL
);
}
void
taosGetSystemTimezone
()
{
// get and set default timezone
SGlobalCfg
*
cfg_timezone
=
taosGetConfigOption
(
"timezone"
);
if
(
cfg_timezone
&&
cfg_timezone
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
char
*
tz
=
getenv
(
"TZ"
);
if
(
tz
==
NULL
||
strlen
(
tz
)
==
0
)
{
strcpy
(
tsTimezone
,
"not configured"
);
}
else
{
strcpy
(
tsTimezone
,
tz
);
}
cfg_timezone
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"timezone not configured, use default"
);
}
}
void
taosGetSystemLocale
()
{
// get and set default locale
SGlobalCfg
*
cfg_locale
=
taosGetConfigOption
(
"locale"
);
if
(
cfg_locale
&&
cfg_locale
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
char
*
locale
=
setlocale
(
LC_CTYPE
,
"chs"
);
if
(
locale
!=
NULL
)
{
tstrncpy
(
tsLocale
,
locale
,
sizeof
(
tsLocale
));
cfg_locale
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"locale not configured, set to default:%s"
,
tsLocale
);
}
}
SGlobalCfg
*
cfg_charset
=
taosGetConfigOption
(
"charset"
);
if
(
cfg_charset
&&
cfg_charset
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
strcpy
(
tsCharset
,
"cp936"
);
cfg_charset
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"charset not configured, set to default:%s"
,
tsCharset
);
}
}
void
taosPrintOsInfo
()
{}
void
taosKillSystem
()
{
uError
(
"function taosKillSystem, exit!"
);
exit
(
0
);
}
bool
taosGetDisk
()
{
return
true
;
}
void
taosGetSystemInfo
()
{
taosGetSystemTimezone
();
taosGetSystemLocale
();
}
void
*
taosInitTcpClient
(
char
*
ip
,
uint16_t
port
,
char
*
flabel
,
int
num
,
void
*
fp
,
void
*
shandle
)
{
uError
(
"function taosInitTcpClient is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosCloseTcpClientConnection
(
void
*
chandle
)
{
uError
(
"function taosCloseTcpClientConnection is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
*
taosOpenTcpClientConnection
(
void
*
shandle
,
void
*
thandle
,
char
*
ip
,
uint16_t
port
)
{
uError
(
"function taosOpenTcpClientConnection is not implemented in darwin system, exit!"
);
exit
(
0
);
}
int
taosSendTcpClientData
(
unsigned
int
ip
,
uint16_t
port
,
char
*
data
,
int
len
,
void
*
chandle
)
{
uError
(
"function taosSendTcpClientData is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosCleanUpTcpClient
(
void
*
chandle
)
{
uError
(
"function taosCleanUpTcpClient is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosCloseTcpServerConnection
(
void
*
chandle
)
{
uError
(
"function taosCloseTcpServerConnection is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosCleanUpTcpServer
(
void
*
handle
)
{
uError
(
"function taosCleanUpTcpServer is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
*
taosInitTcpServer
(
char
*
ip
,
uint16_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
)
{
uError
(
"function taosInitTcpServer is not implemented in darwin system, exit!"
);
exit
(
0
);
}
int
taosSendTcpServerData
(
unsigned
int
ip
,
uint16_t
port
,
char
*
data
,
int
len
,
void
*
chandle
)
{
uError
(
"function taosSendTcpServerData is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosFreeMsgHdr
(
void
*
hdr
)
{
uError
(
"function taosFreeMsgHdr is not implemented in darwin system, exit!"
);
exit
(
0
);
}
int
taosMsgHdrSize
(
void
*
hdr
)
{
uError
(
"function taosMsgHdrSize is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosSendMsgHdr
(
void
*
hdr
,
int
fd
)
{
uError
(
"function taosSendMsgHdr is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosInitMsgHdr
(
void
**
hdr
,
void
*
dest
,
int
maxPkts
)
{
uError
(
"function taosInitMsgHdr is not implemented in darwin system, exit!"
);
exit
(
0
);
}
void
taosSetMsgHdrData
(
void
*
hdr
,
char
*
data
,
int
dataLen
)
{
uError
(
"function taosSetMsgHdrData is not implemented in darwin system, exit!"
);
exit
(
0
);
}
bool
taosSkipSocketCheck
()
{
return
true
;
}
int
tsem_init
(
dispatch_semaphore_t
*
sem
,
int
pshared
,
unsigned
int
value
)
{
*
sem
=
dispatch_semaphore_create
(
value
);
if
(
*
sem
==
NULL
)
{
return
-
1
;
}
else
{
return
0
;
}
}
int
tsem_wait
(
dispatch_semaphore_t
*
sem
)
{
dispatch_semaphore_wait
(
*
sem
,
DISPATCH_TIME_FOREVER
);
return
0
;
}
int
tsem_post
(
dispatch_semaphore_t
*
sem
)
{
dispatch_semaphore_signal
(
*
sem
);
return
0
;
}
int
tsem_destroy
(
dispatch_semaphore_t
*
sem
)
{
return
0
;
}
int32_t
__sync_val_load_32
(
int32_t
*
ptr
)
{
return
__atomic_load_n
(
ptr
,
__ATOMIC_ACQUIRE
);
}
void
__sync_val_restore_32
(
int32_t
*
ptr
,
int32_t
newval
)
{
__atomic_store_n
(
ptr
,
newval
,
__ATOMIC_RELEASE
);
}
#define _SEND_FILE_STEP_ 1000
int
fsendfile
(
FILE
*
out_file
,
FILE
*
in_file
,
int64_t
*
offset
,
int32_t
count
)
{
fseek
(
in_file
,
(
int32_t
)(
*
offset
),
0
);
int
writeLen
=
0
;
uint8_t
buffer
[
_SEND_FILE_STEP_
]
=
{
0
};
for
(
int
len
=
0
;
len
<
(
count
-
_SEND_FILE_STEP_
);
len
+=
_SEND_FILE_STEP_
)
{
size_t
rlen
=
fread
(
buffer
,
1
,
_SEND_FILE_STEP_
,
in_file
);
if
(
rlen
<=
0
)
{
return
writeLen
;
}
else
if
(
rlen
<
_SEND_FILE_STEP_
)
{
fwrite
(
buffer
,
1
,
rlen
,
out_file
);
return
(
int
)(
writeLen
+
rlen
);
}
else
{
fwrite
(
buffer
,
1
,
_SEND_FILE_STEP_
,
in_file
);
writeLen
+=
_SEND_FILE_STEP_
;
}
}
int
remain
=
count
-
writeLen
;
if
(
remain
>
0
)
{
size_t
rlen
=
fread
(
buffer
,
1
,
remain
,
in_file
);
if
(
rlen
<=
0
)
{
return
writeLen
;
}
else
{
fwrite
(
buffer
,
1
,
remain
,
out_file
);
writeLen
+=
remain
;
}
}
return
writeLen
;
}
void
taosSetCoreDump
()
{}
src/os/src/darwin64/darwinSem.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
int
tsem_init
(
dispatch_semaphore_t
*
sem
,
int
pshared
,
unsigned
int
value
)
{
*
sem
=
dispatch_semaphore_create
(
value
);
if
(
*
sem
==
NULL
)
{
return
-
1
;
}
else
{
return
0
;
}
}
int
tsem_wait
(
dispatch_semaphore_t
*
sem
)
{
dispatch_semaphore_wait
(
*
sem
,
DISPATCH_TIME_FOREVER
);
return
0
;
}
int
tsem_post
(
dispatch_semaphore_t
*
sem
)
{
dispatch_semaphore_signal
(
*
sem
);
return
0
;
}
int
tsem_destroy
(
dispatch_semaphore_t
*
sem
)
{
return
0
;
}
src/os/src/darwin64/darwinSocket.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
)
{
if
(
level
==
SOL_SOCKET
&&
optname
==
SO_SNDBUF
)
{
return
0
;
}
if
(
level
==
SOL_SOCKET
&&
optname
==
SO_RCVBUF
)
{
return
0
;
}
return
setsockopt
(
socketfd
,
level
,
optname
,
optval
,
(
socklen_t
)
optlen
);
}
src/os/src/darwin64/darwinSysInfo.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
static
void
taosGetSystemTimezone
()
{
// get and set default timezone
SGlobalCfg
*
cfg_timezone
=
taosGetConfigOption
(
"timezone"
);
if
(
cfg_timezone
&&
cfg_timezone
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
char
*
tz
=
getenv
(
"TZ"
);
if
(
tz
==
NULL
||
strlen
(
tz
)
==
0
)
{
strcpy
(
tsTimezone
,
"not configured"
);
}
else
{
strcpy
(
tsTimezone
,
tz
);
}
cfg_timezone
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"timezone not configured, use default"
);
}
}
static
void
taosGetSystemLocale
()
{
// get and set default locale
SGlobalCfg
*
cfg_locale
=
taosGetConfigOption
(
"locale"
);
if
(
cfg_locale
&&
cfg_locale
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
char
*
locale
=
setlocale
(
LC_CTYPE
,
"chs"
);
if
(
locale
!=
NULL
)
{
strncpy
(
tsLocale
,
locale
,
TSDB_LOCALE_LEN
-
1
);
cfg_locale
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"locale not configured, set to default:%s"
,
tsLocale
);
}
}
SGlobalCfg
*
cfg_charset
=
taosGetConfigOption
(
"charset"
);
if
(
cfg_charset
&&
cfg_charset
->
cfgStatus
<
TAOS_CFG_CSTATUS_DEFAULT
)
{
strcpy
(
tsCharset
,
"cp936"
);
cfg_charset
->
cfgStatus
=
TAOS_CFG_CSTATUS_DEFAULT
;
uInfo
(
"charset not configured, set to default:%s"
,
tsCharset
);
}
}
void
taosPrintOsInfo
()
{}
void
taosKillSystem
()
{
uError
(
"function taosKillSystem, exit!"
);
exit
(
0
);
}
void
taosGetSystemInfo
()
{
taosGetSystemTimezone
();
taosGetSystemLocale
();
}
bool
taosGetDisk
()
{
return
true
;
}
bool
taosGetProcIO
(
float
*
readKB
,
float
*
writeKB
)
{
*
readKB
=
0
;
*
writeKB
=
0
;
return
true
;
}
bool
taosGetBandSpeed
(
float
*
bandSpeedKb
)
{
*
bandSpeedKb
=
0
;
return
true
;
}
bool
taosGetCpuUsage
(
float
*
sysCpuUsage
,
float
*
procCpuUsage
)
{
*
sysCpuUsage
=
0
;
*
procCpuUsage
=
0
;
return
true
;
}
bool
taosGetProcMemory
(
float
*
memoryUsedMB
)
{
*
memoryUsedMB
=
0
;
return
true
;
}
bool
taosGetSysMemory
(
float
*
memoryUsedMB
)
{
*
memoryUsedMB
=
0
;
return
true
;
}
int
taosSystem
(
const
char
*
cmd
)
{
uError
(
"un support funtion"
);
return
-
1
;
}
src/os/src/darwin64/darwinTimer.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "taosdef.h"
#include "tglobal.h"
#include "tconfig.h"
#include "ttimer.h"
#include "tulog.h"
#include "tutil.h"
int
taosInitTimer
(
void
(
*
callback
)(
int
),
int
ms
)
{
signal
(
SIGALRM
,
callback
);
struct
itimerval
tv
;
tv
.
it_interval
.
tv_sec
=
0
;
/* my timer resolution */
tv
.
it_interval
.
tv_usec
=
1000
*
ms
;
// resolution is in msecond
tv
.
it_value
=
tv
.
it_interval
;
setitimer
(
ITIMER_REAL
,
&
tv
,
NULL
);
return
0
;
}
void
taosUninitTimer
()
{
struct
itimerval
tv
=
{
0
};
setitimer
(
ITIMER_REAL
,
&
tv
,
NULL
);
}
src/os/src/darwin64/darwinUtil.c
0 → 100644
浏览文件 @
d012c3eb
/*
* 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/>.
*/
#define _DEFAULT_SOURCE
#include "os.h"
int64_t
tsosStr2int64
(
char
*
str
)
{
char
*
endptr
=
NULL
;
return
strtoll
(
str
,
&
endptr
,
10
);
}
src/os/src/detail/osDir.c
浏览文件 @
d012c3eb
...
...
@@ -60,7 +60,7 @@ void taosMvDir(char* destDir, char *srcDir) {
//(void)snprintf(shellCmd, 1024, "cp -rf %s %s", srcDir, destDir);
(
void
)
snprintf
(
shellCmd
,
1024
,
"mv %s %s"
,
srcDir
,
destDir
);
tSystem
(
shellCmd
);
t
aos
System
(
shellCmd
);
uInfo
(
"shell cmd:%s is executed"
,
shellCmd
);
}
...
...
src/os/src/detail/osFileOp.c
浏览文件 @
d012c3eb
...
...
@@ -40,6 +40,28 @@ ssize_t taosTReadImp(int fd, void *buf, size_t count) {
return
(
ssize_t
)
count
;
}
ssize_t
taosTWriteImp
(
int
fd
,
void
*
buf
,
size_t
n
)
{
size_t
nleft
=
n
;
ssize_t
nwritten
=
0
;
char
*
tbuf
=
(
char
*
)
buf
;
while
(
nleft
>
0
)
{
nwritten
=
write
(
fd
,
(
void
*
)
tbuf
,
nleft
);
if
(
nwritten
<
0
)
{
if
(
errno
==
EINTR
)
{
continue
;
}
return
-
1
;
}
nleft
-=
nwritten
;
tbuf
+=
nwritten
;
}
return
n
;
}
#ifndef TAOS_OS_FUNC_FILEOP
ssize_t
taosTSendFileImp
(
int
dfd
,
int
sfd
,
off_t
*
offset
,
size_t
size
)
{
size_t
leftbytes
=
size
;
ssize_t
sentbytes
;
...
...
@@ -67,22 +89,4 @@ ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
return
size
;
}
ssize_t
taosTWriteImp
(
int
fd
,
void
*
buf
,
size_t
n
)
{
size_t
nleft
=
n
;
ssize_t
nwritten
=
0
;
char
*
tbuf
=
(
char
*
)
buf
;
while
(
nleft
>
0
)
{
nwritten
=
write
(
fd
,
(
void
*
)
tbuf
,
nleft
);
if
(
nwritten
<
0
)
{
if
(
errno
==
EINTR
)
{
continue
;
}
return
-
1
;
}
nleft
-=
nwritten
;
tbuf
+=
nwritten
;
}
return
n
;
}
#endif
\ No newline at end of file
src/os/src/detail/osSocket.c
浏览文件 @
d012c3eb
...
...
@@ -39,10 +39,6 @@ int taosSetNonblocking(int sock, int on) {
return
0
;
}
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
)
{
return
setsockopt
(
socketfd
,
level
,
optname
,
optval
,
(
socklen_t
)
optlen
);
}
void
taosBlockSIGPIPE
()
{
sigset_t
signal_mask
;
sigemptyset
(
&
signal_mask
);
...
...
@@ -54,3 +50,11 @@ void taosBlockSIGPIPE() {
}
#endif
#ifndef TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
int
taosSetSockOpt
(
int
socketfd
,
int
level
,
int
optname
,
void
*
optval
,
int
optlen
)
{
return
setsockopt
(
socketfd
,
level
,
optname
,
optval
,
(
socklen_t
)
optlen
);
}
#endif
\ No newline at end of file
src/os/src/detail/osSysinfo.c
浏览文件 @
d012c3eb
...
...
@@ -543,12 +543,12 @@ void taosKillSystem() {
kill
(
tsProcId
,
2
);
}
int
tSystem
(
const
char
*
cmd
)
{
int
t
aos
System
(
const
char
*
cmd
)
{
FILE
*
fp
;
int
res
;
char
buf
[
1024
];
if
(
cmd
==
NULL
)
{
uError
(
"tSystem cmd is NULL!
\n
"
);
uError
(
"t
aos
System cmd is NULL!
\n
"
);
return
-
1
;
}
...
...
src/os/src/detail/osTimer.c
浏览文件 @
d012c3eb
...
...
@@ -22,35 +22,6 @@
#ifndef TAOS_OS_FUNC_TIMER
/*
to make taosMsleep work,
signal SIGALRM shall be blocked in the calling thread,
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGALRM);
pthread_sigmask(SIG_BLOCK, &set, NULL);
*/
void
taosMsleep
(
int
mseconds
)
{
struct
timeval
timeout
;
int
seconds
,
useconds
;
seconds
=
mseconds
/
1000
;
useconds
=
(
mseconds
%
1000
)
*
1000
;
timeout
.
tv_sec
=
seconds
;
timeout
.
tv_usec
=
useconds
;
/* sigset_t set; */
/* sigemptyset(&set); */
/* sigaddset(&set, SIGALRM); */
/* pthread_sigmask(SIG_BLOCK, &set, NULL); */
select
(
0
,
NULL
,
NULL
,
NULL
,
&
timeout
);
/* pthread_sigmask(SIG_UNBLOCK, &set, NULL); */
}
static
void
taosDeleteTimer
(
void
*
tharg
)
{
timer_t
*
pTimer
=
tharg
;
timer_delete
(
*
pTimer
);
...
...
@@ -130,3 +101,31 @@ void taosUninitTimer() {
}
#endif
/*
to make taosMsleep work,
signal SIGALRM shall be blocked in the calling thread,
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGALRM);
pthread_sigmask(SIG_BLOCK, &set, NULL);
*/
void
taosMsleep
(
int
mseconds
)
{
struct
timeval
timeout
;
int
seconds
,
useconds
;
seconds
=
mseconds
/
1000
;
useconds
=
(
mseconds
%
1000
)
*
1000
;
timeout
.
tv_sec
=
seconds
;
timeout
.
tv_usec
=
useconds
;
/* sigset_t set; */
/* sigemptyset(&set); */
/* sigaddset(&set, SIGALRM); */
/* pthread_sigmask(SIG_BLOCK, &set, NULL); */
select
(
0
,
NULL
,
NULL
,
NULL
,
&
timeout
);
/* pthread_sigmask(SIG_UNBLOCK, &set, NULL); */
}
\ No newline at end of file
src/os/src/linux64/CMakeLists.txt
浏览文件 @
d012c3eb
...
...
@@ -9,4 +9,3 @@ AUX_SOURCE_DIRECTORY(. SRC)
ADD_LIBRARY
(
os
${
SRC
}
)
TARGET_LINK_LIBRARIES
(
os m rt
)
src/query/src/qTsbuf.c
浏览文件 @
d012c3eb
...
...
@@ -739,11 +739,7 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf, int32_t vnodeId) {
int64_t
offset
=
getDataStartOffset
();
int32_t
size
=
pSrcBuf
->
fileSize
-
offset
;
#ifdef LINUX
ssize_t
rc
=
taosTSendFile
(
fileno
(
pDestBuf
->
f
),
fileno
(
pSrcBuf
->
f
),
&
offset
,
size
);
#else
ssize_t
rc
=
fsendfile
(
pDestBuf
->
f
,
pSrcBuf
->
f
,
&
offset
,
size
);
#endif
ssize_t
rc
=
taosFSendFile
(
pDestBuf
->
f
,
pSrcBuf
->
f
,
&
offset
,
size
);
if
(
rc
==
-
1
)
{
// tscError("failed to merge tsBuf from:%s to %s, reason:%s\n", pSrcBuf->path, pDestBuf->path, strerror(errno));
...
...
src/util/inc/talgo.h
浏览文件 @
d012c3eb
...
...
@@ -20,6 +20,11 @@
extern
"C"
{
#endif
#ifndef __COMPAR_FN_T
# define __COMPAR_FN_T
typedef
int
(
*
__compar_fn_t
)
(
const
void
*
,
const
void
*
);
#endif
#define TD_EQ 0x1
#define TD_GT 0x2
#define TD_LT 0x4
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录