2832
|
1 /*
|
|
2 * my_profile.h
|
|
3 *
|
|
4 * Copyright (C) Nick Kurshev <nickols_k@mail.ru> - Oct 2001
|
|
5 *
|
|
6 * You can redistribute this file under terms and conditions
|
|
7 * of GNU General Public licence v2.
|
|
8 * This file is partly based on vbetest.c from lrmi distributive.
|
|
9 */
|
|
10 #ifndef MY_PROFILE_INC
|
|
11 #define MY_PROFILE_INC
|
|
12
|
|
13 extern unsigned long long int my_profile_start,my_profile_end,my_profile_total;
|
|
14
|
|
15 #if defined ( ENABLE_PROFILE ) && defined ( ARCH_X86 )
|
|
16 static inline unsigned long long int read_tsc( void )
|
|
17 {
|
|
18 unsigned long long int retval;
|
|
19 __asm __volatile ("rdtsc":"=A"(retval)::"memory");
|
|
20 return retval;
|
|
21 }
|
|
22
|
|
23 #define PROFILE_START() (my_profile_start=read_tsc())
|
|
24 #define PROFILE_END(your_message) { my_profile_end=read_tsc(); my_profile_total+=my_profile_end - my_profile_start; printf(your_message" current=%llu total=%llu\n\t",my_profile_end-my_profile_start,my_profile_total); }
|
|
25 #else
|
|
26 #define PROFILE_INIT()
|
|
27 #define PROFILE_START()
|
|
28 #define PROFILE_END(your_message)
|
|
29 #endif
|
|
30
|
|
31
|
|
32
|
|
33 #endif |