[DTrace-devel] [PATCH v5 0/6] DTrace TCP provider
Alan Maguire
alan.maguire at oracle.com
Tue Jul 22 10:07:43 UTC 2025
This series adds TCP provider support, where the probes are
implemented via underlying fbt and sdt probes.
Due to the use of the sock/inet_sock_set_state tracepoint, intended
for ~5.15 kernels and later. Tried replacing this with
fbt::tcp_set_state:entry
but this misses a few state transitions, so stuck with using
the tracepoint.
All tests under test/unittest/tcp pass unmodified on an upstream
(6.15) kernel and 5.15 UEK7U3 kernel. The updated remote address
retrieval patch helps ensure tests can all be run.
It implements all documented TCP provider probes:
accept-established, accept-refused, connnect-request,
connect-established, connect-refused, receive, send,
state-change
Note that to function correctly this series depends on the
cg-related patches:
parser: add dt_node_is_tstring()
cg: validate tstring alloc/free
cg: optimize ternary expressions for strings
tstring: fix leaks
Changes since v4:
- updated patch 1 to rename dt_cg_get_member() to
dt_cg_tramp_get_member() and have it make use of
dt_cg_ctf_offsetof() (Kris, patch 1)
- remove tslot update patch since it is handled elsewhere
(Kris)
- added R-Bs from Kris
Changes since v3:
- fix patch 2 to really use/describe 6 tstring slots (patch 2)
Changes since v2:
- document tslots change properly, add test (Eugene, patch 2, 3)
- move more generic type definitions to net.d
- retain depends_on provider tcp in tcp.d (Kris, patch 5)
- use depends_on library ip.d to ensure loading order (patch 5)
- revert tcp flags to uint8_t (Kris, patch 5)
- improve comments in tcp.d (Kris, Eugene, patch 5)
- fix up handling of ip:::send for older kernels to avoid null
dereferences (Eugene, patch 5)
- fix up provider arguments to match spec (Eugene, patch 5)
Changes since RFC:
- fixed issues with test failures on UEK7 due to missing
SYN_RCV state change
- moved get_member() to dt_cg.c (patch 1)
Alan Maguire (6):
cg: refactor get_member() to use dt_cg_ctf_offsetof
test/operators: extend ternary tests to cover inet_ntoa*()s
providers: move network-generic definitions to net.d
tcp: new provider
dlibs: sync ip.d, net.d and tcp.d
unittest/tcp: update test.x
dlibs/aarch64/5.11/ip.d | 27 +-
dlibs/aarch64/5.11/net.d | 31 +-
dlibs/aarch64/5.11/tcp.d | 67 +++--
dlibs/aarch64/5.12/ip.d | 27 +-
dlibs/aarch64/5.12/net.d | 31 +-
dlibs/aarch64/5.12/tcp.d | 67 +++--
dlibs/aarch64/5.14/ip.d | 27 +-
dlibs/aarch64/5.14/net.d | 31 +-
dlibs/aarch64/5.14/tcp.d | 67 +++--
dlibs/aarch64/5.16/ip.d | 27 +-
dlibs/aarch64/5.16/net.d | 31 +-
dlibs/aarch64/5.16/tcp.d | 67 +++--
dlibs/aarch64/5.2/ip.d | 27 +-
dlibs/aarch64/5.2/net.d | 31 +-
dlibs/aarch64/5.2/tcp.d | 67 +++--
dlibs/aarch64/5.6/ip.d | 27 +-
dlibs/aarch64/5.6/net.d | 31 +-
dlibs/aarch64/5.6/tcp.d | 67 +++--
dlibs/aarch64/6.1/ip.d | 27 +-
dlibs/aarch64/6.1/net.d | 31 +-
dlibs/aarch64/6.1/tcp.d | 67 +++--
dlibs/aarch64/6.10/ip.d | 27 +-
dlibs/aarch64/6.10/net.d | 31 +-
dlibs/aarch64/6.10/tcp.d | 67 +++--
dlibs/x86_64/5.11/ip.d | 27 +-
dlibs/x86_64/5.11/net.d | 31 +-
dlibs/x86_64/5.11/tcp.d | 67 +++--
dlibs/x86_64/5.12/ip.d | 27 +-
dlibs/x86_64/5.12/net.d | 31 +-
dlibs/x86_64/5.12/tcp.d | 67 +++--
dlibs/x86_64/5.14/ip.d | 27 +-
dlibs/x86_64/5.14/net.d | 31 +-
dlibs/x86_64/5.14/tcp.d | 67 +++--
dlibs/x86_64/5.16/ip.d | 27 +-
dlibs/x86_64/5.16/net.d | 31 +-
dlibs/x86_64/5.16/tcp.d | 67 +++--
dlibs/x86_64/5.2/ip.d | 27 +-
dlibs/x86_64/5.2/net.d | 31 +-
dlibs/x86_64/5.2/tcp.d | 67 +++--
dlibs/x86_64/5.6/ip.d | 27 +-
dlibs/x86_64/5.6/net.d | 31 +-
dlibs/x86_64/5.6/tcp.d | 67 +++--
dlibs/x86_64/6.1/ip.d | 27 +-
dlibs/x86_64/6.1/net.d | 31 +-
dlibs/x86_64/6.1/tcp.d | 67 +++--
dlibs/x86_64/6.10/ip.d | 27 +-
dlibs/x86_64/6.10/net.d | 31 +-
dlibs/x86_64/6.10/tcp.d | 67 +++--
libdtrace/Build | 2 +
libdtrace/dt_cg.c | 57 +++-
libdtrace/dt_cg.h | 4 +-
libdtrace/dt_prov_io.c | 84 +++---
libdtrace/dt_prov_ip.c | 45 +--
libdtrace/dt_prov_proc.c | 4 +-
libdtrace/dt_prov_sched.c | 2 +-
libdtrace/dt_prov_tcp.c | 413 ++++++++++++++++++++++++++
libdtrace/dt_prov_uprobe.c | 4 +-
libdtrace/dt_provider.c | 1 +
libdtrace/dt_provider.h | 1 +
libdtrace/ip.d | 27 +-
libdtrace/net.d | 31 +-
libdtrace/tcp.d | 67 +++--
test/unittest/operators/tst.ternary.d | 20 +-
test/unittest/operators/tst.ternary.r | 2 +
test/unittest/tcp/test.x | 8 +-
65 files changed, 1731 insertions(+), 1041 deletions(-)
create mode 100644 libdtrace/dt_prov_tcp.c
--
2.43.5
More information about the DTrace-devel
mailing list