Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ycai
simbricks
Commits
112986a9
Commit
112986a9
authored
Dec 29, 2020
by
Antoine Kaufmann
Browse files
tracing: combine all four logs
parent
6de69667
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
23 deletions
+53
-23
trace/process.cpp
trace/process.cpp
+52
-23
trace/process.h
trace/process.h
+1
-0
No files found.
trace/process.cpp
View file @
112986a9
...
...
@@ -4,6 +4,12 @@
#include "parser.h"
#include "process.h"
struct
log_parser_cmp
{
bool
operator
()
(
const
log_parser
*
l
,
const
log_parser
*
r
)
const
{
return
l
->
cur_event
->
ts
<
r
->
cur_event
->
ts
;
}
};
int
main
(
int
argc
,
char
*
argv
[])
{
sym_map
syms
;
...
...
@@ -28,32 +34,55 @@ int main(int argc, char *argv[])
syms
.
load_file
(
"i40e.dump"
,
0xffffffffa0000000ULL
);
std
::
cerr
<<
"map loaded"
<<
std
::
endl
;
gem5_parser
client
(
syms
);
//gem5_parser server(syms);
//nicbm_parser client;
nicbm_parser
server
;
client
.
open
(
argv
[
1
]);
server
.
open
(
argv
[
2
]);
client
.
next_event
();
server
.
next_event
();
while
(
client
.
cur_event
||
server
.
cur_event
)
{
event
*
ev
;
const
char
*
pref
;
if
(((
client
.
cur_event
&&
server
.
cur_event
)
&&
client
.
cur_event
->
ts
<=
server
.
cur_event
->
ts
)
||
(
!
server
.
cur_event
&&
client
.
cur_event
))
std
::
set
<
log_parser
*>
all_parsers
;
gem5_parser
ch
(
syms
);
gem5_parser
sh
(
syms
);
nicbm_parser
cn
;
nicbm_parser
sn
;
ch
.
open
(
argv
[
1
]);
cn
.
open
(
argv
[
2
]);
sh
.
open
(
argv
[
3
]);
sn
.
open
(
argv
[
4
]);
ch
.
label
=
cn
.
label
=
"C"
;
sh
.
label
=
sn
.
label
=
"S"
;
all_parsers
.
insert
(
&
ch
);
all_parsers
.
insert
(
&
cn
);
all_parsers
.
insert
(
&
sh
);
all_parsers
.
insert
(
&
sn
);
std
::
set
<
log_parser
*
,
log_parser_cmp
>
active_parsers
;
for
(
auto
p
:
all_parsers
)
{
if
(
p
->
next_event
()
&&
p
->
cur_event
)
active_parsers
.
insert
(
p
);
}
uint64_t
ts_off
=
0
;
while
(
!
active_parsers
.
empty
())
{
auto
i
=
active_parsers
.
begin
();
log_parser
*
p
=
*
i
;
active_parsers
.
erase
(
i
);
EHostCall
*
hc
;
event
*
ev
=
p
->
cur_event
;
if
(
p
==
&
ch
&&
(
hc
=
dynamic_cast
<
EHostCall
*>
(
ev
))
&&
hc
->
fun
==
"__sys_sendto"
)
{
ev
=
client
.
cur_event
;
client
.
next_event
();
pref
=
"C"
;
}
else
{
ev
=
server
.
cur_event
;
server
.
next_event
();
pref
=
"S"
;
std
::
cout
<<
"---------- REQ START:"
<<
ev
->
ts
<<
std
::
endl
;
ts_off
=
ev
->
ts
;
}
std
::
cout
<<
pref
<<
" "
;
std
::
cout
<<
p
->
label
<<
" "
;
ev
->
ts
-=
ts_off
;
ev
->
ts
/=
1000
;
ev
->
dump
(
std
::
cout
);
delete
ev
;
if
(
p
->
next_event
()
&&
p
->
cur_event
)
active_parsers
.
insert
(
p
);
}
}
trace/process.h
View file @
112986a9
...
...
@@ -49,6 +49,7 @@ class log_parser {
virtual
void
process_line
(
char
*
line
,
size_t
len
)
=
0
;
public:
const
char
*
label
;
event
*
cur_event
;
log_parser
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment