1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef HIPERF_LIBREPORT_H 16 #define HIPERF_LIBREPORT_H 17 18 #if is_mingw 19 #define DLL_EXPORT __declspec(dllexport) 20 #else 21 #define DLL_EXPORT __attribute__((visibility("default"))) 22 #endif 23 24 #if is_ohos || is_double_framework 25 // error: '__cdecl' calling convention is not supported for this target 26 // [-Werror,-Wignored-attributes] 27 #define CDECL 28 #else 29 #define CDECL __cdecl 30 #endif 31 32 extern "C" { 33 /* 34 demo usage in script/loadlib_test.py 35 */ 36 37 // this is a loop back test 38 // will return the const char with caller send to us 39 DLL_EXPORT const char *CDECL EchoLoopBack(const char *); 40 41 // set the hiperf in debug mode , it will print some detail log for debug 42 // log will save in current dir 43 // return 0 means suucessed 44 DLL_EXPORT int CDECL SetDebug(bool enable); 45 46 // same as "hiperf report", will create a report file with ascii code 47 // parameter: 48 // perfFile the perf.data file path 49 // reportFile the output file path 50 // reportOptions options pass to report 51 // return 0 means suucessed 52 DLL_EXPORT int CDECL Report(const char *perfFile, const char *reportFile, 53 const char *reportOptions); 54 55 // same as "hiperf report --json" 56 // will output the report as json format 57 // our html template will read this for UI show 58 // parameter: 59 // perfFile the perf.data file path 60 // reportFile the output file path 61 // return 0 means suucessed 62 DLL_EXPORT int CDECL ReportJson(const char *perfFile, const char *reportFile); 63 64 // same as "hiperf report --json --symbol-dir <dir>" 65 // will output the report as json format and also unwind with --symbol-dir 66 // our html template will read this for UI show 67 // parameter: 68 // perfFile the perf.data file path 69 // reportFile the output file path 70 // return 0 means suucessed 71 DLL_EXPORT int CDECL ReportUnwindJson(const char *perfFile, const char *reportFile, 72 const char *symbolsDir); 73 74 // same as "hiperf report dump" 75 // must be give the the perf.data file path 76 // return 0 means suucessed 77 DLL_EXPORT int CDECL Dump(const char *); 78 79 // when give the perf.data file path 80 // will return a const char with this format 81 // [filepath,buildid],[filepath,buildid],[filepath,buildid],[filepath,buildid],.... 82 // python use this for build id match 83 DLL_EXPORT const char *CDECL ReportGetSymbolFiles(const char *perfFile); 84 85 // when give the elf file path 86 // will return the buildId in this elf 87 // return "" when no buildId found 88 DLL_EXPORT const char *CDECL ReportGetBuildId(const char *elfPath); 89 90 // when give the elf file path 91 // will return the arch in this elf 92 // now support "arm","arm64","x86","x86_64" 93 // return machine id(const char in ascii) when not support 94 // return "unknown" when failed happend 95 DLL_EXPORT const char *CDECL ReportGetElfArch(const char *elfPath); 96 } 97 #endif // HIPERF_LIBREPORT_H 98