| /* Copyright (C) 2014-2015 The Android Open Source Project | |
| ** | |
| ** This software is licensed under the terms of the GNU General Public | |
| ** License version 2, as published by the Free Software Foundation, and | |
| ** may be copied, distributed, and modified under those terms. | |
| ** | |
| ** 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. | |
| */ | |
| #ifndef _CODE_PROFILE_H_ | |
| #define _CODE_PROFILE_H_ | |
| #include "cpu.h" | |
| #include "exec/cpu-defs.h" | |
| // Function type used to record the execution of a given | |
| // TranslationBlock. |tb_pc| is the _guest_ address of the | |
| // corresponding translated basic block, and |tb_size| is its | |
| // size in bytes. | |
| typedef void (*CodeProfileRecordFunc)(target_ulong tb_pc, uint32_t tb_size); | |
| // A function callback used to record the execution of translated | |
| // block, used to implement code profiling. If not NULL, this | |
| // function is called at runtime everytime a new basic block | |
| // is executed under non-accelerated emulation. | |
| extern CodeProfileRecordFunc code_profile_record_func; | |
| // A string to indicate where profile will be stored. Profiling will | |
| // be turned off if its value is NULL. | |
| extern const char *code_profile_dirname; | |
| #endif |