[DTrace-devel] [PATCH v4 00/25] USDT, phase 1

Nick Alcock nick.alcock at oracle.com
Fri Oct 7 10:25:04 UTC 2022


(Only changed patches where the change constitutes more than a new s-o-b
included in this mailing.)

This reroll fixes most things Kris pointed out in his review (the
largest missing pieces are one aarch64 TODO and some validation I'm not
getting rid of until the next phase, when the pieces are in place to
implement it differently).

To wit (in roughly increasing order of importance):
 - wording improvements in various commit logs
 - add some missing signed-off-bys
 - only run the <sys/dtrace_types.h> test on the non-installed testsuite
 - split out the header+symbol checking into a new commit
 - fix installation of the udev rule
 - rename Pinode_to_map to Pinode_to_file_map and fix field names to match
 - split out the infrastructure shared by the daemon and (libdtrace or
   libproc) into a new libcommon directory, and a new set of commits
 - re-typedefize dof_parser.c (now in libcommon) and fix some little
   naming consistency nits
 - split validate_emit_probe into separate validation and emission
   functions: in phase 2 validation will likely move entirely elsewhere
 - rename probe_creation_info_t to dof_parsed_t, and drop the dpi.
   union member in favour of an anonymous union
 - only emit variable-size probe_creation_info_t's when emitting union
   members whose size is actually variable
 - nit fixes in dtprobed.c (variable names, duplicate debug vars,
   comment improvements etc)
 - error handling improvements in the dtprobed ioctl code; split out
   DOF processing into a separate function
 - move some mis-split changes (notably to include/dtrace/pid.h and
   dt_prov_pid.c) into the right commits; all commits now compile,
   though a few need a make clean first
 - drop the testsuite arg-count-check removal commit (apparently
   it's useful after all)
 - pass down the probe name components in probe args rather than
   the probe name, distinguishing args from each other with a
   trailing differentiator character; move away from the uprobes/
   group to dt_pid/; their length limits are largely lifted now
 - pass down and use the DTrace-provided provider name rather than
   mixing all providers together (whoops!)

There are also some fixes for bugs I spotted on my own:
 - adjust some XFAILs (test/unittest/usdt/tst.enable_or.d and
   test/unittest/usdt/tst.tailcall.d pass;
   test/unittest/pid/tst.provregex3.sh needs wildcard provider
   name matching and fails now we're not mixing up providers)
 - soup up mapping debug printout a bit
 - fix installation of drti and the systemd service file
 - stop the systemd service from being killed every 5s (!)
 - ensure that sdt probes don't get created for usdt uprobes
   despite the changed group name; drop another gets() use in
   favour of getline() while we're touching that bit
 - fix argument retrieval for usdt probes on platforms with
   PT_REGS_ARGSTKBASE > 0
 - rewrite the probe name parser in dt_pid_create_usdt_probes to
   use sscanf rather than painful by-hand string scanning

The range-diff is a bit... long. To generate it yourself, assuming the
tips of the old and new review branches are in nix/review/usdt and
nix/review/2/usdt:

git range-diff 397113673a6671ad4ee7571c2826e3fe9426d9e3..nix/review/usdt 397113673a6671ad4ee7571c2826e3fe9426d9e3..nix/review/2/usdt

(you probably want a dtrace new enough to use the ort merge strategy,
which chases the file renamings across libcommon and commit resplittings
much better, though some shorter files still come out as complete
removals/replacements rather than move-and-amendments.)

-- 
2.35.1




More information about the DTrace-devel mailing list