Skip to content

Commit

Permalink
undo rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
Derek committed Feb 1, 2017
1 parent be0d60b commit a112514
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
22 changes: 10 additions & 12 deletions tools/argdist.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
class Probe(object):
next_probe_index = 0
streq_index = 0
aliases = {"$PID": "(bpf_get_current_pid_tgid() >> 32)"}
aliases = {"$PID": "bpf_get_current_pid_tgid()"}

def _substitute_aliases(self, expr):
if expr is None:
Expand All @@ -47,9 +47,7 @@ def _generate_entry(self):
text = """
int PROBENAME(struct pt_regs *ctx SIGNATURE)
{
u64 __pid_tgid = bpf_get_current_pid_tgid();
u32 __pid = __pid_tgid; // lower 32 bits
u32 __tgid = __pid_tgid >> 32; // upper 32 bits
u32 pid = bpf_get_current_pid_tgid();
PID_FILTER
COLLECT
return 0;
Expand All @@ -58,17 +56,19 @@ def _generate_entry(self):
text = text.replace("PROBENAME", self.entry_probe_func)
text = text.replace("SIGNATURE",
"" if len(self.signature) == 0 else ", " + self.signature)
text = text.replace("PID_FILTER", self._generate_pid_filter())
pid_filter = "" if self.is_user or self.pid is None \
else "if (pid != %d) { return 0; }" % self.pid
text = text.replace("PID_FILTER", pid_filter)
collect = ""
for pname in self.args_to_probe:
param_hash = self.hashname_prefix + pname
if pname == "__latency":
collect += """
u64 __time = bpf_ktime_get_ns();
%s.update(&__pid, &__time);
%s.update(&pid, &__time);
""" % param_hash
else:
collect += "%s.update(&__pid, &%s);\n" % \
collect += "%s.update(&pid, &%s);\n" % \
(param_hash, pname)
text = text.replace("COLLECT", collect)
return text
Expand Down Expand Up @@ -108,7 +108,7 @@ def _generate_retprobe_prefix(self):
# argument we needed to probe using $entry(name), and they all
# have values (which isn't necessarily the case if we missed
# the method entry probe).
text = ""
text = "u32 __pid = bpf_get_current_pid_tgid();\n"
self.param_val_names = {}
for pname in self.args_to_probe:
val_name = "__%s_val" % pname
Expand Down Expand Up @@ -345,7 +345,8 @@ def _generate_pid_filter(self):
# Kernel probes need to explicitly filter pid, because the
# attach interface doesn't support pid filtering
if self.pid is not None and not self.is_user:
return "if (__tgid != %d) { return 0; }" % self.pid
return "u32 pid = bpf_get_current_pid_tgid();\n" + \
"if (pid != %d) { return 0; }" % self.pid
else:
return ""

Expand All @@ -359,9 +360,6 @@ def generate_text(self):
if self.probe_type == "t"
else "int PROBENAME(struct pt_regs *ctx SIGNATURE)") + """
{
u64 __pid_tgid = bpf_get_current_pid_tgid();
u32 __pid = __pid_tgid; // lower 32 bits
u32 __tgid = __pid_tgid >> 32; // upper 32 bits
PID_FILTER
PREFIX
if (!(FILTER)) return 0;
Expand Down
2 changes: 1 addition & 1 deletion tools/cpudist.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# Licensed under the Apache License, Version 2.0 (the "License")

from __future__ import print_function
from bcc import BPF
from bcc import BPF, Tracepoint
from time import sleep, strftime
import argparse

Expand Down

0 comments on commit a112514

Please sign in to comment.