SW10013 This is for utrace only; uprobes is related. For test.d 'dtrace -h -s test.d' emits in test.h __extension__ extern long test_semaphore __attribute__ ((unused)) __attribute__ ((section (".probes"))); and for 'dtrace -G test.d' adds the definition The changes for sdt.h are simple for a change, it checks that value before each probe setup. session.h defines a map from filename to variable location tapset-utrace.cxx will produce the following additional generated code: add 'struct task_struct *tsk;' to stap_utrace_probe since there is not a means to determine the task from systemtap_module_exit in _stp_utrace_probe_cb add for each probe if the filename matches. (There is not a means to determine what probe brought us here so incrementing only the concerned probe is a challenge) size_t sdt_semaphore = 1; __access_process_vm (tsk, 0x601230, &sdt_semaphore, sizeof (sdt_semaphore), 0); sdt_semaphore += 1; in systemtap_module_exit add for each probe if the filename matches size_t sdt_semaphore; __access_process_vm (tsk, 0x601230, &sdt_semaphore, sizeof (sdt_semaphore, 0); sdt_semaphore -= 1; __access_process_vm (tsk, 0x601230, &sdt_semaphore, sizeof (sdt_semaphore), 1); In tapsets.cxx record the mapping from filename to variable location In translate.cxx include a new "access_process_vm.h" (see itrace.c)