diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-27 20:00:30 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-27 20:00:30 +0200 |
| commit | 139d2dca45306071a30562a94b69ac20ada515c8 (patch) | |
| tree | e09bef5c06e90cbd3254da5370caac942c6aa336 /internal/c/generated/tracepoints.raku | |
| parent | 5d2c6a86494b461b4dde5579abadec6f558c4845 (diff) | |
s/size/ret/ to make it more generic
Diffstat (limited to 'internal/c/generated/tracepoints.raku')
| -rw-r--r-- | internal/c/generated/tracepoints.raku | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/internal/c/generated/tracepoints.raku b/internal/c/generated/tracepoints.raku index 563a028..1de8a0e 100644 --- a/internal/c/generated/tracepoints.raku +++ b/internal/c/generated/tracepoints.raku @@ -36,11 +36,18 @@ class Format { has Str $.name is rw; has Int $.id is rw; has Field @.fields is rw; + # file descriptor passed to syscalls. has Bool $.has-fd is rw = False; + # Syscall returns with a long value (e.g. bytes read/written) + has Bool $.has-long-ret is rw = False; method push(Field $field) { push @!fields: $field; - $!has-fd = True if ($field.name eq 'fd' && $field.type eq 'unsigned int'); + if ($field.name eq 'fd' && $field.type eq 'unsigned int') { + $!has-fd = True; + } elsif ($field.name eq 'ret' && $field.type eq 'long') { + $.has-long-ret = True; + } } method generate-constant returns Str { @@ -49,8 +56,11 @@ class Format { method generate-probe returns Str { my \is-enter = $!name.split('_')[1] eq 'enter'; - my \ctx-struct = is-enter ?? 'trace_event_raw_sys_enter' !! 'trace_event_raw_sys_exit'; - my \event-struct = is-enter ?? 'fd_event' !! 'null_event'; + my \is-exit = !is-enter; + my \ctx-struct = is-enter ?? 'trace_event_raw_sys_enter' + !! 'trace_event_raw_sys_exit'; + my \event-struct = is-enter ?? 'fd_event' + !! ($!has-long-ret ?? 'ret_event' !! 'null_event'); qq:to/END/; SEC("tracepoint/syscalls/{$!name}") @@ -67,7 +77,8 @@ class Format { ev->pid = pid; ev->tid = tid; ev->time = bpf_ktime_get_ns() / 1000; - {is-enter ?? 'ev->fd = (int)ctx->args[0];' !! ''} + {is-enter ?? 'ev->fd = (int)ctx->args[0];' + !! ($!has-long-ret ?? 'ev->ret = ctx->ret;' !! '') } bpf_ringbuf_submit(ev, 0); return 0; |
