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