• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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