11b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans#include "test/jemalloc_test.h" 21b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans 31b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans/* 41b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans * Sleep for approximately ns nanoseconds. No lower *nor* upper bound on sleep 51b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans * time is guaranteed. 61b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans */ 71b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evansvoid 81b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evansmq_nanosleep(unsigned ns) 91b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans{ 101b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans 111b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans assert(ns <= 1000*1000*1000); 121b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans 131b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans#ifdef _WIN32 141b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans Sleep(ns / 1000); 151b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans#else 16e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans { 17e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans struct timespec timeout; 181b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans 19e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans if (ns < 1000*1000*1000) { 20e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans timeout.tv_sec = 0; 21e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans timeout.tv_nsec = ns; 22e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans } else { 23e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans timeout.tv_sec = 1; 24e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans timeout.tv_nsec = 0; 25e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans } 26e475ff16004d9a7c76a01a71e6a52323e6bf1485Jason Evans nanosleep(&timeout, NULL); 271b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans } 281b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans#endif 291b0e4abbfdbcc1c1a71d1f617adb19951109bfceJason Evans} 30