From 91632ae9e2f49cb046b5899f190890b9d139ed89 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 9 Oct 2025 00:34:44 +0300 Subject: initial handle by open_at syscalls --- internal/c/generate_tracepoints_c.raku | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'internal/c/generate_tracepoints_c.raku') 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.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 ) } } -- cgit v1.2.3