- 27 Apr, 2018 3 commits
-
-
4ast authored
introduce C++ get_syscall_fnname API
-
yonghong-song authored
Support Cgroup Array in BCC
-
Yonghong Song authored
This fixed issue #1695 for C++. The example HelloWorld.cc and tests test_libbcc also got fixed. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 26 Apr, 2018 9 commits
-
-
yonghong-song authored
document cflags argument to BPF()
-
Matthew Ahrens authored
-
yonghong-song authored
Refactor profile.py stack id error handling
-
4ast authored
using get_syscall_fnname to get kprobe func name for tools
-
Teng Qin authored
-
Teng Qin authored
-
Teng Qin authored
-
Teng Qin authored
-
yonghong-song authored
Refactor offwaketime stack id error handling
-
- 25 Apr, 2018 4 commits
-
-
Matthew Ahrens authored
-
Teng Qin authored
-
4ast authored
introduce new BPF APIs to get kernel syscall entry func name/prefix
-
Yonghong Song authored
Fixed tools which are attached to syscall entry functions "sys_*". Instead, use get_syscall_fnname to get proper names. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 24 Apr, 2018 5 commits
-
-
Yonghong Song authored
As described in issue #1695, on 4.17 for syscalls on x86, both sys_<fnname> and SyS_<fnname> are gone, the replacements are __ia32_sys_sync and __x64_sys_sync. The commit in Linus tree: https://github.com/torvalds/linux/commit/d5a00528b58cdb2c71206e18bd021e34c4eab878 This patch introduced two APIs for python BPF object. The API get_syscall_prefix() returns the prefix "sys_"/"__x64_sys_". The API get_syscall_fnname(name) returns kernel function name for the syscall, e.g., on x64, get_syscall_fnname("clone") will return "sys_clone" if kernel has it, otherwise, "__x64_sys_clone". get_syscall_prefix() is mostly useful for the regex func specifier of attach_kprobe(). This patch only fixed the code using python API on examples and tests directory. TOTO: python on tools directory, C++ and lua Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
print out more useful attach_kprobe failure information
-
Yonghong Song authored
As stated in issue #1695, the following commit https://github.com/torvalds/linux/commit/5c8dad48e4f53d6fd0a7e4f95d7c1c983374de88 removed corresponding dmesg when attach_kprobe failed, and userspace needs to print out proper error messages. Signed-off-by: Yonghong Song <yhs@fb.com>
-
yonghong-song authored
Add -c option for profile.py
-
yonghong-song authored
Fix offwaketime PID / TGID handling
-
- 23 Apr, 2018 1 commit
-
-
Teng Qin authored
-
- 20 Apr, 2018 2 commits
-
-
Teng Qin authored
-
yonghong-song authored
Refactor offcputime stack id error handling
-
- 19 Apr, 2018 4 commits
-
-
yonghong-song authored
Use better kprobes for runqlat.py
-
Teng Qin authored
-
yonghong-song authored
Fix probe name encoding in Python 3
-
Javier Honduvilla Coto authored
-
- 18 Apr, 2018 3 commits
-
-
4ast authored
fix profile.py with latest net-next
-
yonghong-song authored
fixing bpflist
-
Nikita V. Shirokov authored
when you have lots of shortlived progs, there is posibillity of race condition during proc scanning. you could get pid of this shortlived prog, but when you will start to read it's fd/ dir it will fail, as prog would be already terminated
-
- 17 Apr, 2018 3 commits
-
-
Cong Wang authored
-
Yonghong Song authored
The profile.py tries to validate whether the "ip" from the context register is a kernel ip address or not by comparing "ip" to the kernel PAGE_OFFSET. On non-x86_64 architectures, PAGE_OFFSET can be directly used. On x86_64 architecture, things become more complex. With 4.17 (latest linus tree), __PAGE_OFFSET_BASE is gone and replaced with __PAGE_OFFSET_BASE_L5 and __PAGE_OFFSET_BASE_L4 for 5 and 4 level page table respectively. Running profile.py will have the following error: /virtual/main.c:41:18: error: use of undeclared identifier '__PAGE_OFFSET_BASE' if (ip > __PAGE_OFFSET_BASE) { ^ 1 error generated. So, for 4.17, __PAGE_OFFSET_BASE_{L4, L5} should be used. For 4.16 and some old kernels (e.g., 4.11), which I did not check earlier one, __PAGE_OFFSET_BASE should be used. For even older kernels like 4.6, PAGE_OFFSET should be used. Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
fix python3 py_test_histogram failure
-
- 16 Apr, 2018 3 commits
-
-
yonghong-song authored
QoL improvements for inject
-
Yonghong Song authored
With python3 (specifically 3.6.3), py_test_histogram failed with: Traceback (most recent call last): File "./test_histogram.py", line 106, in test_multiple_key bucket_sort_fn=bucket_sort) File "/usr/lib/python3.6/site-packages/bcc/table.py", line 318, in print_log2_hist buckets = bucket_sort_fn(buckets) File "./test_histogram.py", line 98, in bucket_sort buckets.sort() AttributeError: 'dict_keys' object has no attribute 'sort' The reason is for a dictionary tmp, tmp.keys() returns an object of keys (a list) instead of the list itself for python3. Using list(tmp.keys()) seems working for both python2 and python3. Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
fix test_libbcc failure with 4.15.
-
- 15 Apr, 2018 1 commit
-
-
Yonghong Song authored
The test sleeps one second and expects the perf counter to be one second or more. But in reality (probably esp. in VM which I conducted my experiments), I mostly saw counters between 0.9s - 1s and occasionally 0.8s - 0.9s. So be a little bit conservative here when checking the result. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 13 Apr, 2018 2 commits
-
-
yonghong-song authored
filetop: probe vfs_read and vfs_write instead to fix inlining issue
-
Howard McLauchlan authored
-