-
Notifications
You must be signed in to change notification settings - Fork 10
Harpoon port #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Harpoon port #6
Conversation
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
|
this looks awesome! |
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
Signed-off-by: MinhPhan8803 <[email protected]>
e648081 to
182bf51
Compare
rex-macros/src/kprobe.rs
Outdated
| format!("rex/kprobe/{}", self.function.as_ref().unwrap()) | ||
| format!("rex/{}/{}", flavor, self.function.as_ref().unwrap()) | ||
| } else { | ||
| "rex/kprobe".to_string() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This does not respect the kprobe flavor
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably we could put the flavor inside the KProbe struct
samples/harpoon/Cargo.toml
Outdated
| @@ -0,0 +1,31 @@ | |||
| [package] | |||
| name = "hello" | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just remember to change the sample name/metadata in all places.
rex-macros/src/kprobe.rs
Outdated
| format!("rex/kprobe/{}", self.function.as_ref().unwrap()) | ||
| format!("rex/{}/{}", flavor, self.function.as_ref().unwrap()) | ||
| } else { | ||
| "rex/kprobe".to_string() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably we could put the flavor inside the KProbe struct
| process.kill() | ||
| std_out, std_err = process.communicate(timeout=7) | ||
| re_match = re.findall( | ||
| r"bpf_trace_printk: Rust triggered from PID \d+ on CPU .+", std_out, re.M |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will we have sanity test case for harpoon?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, but I haven't started working on the backend for the userspace app yet so I haven't really thought about what tests will look like.
…method to grab pointer from tp_ctx, fix KproveFlavor use, fix TaskStruct::get_comm use Signed-off-by: MinhPhan8803 <[email protected]>
81d75ef to
30f8795
Compare
… app Signed-off-by: MinhPhan8803 <[email protected]>
b451d02 to
6d23109
Compare
Signed-off-by: MinhPhan8803 <[email protected]>
16729ef to
b665e07
Compare
|
Btw the commits are a mess right now. I will just reset all changes and redo the commits once this is done. |
b665e07 to
db99e10
Compare
Signed-off-by: MinhPhan8803 <[email protected]>
db99e10 to
6590fae
Compare
You could try |
Currently WIP, not available to merge yet.
Add definition for
PerfEventArrayand its helper symbols. For thebpf_perf_event_outputsymbol specifically, currently only thebpf_perf_event_output_tpvariant is supported.Add the
StreamableProgramtrait that program types that can stream events throughPerfEventArrayshould implement. This allows unifying the various streaming symbols into a singleStreamableProgram::output_event()method in a manner similar to the overloaded helperbpf_perf_event_output().Add a
rex_uprobemacro and aKprobeFlavorenum inrex-macros/src/kprobe.rsto allow switching between kprobe variants inKProbe::expand().Misc changes:
TaskStruct::get_comm()now returns a direct reference to the program name as a&CStr.BPF_F_CURRENT_CPUconstant asCURRENT_CPU.