Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
tracegen.cpp
Go to the documentation of this file.
1
// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Rafael Roquetto <rafael.roquetto@kdab.com>
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4
#
include
"provider.h"
5
#
include
"hitrace.h"
6
#
include
"ctf.h"
7
#
include
"lttng.h"
8
#
include
"etw.h"
9
#
include
"callback.h"
10
#
include
"panic.h"
11
12
#
include
<
qstring
.
h
>
13
#
include
<
qfile
.
h
>
14
15
enum
class
Target
16
{
17
LTTNG
,
18
ETW
,
19
HITRACE
,
20
CTF
,
21
CALLBACK
,
22
};
23
24
static
inline
void
usage
(
int
status)
25
{
26
printf(
"Usage: tracegen <lttng|etw|hitrace|ctf|callback> <input file> <output file>\n"
);
27
exit(status);
28
}
29
30
static
void
parseArgs
(
int
argc,
char
*argv[],
Target
*target, QString *inFile, QString *outFile)
31
{
32
if
(argc == 1)
33
usage
(
EXIT_SUCCESS
)
;
34
if
(argc != 4)
35
usage
(
EXIT_FAILURE
)
;
36
37
const
char
*targetString = argv[1];
38
39
if
(qstrcmp(targetString,
"lttng"
) == 0) {
40
*target =
Target
::
LTTNG
;
41
}
else
if
(qstrcmp(targetString,
"etw"
) == 0) {
42
*target =
Target
::
ETW
;
43
}
else
if
(qstrcmp(targetString,
"hitrace"
) == 0) {
44
*target =
Target
::
HITRACE
;
45
}
else
if
(qstrcmp(targetString,
"ctf"
) == 0) {
46
*target =
Target
::
CTF
;
47
}
else
if
(qstrcmp(targetString,
"callback"
) == 0) {
48
*target =
Target
::
CALLBACK
;
49
}
else
{
50
fprintf(stderr,
"Invalid target: %s\n"
, targetString);
51
usage
(
EXIT_FAILURE
)
;
52
}
53
54
*inFile = QLatin1StringView(argv[2]);
55
*outFile = QLatin1StringView(argv[3]);
56
}
57
58
int
main
(
int
argc,
char
*argv[])
59
{
60
Target
target =
Target
::
LTTNG
;
61
QString inFile;
62
QString outFile;
63
64
parseArgs(argc, argv, &target, &inFile, &outFile);
65
66
Provider
p = parseProvider(inFile);
67
68
QFile out(outFile);
69
70
if
(!out.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
71
panic(
"Cannot open '%s' for writing: %s"
,
72
qPrintable
(outFile),
qPrintable
(out.errorString()));
73
}
74
75
switch
(target) {
76
case
Target
::
HITRACE
:
77
writeHiTrace
(out, p);
78
break
;
79
case
Target
::
CTF
:
80
writeCtf(out, p);
81
break
;
82
case
Target
::
LTTNG
:
83
writeLttng(out, p);
84
break
;
85
case
Target
::
ETW
:
86
writeEtw(out, p);
87
break
;
88
case
Target
::
CALLBACK
:
89
writeCallback(out, p);
90
break
;
91
}
92
93
return
0;
94
}
writeHiTrace
void writeHiTrace(QFile &file, const Provider &provider)
Definition
hitrace.cpp:413
qPrintable
#define qPrintable(string)
Definition
qstring.h:1718
main
int main(int argc, char *argv[])
[ctor_close]
Definition
src_corelib_animation_qpropertyanimation.cpp:100
Provider
Definition
provider.h:82
Target
Target
Definition
tracegen.cpp:16
Target::CTF
@ CTF
Definition
tracegen.cpp:20
Target::LTTNG
@ LTTNG
Definition
tracegen.cpp:17
Target::ETW
@ ETW
Definition
tracegen.cpp:18
Target::CALLBACK
@ CALLBACK
Definition
tracegen.cpp:21
Target::HITRACE
@ HITRACE
Definition
tracegen.cpp:19
usage
static void usage(int status)
Definition
tracegen.cpp:24
parseArgs
static void parseArgs(int argc, char *argv[], Target *target, QString *inFile, QString *outFile)
Definition
tracegen.cpp:30
qtbase
src
tools
tracegen
tracegen.cpp
Generated on
for Qt by
1.16.1