Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Pondelok, 26. október 2026

Rozdiely pre libplaton/platon/misc/rdtsc.h medzi verziami 1.2 a 1.3

verzia 1.2, 2002/07/15 18:46:09 verzia 1.3, 2002/07/15 18:56:41
Riadok 1 
Riadok 1 
 #ifndef _PLATON_UTILS_RDTSC_H  #ifndef _PLATON_UTILS_RDTSC_H
 #define _PLATON_UTILS_RDTSC_H  #define _PLATON_UTILS_RDTSC_H
   
 #define RDTSC_MIN       0  #define RDTSC_FIRST     0 /* set the first results; default behaviour */
 #define RDTSC_MAX       1  #define RDTSC_MIN       1 /* set the shortest result */
 #define RDTSC_AVG       2  #define RDTSC_MAX       2 /* set the longest result */
   #define RDTSC_AVG       3 /* set the average result */
   
 #ifdef __cplusplus  #ifdef __cplusplus
 extern "C" {  extern "C" {
 #endif  #endif
   
 #define rdtsc_min(code, count, result) rdtsc_core(RDTSC_MIN, code, count, result)  #define rdtsc_first(code, count, result) rdtsc_core(RDTSC_FIRST, code, count, result)
 #define rdtsc_max(code, count, result) rdtsc_core(RDTSC_MAX, code, count, result)  #define rdtsc_min(code, count, result)   rdtsc_core(RDTSC_MIN, code, count, result)
 #define rdtsc_avg(code, count, result) rdtsc_core(RDTSC_AVG, code, count, result)  #define rdtsc_max(code, count, result)   rdtsc_core(RDTSC_MAX, code, count, result)
   #define rdtsc_avg(code, count, result)   rdtsc_core(RDTSC_AVG, code, count, result)
   
 #define rdtsc_core(type, code, count, result) \  #define rdtsc_core(type, code, count, result) \
         do { \          do { \
                 unsigned long __start, __end, __result, __i; \                  unsigned long __start, __end, __result, __i; \
                         for (__i = 0; __i < count; __i++) { \                  for (__i = 0; __i < count; __i++) { \
                                 __asm__ __volatile__("rdtsc" : "=a" (__start) : : "edx"); \                          __asm__ __volatile__("rdtsc" : "=a" (__start) : : "edx"); \
                                 (code); \                          (code); \
                                 __asm__ __volatile__("rdtsc" : "=a" (__end) : : "edx"); \                          __asm__ __volatile__("rdtsc" : "=a" (__end) : : "edx"); \
                                 __end -= __start; \                          __end -= __start; \
                                 if (type == RDTSC_AVG) { \                          if (type == RDTSC_AVG) { \
                                         __result = (__result * i + __end) / (i + 1); \                                  __result = (__result * i + __end) / (i + 1); \
                                 } \  
                                 else { \  
                                         if (! __i \  
                                                         || (type == RDTSC_MIN && __end < __result) \  
                                                         || (type == RDTSC_MAX && __end > __result)) \  
                                                 __result = __end; \  
                                 } \  
                         } \                          } \
                           else { \
                                   if (! __i \
                                                   || (type == RDTSC_MIN && __end < __result) \
                                                   || (type == RDTSC_MAX && __end > __result)) \
                                           __result = __end; \
                           } \
                   } \
                 result = __result; \                  result = __result; \
         } while(0)          } while(0)
   

Legend:
Odstranené z verzie1.2  
zmenené riadky
  Pridané vo verzii1.3

Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok