mirror of
https://github.com/ipxe/ipxe
synced 2025-12-15 17:12:54 +03:00
[profile] Add generic profiling infrastructure
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
29
src/arch/x86_64/include/bits/profile.h
Normal file
29
src/arch/x86_64/include/bits/profile.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef _BITS_PROFILE_H
|
||||
#define _BITS_PROFILE_H
|
||||
|
||||
/** @file
|
||||
*
|
||||
* Profiling
|
||||
*
|
||||
*/
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER );
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* Get profiling timestamp
|
||||
*
|
||||
* @ret timestamp Timestamp
|
||||
*/
|
||||
static inline __attribute__ (( always_inline )) uint64_t
|
||||
profile_timestamp ( void ) {
|
||||
uint32_t eax;
|
||||
uint32_t edx;
|
||||
|
||||
/* Read timestamp counter */
|
||||
__asm__ __volatile__ ( "rdtsc" : "=a" ( eax ), "=d" ( edx ) );
|
||||
return ( ( ( ( uint64_t ) edx ) << 32 ) | eax );
|
||||
}
|
||||
|
||||
#endif /* _BITS_PROFILE_H */
|
||||
Reference in New Issue
Block a user