提交 235f93a9 编写于 作者: S slguan

add some tool functions

上级 69232016
...@@ -125,6 +125,11 @@ void taosGetSystemInfo(); ...@@ -125,6 +125,11 @@ void taosGetSystemInfo();
void taosKillSystem(); void taosKillSystem();
int32_t BUILDIN_CLZL(uint64_t val);
int32_t BUILDIN_CLZ(uint32_t val);
int32_t BUILDIN_CTZL(uint64_t val);
int32_t BUILDIN_CTZ(uint32_t val);
//for signal, not dispose //for signal, not dispose
#define SIGALRM 1234 #define SIGALRM 1234
typedef int sigset_t; typedef int sigset_t;
...@@ -158,6 +163,10 @@ void sleep(int mseconds); ...@@ -158,6 +163,10 @@ void sleep(int mseconds);
bool taosSkipSocketCheck(); bool taosSkipSocketCheck();
int fsendfile(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count);
#define ssize_t int
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -198,3 +198,64 @@ bool taosSkipSocketCheck() { ...@@ -198,3 +198,64 @@ bool taosSkipSocketCheck() {
return false; return false;
} }
#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;
}
int32_t BUILDIN_CLZL(uint64_t val) {
unsigned long r = 0;
_BitScanReverse64(&r, val);
return (int)(r >> 3);
}
int32_t BUILDIN_CLZ(uint32_t val) {
unsigned long r = 0;
_BitScanReverse(&r, val);
return (int)(r >> 3);
}
int32_t BUILDIN_CTZL(uint64_t val) {
unsigned long r = 0;
_BitScanForward64(&r, val);
return (int)(r >> 3);
}
int32_t BUILDIN_CTZ(uint32_t val) {
unsigned long r = 0;
_BitScanForward(&r, val);
return (int)(r >> 3);
}
...@@ -32,9 +32,11 @@ ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows") ...@@ -32,9 +32,11 @@ ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
INCLUDE_DIRECTORIES(${TD_ROOT_DIR}/src/inc) INCLUDE_DIRECTORIES(${TD_ROOT_DIR}/src/inc)
INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc) INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc)
LIST(APPEND SRC ./src/ihash.c) LIST(APPEND SRC ./src/ihash.c)
LIST(APPEND SRC ./src/lz4.c)
LIST(APPEND SRC ./src/shash.c) LIST(APPEND SRC ./src/shash.c)
LIST(APPEND SRC ./src/sql.c) LIST(APPEND SRC ./src/sql.c)
LIST(APPEND SRC ./src/tbase64.c) LIST(APPEND SRC ./src/tbase64.c)
LIST(APPEND SRC ./src/tcompression.c)
LIST(APPEND SRC ./src/tcache.c) LIST(APPEND SRC ./src/tcache.c)
LIST(APPEND SRC ./src/textbuffer.c) LIST(APPEND SRC ./src/textbuffer.c)
LIST(APPEND SRC ./src/tglobalcfg.c) LIST(APPEND SRC ./src/tglobalcfg.c)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册