os: fix mac run error
This commit is contained in:
parent
6c32845ffb
commit
8df8f90e19
|
@ -2,8 +2,6 @@ cmake_minimum_required(VERSION 3.0)
|
|||
|
||||
set(CMAKE_VERBOSE_MAKEFILE OFF)
|
||||
|
||||
SET(BUILD_SHARED_LIBS "OFF")
|
||||
|
||||
#set output directory
|
||||
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/build/lib)
|
||||
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/build/bin)
|
||||
|
@ -103,6 +101,9 @@ IF (TD_WINDOWS)
|
|||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}")
|
||||
|
||||
ELSE ()
|
||||
IF (${TD_DARWIN})
|
||||
set(CMAKE_MACOSX_RPATH 0)
|
||||
ENDIF ()
|
||||
IF (${COVER} MATCHES "true")
|
||||
MESSAGE(STATUS "Test coverage mode, add extra flags")
|
||||
SET(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
SET(PREPARE_ENV_CMD "prepare_env_cmd")
|
||||
SET(PREPARE_ENV_TARGET "prepare_env_target")
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${PREPARE_ENV_CMD}
|
||||
POST_BUILD
|
||||
COMMAND echo "make test directory"
|
||||
DEPENDS taosd
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/cfg/
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/log/
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/data/
|
||||
COMMAND ${CMAKE_COMMAND} -E echo dataDir ${TD_TESTS_OUTPUT_DIR}/data > ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
||||
COMMAND ${CMAKE_COMMAND} -E echo logDir ${TD_TESTS_OUTPUT_DIR}/log >> ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
||||
COMMAND ${CMAKE_COMMAND} -E echo charset UTF-8 >> ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
||||
COMMAND ${CMAKE_COMMAND} -E echo monitor 0 >> ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
||||
COMMENT "prepare taosd environment")
|
||||
ADD_CUSTOM_TARGET(${PREPARE_ENV_TARGET} ALL WORKING_DIRECTORY ${TD_EXECUTABLE_OUTPUT_PATH} DEPENDS ${PREPARE_ENV_CMD})
|
||||
|
||||
IF (TD_LINUX)
|
||||
SET(TD_MAKE_INSTALL_SH "${TD_SOURCE_DIR}/packaging/tools/make_install.sh")
|
||||
INSTALL(CODE "MESSAGE(\"make install script: ${TD_MAKE_INSTALL_SH}\")")
|
||||
|
|
|
@ -90,6 +90,12 @@ ELSE ()
|
|||
ENDIF ()
|
||||
ENDIF ()
|
||||
|
||||
option(
|
||||
BUILD_SHARED_LIBS
|
||||
""
|
||||
OFF
|
||||
)
|
||||
|
||||
option(
|
||||
RUST_BINDINGS
|
||||
"If build with rust-bindings"
|
||||
|
|
|
@ -79,6 +79,7 @@ extern "C" {
|
|||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
|
||||
#include "taoserror.h"
|
||||
#include "osAtomic.h"
|
||||
#include "osDef.h"
|
||||
#include "osDir.h"
|
||||
|
|
|
@ -23,10 +23,9 @@ extern "C" {
|
|||
#include <semaphore.h>
|
||||
|
||||
#if defined(_TD_DARWIN_64)
|
||||
|
||||
#include <dispatch/dispatch.h>
|
||||
// typedef struct tsem_s *tsem_t;
|
||||
typedef struct bosal_sem_t *tsem_t;
|
||||
|
||||
typedef dispatch_semaphore_t tsem_t;
|
||||
|
||||
int tsem_init(tsem_t *sem, int pshared, unsigned int value);
|
||||
int tsem_wait(tsem_t *sem);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ $1 -eq "abort-upgrade" ]; then
|
||||
if [ "$1"x = "abort-upgrade"x ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
|
|
@ -40,10 +40,12 @@ if not exist %work_dir%\debug\ver-%2-x86 (
|
|||
)
|
||||
cd %work_dir%\debug\ver-%2-x64
|
||||
call vcvarsall.bat x64
|
||||
cmake ../../ -G "NMake Makefiles JOM" -DCMAKE_MAKE_PROGRAM=jom -DBUILD_TOOLS=true -DBUILD_HTTP=false -DVERNUMBER=%2 -DCPUTYPE=x64
|
||||
cmake ../../ -G "NMake Makefiles JOM" -DCMAKE_MAKE_PROGRAM=jom -DBUILD_TOOLS=true -DBUILD_HTTP=false -BUILD_TEST=false -DVERNUMBER=%2 -DCPUTYPE=x64
|
||||
cmake --build .
|
||||
rd /s /Q C:\TDengine
|
||||
cmake --install .
|
||||
for /r c:\TDengine %%i in (*.dll) do signtool sign /f D:\\123.pfx /p taosdata %%i
|
||||
for /r c:\TDengine %%i in (*.exe) do signtool sign /f D:\\123.pfx /p taosdata %%i
|
||||
if not %errorlevel% == 0 ( call :RUNFAILED build x64 failed & exit /b 1)
|
||||
cd %package_dir%
|
||||
iscc /DMyAppInstallName="%packagServerName_x64%" /DMyAppVersion="%2" /DMyAppExcludeSource="" tools\tdengine.iss /O..\release
|
||||
|
@ -51,19 +53,7 @@ if not %errorlevel% == 0 ( call :RUNFAILED package %packagServerName_x64% faile
|
|||
iscc /DMyAppInstallName="%packagClientName_x64%" /DMyAppVersion="%2" /DMyAppExcludeSource="taosd.exe" tools\tdengine.iss /O..\release
|
||||
if not %errorlevel% == 0 ( call :RUNFAILED package %packagClientName_x64% failed & exit /b 1)
|
||||
|
||||
cd %work_dir%\debug\ver-%2-x86
|
||||
call vcvarsall.bat x86
|
||||
cmake ../../ -G "NMake Makefiles JOM" -DCMAKE_MAKE_PROGRAM=jom -DBUILD_TOOLS=true -DBUILD_HTTP=false -DVERNUMBER=%2 -DCPUTYPE=x86
|
||||
cmake --build .
|
||||
rd /s /Q C:\TDengine
|
||||
cmake --install .
|
||||
if not %errorlevel% == 0 ( call :RUNFAILED build x86 failed & exit /b 1)
|
||||
cd %package_dir%
|
||||
@REM iscc /DMyAppInstallName="%packagServerName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="" tools\tdengine.iss /O..\release
|
||||
@REM if not %errorlevel% == 0 ( call :RUNFAILED package %packagServerName_x86% failed & exit /b 1)
|
||||
iscc /DMyAppInstallName="%packagClientName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="taosd.exe" tools\tdengine.iss /O..\release
|
||||
if not %errorlevel% == 0 ( call :RUNFAILED package %packagClientName_x86% failed & exit /b 1)
|
||||
|
||||
for /r ..\release %%i in (*.exe) do signtool sign /f d:\\123.pfx /p taosdata %%i
|
||||
goto EXIT0
|
||||
|
||||
:USAGE
|
||||
|
|
|
@ -393,7 +393,9 @@ void taos_init_imp(void) {
|
|||
schedulerInit();
|
||||
tscDebug("starting to initialize TAOS driver");
|
||||
|
||||
#ifndef WINDOWS
|
||||
taosSetCoreDump(true);
|
||||
#endif
|
||||
|
||||
initTaskQueue();
|
||||
fmFuncMgtInit();
|
||||
|
|
|
@ -221,7 +221,6 @@ int walCheckAndRepairMeta(SWal* pWal) {
|
|||
|
||||
int code = walSaveMeta(pWal);
|
||||
if (code < 0) {
|
||||
taosArrayDestroy(actualLog);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -133,6 +133,7 @@ int32_t taosMulMkDir(const char *dirname) {
|
|||
code = mkdir(temp, 0755);
|
||||
#endif
|
||||
if (code < 0 && errno != EEXIST) {
|
||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||
return code;
|
||||
}
|
||||
*pos = TD_DIRSEP[0];
|
||||
|
@ -146,6 +147,7 @@ int32_t taosMulMkDir(const char *dirname) {
|
|||
code = mkdir(temp, 0755);
|
||||
#endif
|
||||
if (code < 0 && errno != EEXIST) {
|
||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -203,10 +203,11 @@ int32_t taosRenameFile(const char *oldName, const char *newName) {
|
|||
}
|
||||
|
||||
int32_t taosStatFile(const char *path, int64_t *size, int32_t *mtime) {
|
||||
struct stat fileStat;
|
||||
#ifdef WINDOWS
|
||||
int32_t code = _stat(path, &fileStat);
|
||||
struct _stati64 fileStat;
|
||||
int32_t code = _stati64(path, &fileStat);
|
||||
#else
|
||||
struct stat fileStat;
|
||||
int32_t code = stat(path, &fileStat);
|
||||
#endif
|
||||
if (code < 0) {
|
||||
|
@ -312,6 +313,7 @@ TdFilePtr taosOpenFile(const char *path, int32_t tdFileOptions) {
|
|||
assert(!(tdFileOptions & TD_FILE_EXCL));
|
||||
fp = fopen(path, mode);
|
||||
if (fp == NULL) {
|
||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
|
@ -334,6 +336,7 @@ TdFilePtr taosOpenFile(const char *path, int32_t tdFileOptions) {
|
|||
fd = open(path, access, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
#endif
|
||||
if (fd == -1) {
|
||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -392,179 +392,32 @@ int32_t tsem_timewait(tsem_t* sem, int64_t nanosecs) {
|
|||
// *sem = NULL;
|
||||
// return 0;
|
||||
// }
|
||||
typedef struct {
|
||||
pthread_mutex_t count_lock;
|
||||
pthread_cond_t count_bump;
|
||||
unsigned int count;
|
||||
} bosal_sem_t;
|
||||
|
||||
int tsem_init(tsem_t *psem, int flags, unsigned int count) {
|
||||
bosal_sem_t *pnewsem;
|
||||
int result;
|
||||
|
||||
pnewsem = (bosal_sem_t *)malloc(sizeof(bosal_sem_t));
|
||||
if (!pnewsem) {
|
||||
return -1;
|
||||
}
|
||||
result = pthread_mutex_init(&pnewsem->count_lock, NULL);
|
||||
if (result) {
|
||||
free(pnewsem);
|
||||
return result;
|
||||
}
|
||||
result = pthread_cond_init(&pnewsem->count_bump, NULL);
|
||||
if (result) {
|
||||
pthread_mutex_destroy(&pnewsem->count_lock);
|
||||
free(pnewsem);
|
||||
return result;
|
||||
}
|
||||
pnewsem->count = count;
|
||||
*psem = (tsem_t)pnewsem;
|
||||
*psem = dispatch_semaphore_create(count);
|
||||
if (*psem == NULL) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsem_destroy(tsem_t *psem) {
|
||||
bosal_sem_t *poldsem;
|
||||
|
||||
if (!psem) {
|
||||
return EINVAL;
|
||||
}
|
||||
poldsem = (bosal_sem_t *)*psem;
|
||||
|
||||
pthread_mutex_destroy(&poldsem->count_lock);
|
||||
pthread_cond_destroy(&poldsem->count_bump);
|
||||
free(poldsem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsem_post(tsem_t *psem) {
|
||||
bosal_sem_t *pxsem;
|
||||
int result, xresult;
|
||||
|
||||
if (!psem) {
|
||||
return EINVAL;
|
||||
}
|
||||
pxsem = (bosal_sem_t *)*psem;
|
||||
|
||||
result = pthread_mutex_lock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
pxsem->count = pxsem->count + 1;
|
||||
|
||||
xresult = pthread_cond_signal(&pxsem->count_bump);
|
||||
|
||||
result = pthread_mutex_unlock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
if (xresult) {
|
||||
errno = xresult;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsem_trywait(tsem_t *psem) {
|
||||
bosal_sem_t *pxsem;
|
||||
int result, xresult;
|
||||
|
||||
if (!psem) {
|
||||
return EINVAL;
|
||||
}
|
||||
pxsem = (bosal_sem_t *)*psem;
|
||||
|
||||
result = pthread_mutex_lock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
xresult = 0;
|
||||
|
||||
if (pxsem->count > 0) {
|
||||
pxsem->count--;
|
||||
} else {
|
||||
xresult = EAGAIN;
|
||||
}
|
||||
result = pthread_mutex_unlock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
if (xresult) {
|
||||
errno = xresult;
|
||||
return -1;
|
||||
}
|
||||
if (psem == NULL || *psem == NULL) return -1;
|
||||
dispatch_semaphore_signal(*psem);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsem_wait(tsem_t *psem) {
|
||||
bosal_sem_t *pxsem;
|
||||
int result, xresult;
|
||||
|
||||
if (!psem) {
|
||||
return EINVAL;
|
||||
}
|
||||
pxsem = (bosal_sem_t *)*psem;
|
||||
|
||||
result = pthread_mutex_lock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
xresult = 0;
|
||||
|
||||
if (pxsem->count == 0) {
|
||||
xresult = pthread_cond_wait(&pxsem->count_bump, &pxsem->count_lock);
|
||||
}
|
||||
if (!xresult) {
|
||||
if (pxsem->count > 0) {
|
||||
pxsem->count--;
|
||||
}
|
||||
}
|
||||
result = pthread_mutex_unlock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
if (xresult) {
|
||||
errno = xresult;
|
||||
return -1;
|
||||
}
|
||||
if (psem == NULL || *psem == NULL) return -1;
|
||||
dispatch_semaphore_wait(*psem, DISPATCH_TIME_FOREVER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int tsem_timewait(tsem_t *psem, int64_t nanosecs) {
|
||||
struct timespec abstim = {
|
||||
.tv_sec = 0,
|
||||
.tv_nsec = nanosecs,
|
||||
};
|
||||
|
||||
bosal_sem_t *pxsem;
|
||||
int result, xresult;
|
||||
|
||||
if (!psem) {
|
||||
return EINVAL;
|
||||
}
|
||||
pxsem = (bosal_sem_t *)*psem;
|
||||
|
||||
result = pthread_mutex_lock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
xresult = 0;
|
||||
|
||||
if (pxsem->count == 0) {
|
||||
xresult = pthread_cond_timedwait(&pxsem->count_bump, &pxsem->count_lock, &abstim);
|
||||
}
|
||||
if (!xresult) {
|
||||
if (pxsem->count > 0) {
|
||||
pxsem->count--;
|
||||
}
|
||||
}
|
||||
result = pthread_mutex_unlock(&pxsem->count_lock);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
if (xresult) {
|
||||
errno = xresult;
|
||||
return -1;
|
||||
}
|
||||
if (psem == NULL || *psem == NULL) return -1;
|
||||
dispatch_semaphore_wait(*psem, nanosecs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -595,6 +595,7 @@ int32_t taosGetDiskSize(char *dataDir, SDiskSize *diskSize) {
|
|||
#else
|
||||
struct statvfs info;
|
||||
if (statvfs(dataDir, &info)) {
|
||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||
return -1;
|
||||
} else {
|
||||
diskSize->total = info.f_blocks * info.f_frsize;
|
||||
|
@ -851,13 +852,12 @@ char *taosGetCmdlineByPID(int pid) {
|
|||
}
|
||||
|
||||
void taosSetCoreDump(bool enable) {
|
||||
if (!enable) return;
|
||||
#ifdef WINDOWS
|
||||
// SetUnhandledExceptionFilter(exceptionHandler);
|
||||
// SetUnhandledExceptionFilter(&FlCrashDump);
|
||||
SetUnhandledExceptionFilter(exceptionHandler);
|
||||
SetUnhandledExceptionFilter(&FlCrashDump);
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
#else
|
||||
if (!enable) return;
|
||||
|
||||
// 1. set ulimit -c unlimited
|
||||
struct rlimit rlim;
|
||||
struct rlimit rlim_new;
|
||||
|
|
|
@ -429,7 +429,7 @@ static inline int32_t taosBuildLogHead(char *buffer, const char *flags) {
|
|||
}
|
||||
|
||||
static inline void taosPrintLogImp(ELogLevel level, int32_t dflag, const char *buffer, int32_t len) {
|
||||
if ((dflag & DEBUG_FILE) && tsLogObj.logHandle && tsLogObj.logHandle->pFile != NULL) {
|
||||
if ((dflag & DEBUG_FILE) && tsLogObj.logHandle && tsLogObj.logHandle->pFile != NULL && osLogSpaceAvailable()) {
|
||||
taosUpdateLogNums(level);
|
||||
if (tsAsyncLog) {
|
||||
taosPushLogBuffer(tsLogObj.logHandle, buffer, len);
|
||||
|
@ -451,7 +451,6 @@ static inline void taosPrintLogImp(ELogLevel level, int32_t dflag, const char *b
|
|||
}
|
||||
|
||||
void taosPrintLog(const char *flags, ELogLevel level, int32_t dflag, const char *format, ...) {
|
||||
if (!osLogSpaceAvailable()) return;
|
||||
if (!(dflag & DEBUG_FILE) && !(dflag & DEBUG_SCREEN)) return;
|
||||
|
||||
char buffer[LOG_MAX_LINE_BUFFER_SIZE];
|
||||
|
|
Loading…
Reference in New Issue