Comments (1)
It seems like the compiler is eliminating the line
flags |= (__u64) sample_size << 32;
for whatever reason:
$ llvm-objdump-9 -S elfs/send.o
elfs/send.o: file format ELF64-BPF
Disassembly of section xdp/send:
0000000000000000 xdp_send_prog:
0: 61 12 00 00 00 00 00 00 r2 = *(u32 *)(r1 + 0)
1: 61 13 04 00 00 00 00 00 r3 = *(u32 *)(r1 + 4)
2: 3d 32 0c 00 00 00 00 00 if r2 >= r3 goto +12 <LBB0_2>
3: b7 04 00 00 ad de 00 00 r4 = 57005
4: 6b 4a f8 ff 00 00 00 00 *(u16 *)(r10 - 8) = r4
5: 1f 23 00 00 00 00 00 00 r3 -= r2
6: 6b 3a fa ff 00 00 00 00 *(u16 *)(r10 - 6) = r3
7: bf a4 00 00 00 00 00 00 r4 = r10
8: 07 04 00 00 f8 ff ff ff r4 += -8
9: 18 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r2 = 0 ll
11: 18 03 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 r3 = 4294967295 ll
13: b7 05 00 00 04 00 00 00 r5 = 4
14: 85 00 00 00 19 00 00 00 call 25
0000000000000078 LBB0_2:
15: b7 00 00 00 02 00 00 00 r0 = 2
16: 95 00 00 00 00 00 00 00 exit
The line
11: 18 03 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 r3 = 4294967295 ll
means that the third argument (r3
) is always set to 4294967295 which is just the decimal representation of 0xffffffff aka BPF_F_CURRENT_CPU. My suspicion is that there is some weirdness because sample_size is 16 bits wide, but then shifted left by 32 bits which always produces zero.
Try something like the following:
flags |= ((__u64)sample_size) << 32;
Also, there is another bug in your code: if sample_size is > SAMPLE_SIZE you'll get an EOF.
from ebpf.
Related Issues (20)
- Add BatchLookup support for a pointer to a slice HOT 8
- Missing support for iterating over per-CPU maps HOT 2
- bpf2go issues with s390x arch HOT 4
- MapFiles are not cleaned properly HOT 2
- The initial load of BTF using CO-RE mode takes up 40MB of memory HOT 1
- May I ask how to set the cache size of ebpf map perf? HOT 1
- Can't load CO-RE eBPF code that accesses enum values HOT 2
- Add test suite for netkit devices HOT 8
- loader: `__ksym` support for variables
- loader: handle missing kfunc gracefully
- Support for CORE type matches relocation
- NewMapFromID() needs a warning in docstring HOT 2
- Add support for cgroup unix socket address hooks HOT 1
- CI: TestMapBatch/Hash is flaky (arm64?) HOT 1
- dae can not recognize pppoe dial-up interface and route out correctly. HOT 1
- Kernel version detection does not work with vDSO disabled HOT 6
- Allow changing line info data in btf.Line HOT 11
- load program: invalid argument: unknown func bpf_redirect_peer#155 (51 line(s) omitted)
- With the program type raw_tracepoint, no data is generated.error: loading objects: field TraceSchedWakeup: program trace_sched_wakeup: load program: permission denied: 5: (61) r1 = *(u32 *)(r7 +2784): R7 invalid mem access 'inv' (5 line(s) omitted HOT 1
- Test TestPerfReaderWakeupEvents gets stuck on some runs HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ebpf.