xref: /aosp_15_r20/external/jemalloc_new/test/src/mq.c (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker 
3*1208bc7eSAndroid Build Coastguard Worker /*
4*1208bc7eSAndroid Build Coastguard Worker  * Sleep for approximately ns nanoseconds.  No lower *nor* upper bound on sleep
5*1208bc7eSAndroid Build Coastguard Worker  * time is guaranteed.
6*1208bc7eSAndroid Build Coastguard Worker  */
7*1208bc7eSAndroid Build Coastguard Worker void
mq_nanosleep(unsigned ns)8*1208bc7eSAndroid Build Coastguard Worker mq_nanosleep(unsigned ns) {
9*1208bc7eSAndroid Build Coastguard Worker 	assert(ns <= 1000*1000*1000);
10*1208bc7eSAndroid Build Coastguard Worker 
11*1208bc7eSAndroid Build Coastguard Worker #ifdef _WIN32
12*1208bc7eSAndroid Build Coastguard Worker 	Sleep(ns / 1000);
13*1208bc7eSAndroid Build Coastguard Worker #else
14*1208bc7eSAndroid Build Coastguard Worker 	{
15*1208bc7eSAndroid Build Coastguard Worker 		struct timespec timeout;
16*1208bc7eSAndroid Build Coastguard Worker 
17*1208bc7eSAndroid Build Coastguard Worker 		if (ns < 1000*1000*1000) {
18*1208bc7eSAndroid Build Coastguard Worker 			timeout.tv_sec = 0;
19*1208bc7eSAndroid Build Coastguard Worker 			timeout.tv_nsec = ns;
20*1208bc7eSAndroid Build Coastguard Worker 		} else {
21*1208bc7eSAndroid Build Coastguard Worker 			timeout.tv_sec = 1;
22*1208bc7eSAndroid Build Coastguard Worker 			timeout.tv_nsec = 0;
23*1208bc7eSAndroid Build Coastguard Worker 		}
24*1208bc7eSAndroid Build Coastguard Worker 		nanosleep(&timeout, NULL);
25*1208bc7eSAndroid Build Coastguard Worker 	}
26*1208bc7eSAndroid Build Coastguard Worker #endif
27*1208bc7eSAndroid Build Coastguard Worker }
28