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();