mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-30 20:40:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*---------------------------------------------------------------------------*\
 | |
| 
 | |
|   FILE........: machdep.h
 | |
|   AUTHOR......: David Rowe
 | |
|   DATE CREATED: May 2 2013
 | |
| 
 | |
|   Machine dependant functions, e.g. profiling that requires access to a clock
 | |
|   counter register.
 | |
| 
 | |
| \*---------------------------------------------------------------------------*/
 | |
| 
 | |
| /*
 | |
|   Copyright (C) 2013 David Rowe
 | |
| 
 | |
|   All rights reserved.
 | |
| 
 | |
|   This program is free software; you can redistribute it and/or modify
 | |
|   it under the terms of the GNU Lesser General Public License version 2.1, as
 | |
|   published by the Free Software Foundation.  This program is
 | |
|   distributed in the hope that it will be useful, but WITHOUT ANY
 | |
|   WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | |
|   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
 | |
|   License for more details.
 | |
| 
 | |
|   You should have received a copy of the GNU Lesser General Public License
 | |
|   along with this program; if not, see <http://www.gnu.org/licenses/>.
 | |
| */
 | |
| 
 | |
| #ifndef __MACHDEP__
 | |
| #define __MACHDEP__
 | |
| 
 | |
| namespace FreeDV
 | |
| {
 | |
| 
 | |
| #ifdef PROFILE
 | |
| #define PROFILE_VAR(...) unsigned int __VA_ARGS__
 | |
| #define PROFILE_SAMPLE(timestamp) timestamp = machdep_profile_sample()
 | |
| #define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label) \
 | |
|     timestamp = machdep_profile_sample_and_log(prev_timestamp, label)
 | |
| #define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label) \
 | |
|     machdep_profile_sample_and_log(prev_timestamp, label)
 | |
| #else
 | |
| #define PROFILE_VAR(...)
 | |
| #define PROFILE_SAMPLE(timestamp)
 | |
| #define PROFILE_SAMPLE_AND_LOG(timestamp, prev_timestamp, label)
 | |
| #define PROFILE_SAMPLE_AND_LOG2(prev_timestamp, label)
 | |
| #endif
 | |
| 
 | |
| void         machdep_profile_init(void);
 | |
| void         machdep_profile_reset(void);
 | |
| unsigned int machdep_profile_sample(void);
 | |
| unsigned int machdep_profile_sample_and_log(unsigned int start, char s[]);
 | |
| void         machdep_profile_print_logged_samples(void);
 | |
| 
 | |
| } // FreeDV
 | |
| 
 | |
| #endif
 |