Skip to content

Commit 41ea15c

Browse files
committed
fix global analyzer not called error in timeline mode
Lacking of the 'mode' field in probe_analyzer, it is not called anymore. Therefore, adding corresponding mode to it. Signed-off-by: Menglong Dong <imagedong@tencent.com>
1 parent d6d8da2 commit 41ea15c

3 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/analysis.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ static inline fake_analy_ctx_t
6464
analy_fake_ctx_add(fake);
6565

6666
get_fake_analy_ctx(fake);
67-
pr_debug("fake ctx alloc: %llx\n", PTR2X(fake));
67+
pr_debug("fake ctx alloc: %llx, %llx\n", PTR2X(fake), key);
6868
return fake;
6969
}
7070

@@ -309,7 +309,7 @@ void tl_poll_handler(void *raw_ctx, int cpu, void *data, u32 size)
309309
}
310310
e = entry->event;
311311
entry->cpu = cpu;
312-
pr_debug("create entry: %llx\n", PTR2X(entry));
312+
pr_debug("create entry: %llx, %llx\n", PTR2X(entry), e->key);
313313

314314
fake = analy_fake_ctx_fetch(e->key);
315315
if (!fake) {
@@ -367,7 +367,8 @@ do_ret:;
367367
}
368368
entry = analy_exit.entry;
369369
if (!entry) {
370-
pr_err("entry for exit not found\n");
370+
pr_err("entry for exit not found: %llx\n",
371+
analy_exit.event.val);
371372
return;
372373
}
373374

@@ -424,13 +425,13 @@ static inline void rule_run(analy_entry_t *entry, trace_t *trace, int ret)
424425
hit = rule->range.min < ret && rule->range.max > ret;
425426
break;
426427
case RULE_RETURN_LT:
427-
hit =rule->expected < ret;
428+
hit = rule->expected < ret;
428429
break;
429430
case RULE_RETURN_GT:
430-
hit =rule->expected > ret;
431+
hit = rule->expected > ret;
431432
break;
432433
case RULE_RETURN_NE:
433-
hit =rule->expected != ret;
434+
hit = rule->expected != ret;
434435
break;
435436
default:
436437
continue;
@@ -506,9 +507,12 @@ DEFINE_ANALYZER_EXIT(clone, TRACE_MODE_TIMELINE_MASK | TRACE_MODE_INETL_MASK)
506507
{
507508
analy_entry_t *entry = e->entry;
508509

509-
if (!entry || !e->event.val)
510+
if (!entry || !e->event.val) {
511+
pr_err("skb clone failed\n");
510512
goto out;
513+
}
511514

515+
pr_debug("clone analyzer triggered on: %llx\n", e->event.val);
512516
analy_fake_ctx_alloc(e->event.val, entry->ctx);
513517
if (trace_mode_intel())
514518
rule_run(entry, trace, 0);

src/trace.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,11 @@ static int trace_prepare_args()
184184
trace_t *trace;
185185
char *tmp, *cur;
186186

187+
if (args->basic + args->intel + args->drop > 1) {
188+
pr_err("multi-mode specified!\n");
189+
goto err;
190+
}
191+
187192
if (args->basic)
188193
trace_ctx.mode = TRACE_MODE_BASIC;
189194

src/trace_probe.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ static void probe_trace_ready()
204204
}
205205

206206
analyzer_t probe_analyzer = {
207+
.mode = TRACE_MODE_INETL_MASK | TRACE_MODE_TIMELINE_MASK,
207208
.analy_entry = probe_analy_entry,
208209
.analy_exit = probe_analy_exit,
209210
};

0 commit comments

Comments
 (0)