Mercurial > dwindows
comparison compat.c @ 870:59c4fac42fb5
Need to use tv_sec if tv_nsec exceeds one second on Solaris.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 04 Apr 2011 04:37:05 +0000 |
parents | 830e1f3672b9 |
children | b15ad609365e |
comparison
equal
deleted
inserted
replaced
869:21aa7434e7c5 | 870:59c4fac42fb5 |
---|---|
20 #include <mntent.h> | 20 #include <mntent.h> |
21 #include <sys/vfs.h> | 21 #include <sys/vfs.h> |
22 #endif | 22 #endif |
23 #endif | 23 #endif |
24 #include <time.h> | 24 #include <time.h> |
25 #include <errno.h> | |
25 | 26 |
26 #if defined(__UNIX__) || defined(__MAC__) | 27 #if defined(__UNIX__) || defined(__MAC__) |
27 void msleep(long period) | 28 void msleep(long period) |
28 { | 29 { |
29 #ifdef __sun__ | 30 #ifdef __sun__ |
30 /* usleep() isn't threadsafe on Solaris */ | 31 /* usleep() isn't threadsafe on Solaris */ |
31 struct timespec req; | 32 struct timespec req; |
32 | 33 |
33 req.tv_sec = 0; | 34 req.tv_sec = 0; |
35 if(period >= 1000) | |
36 { | |
37 req.tv_sec = (int)(period / 1000); | |
38 period -= (req.tv_sec * 1000); | |
39 } | |
34 req.tv_nsec = period * 10000000; | 40 req.tv_nsec = period * 10000000; |
35 | 41 |
36 nanosleep(&req, NULL); | 42 nanosleep(&req, NULL); |
37 #else | 43 #else |
38 usleep(period * 1000); | 44 usleep(period * 1000); |
39 #ifdef __MAC__ | 45 #ifdef __MAC__ |
40 _dw_pool_drain(); | 46 _dw_pool_drain(); |