00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __JackTime__
00022 #define __JackTime__
00023
00024 #include "types.h"
00025 #include "JackExports.h"
00026 #include <stdio.h>
00027
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032
00033 #if defined(__APPLE__)
00034
00035 #include <mach/mach_time.h>
00036 #include <unistd.h>
00037
00038 extern double __jack_time_ratio;
00039
00040 static inline jack_time_t GetMicroSeconds(void) {
00041 return (jack_time_t) (mach_absolute_time () * __jack_time_ratio);
00042 }
00043
00044
00045 extern void InitTime();
00046
00047 static inline void JackSleep(long usec) {
00048 usleep(usec);
00049 }
00050
00051 #endif
00052
00053 #ifdef WIN32
00054
00055 extern EXPORT LARGE_INTEGER _jack_freq;
00056
00057 extern EXPORT jack_time_t GetMicroSeconds(void) ;
00058
00059 extern void InitTime();
00060
00061 static void JackSleep(long usec) {
00062 Sleep(usec / 1000);
00063 }
00064
00065 #endif
00066
00067 #ifdef linux
00068
00069 #include <unistd.h>
00070
00071 static inline void JackSleep(long usec) {
00072 usleep(usec);
00073 }
00074
00075 #ifdef GETCYCLE_TIME
00076 #include "cycles.h"
00077 extern jack_time_t __jack_cpu_mhz;
00078 extern jack_time_t GetMhz();
00079 extern void InitTime();
00080 static inline jack_time_t GetMicroSeconds (void) {
00081 return get_cycles() / __jack_cpu_mhz;
00082 }
00083 #else
00084 #include <time.h>
00085 extern void InitTime();
00086 static inline jack_time_t GetMicroSeconds (void) {
00087 struct timespec ts;
00088 clock_gettime(CLOCK_MONOTONIC, &ts);
00089 return (jack_time_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
00090 }
00091 #endif
00092
00093 #endif
00094
00095 #ifdef __cplusplus
00096 }
00097 #endif
00098
00099
00100 #endif
00101
00102
00103