summaryrefslogtreecommitdiff
path: root/internal/c/generate_tracepoints_c.raku
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-09 00:34:44 +0300
committerPaul Buetow <paul@buetow.org>2025-10-09 00:34:44 +0300
commit91632ae9e2f49cb046b5899f190890b9d139ed89 (patch)
treed68006bf9ff907697712ecbf648d4a4c57143453 /internal/c/generate_tracepoints_c.raku
parent2fc3b42d2aeb816bb8d36ad4fd078a55005a25e2 (diff)
initial handle by open_at syscalls
Diffstat (limited to 'internal/c/generate_tracepoints_c.raku')
-rw-r--r--internal/c/generate_tracepoints_c.raku14
1 files changed, 13 insertions, 1 deletions
diff --git a/internal/c/generate_tracepoints_c.raku b/internal/c/generate_tracepoints_c.raku
index e52a24a..c1ba954 100644
--- a/internal/c/generate_tracepoints_c.raku
+++ b/internal/c/generate_tracepoints_c.raku
@@ -94,6 +94,15 @@ class Dup3Tracepoint does TracepointTemplate {
}
}
+class OpenByHandleAtTracepoint does TracepointTemplate {
+ method generate-bpf-c-tracepoint(%vals --> Str) {
+ my Str $extra = qq:to/BPF_C_CODE/;
+ ev->flags = (__s32)ctx->args[2];
+ BPF_C_CODE
+ self.template: %vals.append( ( event-struct => 'open_by_handle_at_event', :$extra ).hash );
+ }
+}
+
class NameTracepoint does TracepointTemplate {
method generate-bpf-c-tracepoint(%vals --> Str) {
my Int \oldname-field-number = %vals<format>.field-number('oldname');
@@ -248,6 +257,9 @@ class Format {
multi method set-format-impl('sys_enter_connect', $, $) { }
multi method set-format-impl('sys_enter_fanotify_init', $, $) { }
multi method set-format-impl('sys_enter_getpeername', $, $) { }
+ multi method set-format-impl('sys_enter_name_to_handle_at', $, $) { $!format-impl = PathnameTracepoint.new('pathname') }
+ multi method set-format-impl('sys_enter_open_by_handle_at', $, $) { $!format-impl = OpenByHandleAtTracepoint.new }
+
# Explicitly map some tracepoints
multi method set-format-impl(Str $s where /^sys_enter.*open.*/, 'const char *', 'filename') { $!format-impl = OpenTracepoint.new }
@@ -281,7 +293,7 @@ class Format {
method can-generate returns Bool { so $!format-impl.^can('generate-bpf-c-tracepoint') }
method enter-reject returns Bool { $!format-impl !~~ any(
- FdTracepoint, NameTracepoint, OpenTracepoint, PathnameTracepoint, FcntlTracepoint, NullTracepoint, Dup3Tracepoint
+ FdTracepoint, NameTracepoint, OpenTracepoint, PathnameTracepoint, FcntlTracepoint, NullTracepoint, Dup3Tracepoint, OpenByHandleAtTracepoint
) }
}