/* * Copyright (c) 2019 TAOS Data, Inc. * * 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 . */ #define _DEFAULT_SOURCE #include "os.h" #if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) void taosMsleep(int32_t ms) { Sleep(ms); } #else #include /* 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(int32_t mseconds) { #if 1 usleep(mseconds * 1000); #else struct timeval timeout; int32_t 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); */ #endif } #endif