nsclock.c
Go to the documentation of this file.00001 #ifndef key_noIO
00002
00003 #include <stdio.h>
00004 #include <time.h>
00005
00006 #ifdef __sgi
00007
00008 long delta_t=0;
00009
00010 long sgi_ticks_per_sec_() {
00011 struct timespec t;
00012 clock_getres( CLOCK_SGI_CYCLE, &t );
00013 delta_t = (long)t.tv_sec*1000000000 + (long)t.tv_nsec;
00014 return 1000000000/delta_t;
00015 }
00016
00017 long sgi_tick_() {
00018 struct timespec t;
00019 if( delta_t==0 ) (void) sgi_ticks_per_sec_();
00020 clock_gettime( CLOCK_SGI_CYCLE, &t );
00021 return ( (long)t.tv_sec*1000000000+(long)t.tv_nsec )/delta_t;
00022 }
00023
00024 long sgi_max_tick_() {
00025 #include <sys/syssgi.h>
00026 return syssgi(SGI_CYCLECNTR_SIZE);
00027 }
00028 #endif
00029
00030 #ifdef test_nsclock
00031 void main() {
00032 #ifdef __sgi
00033 printf( "ticks per second=%li\n", sgi_ticks_per_sec_() );
00034 printf( "delta_t=%li\n", delta_t );
00035 printf( "max tick=%li\n", sgi_max_tick_() );
00036 #else
00037 printf( "ticks per second=%i\n", CLOCKS_PER_SEC );
00038 #endif
00039 }
00040 #endif
00041
00042 #endif