DTrace TODO
This page is for brainstorming and coordinating efforts with DTrace development. Anyone who has and idea/wish can add an item and if you work on one of those you grab it. You can always contact GeorgeNevilleNeil, RobertWatson, or StaceySon in case you do not have write access to the wiki, have questions or want to work on this but are not (yet;-) a FreeBSD committer.
DTrace TODO items
added by |
responsible |
state |
task |
|
wip |
We need a BSD version of libelf. Or at least one that can handle host endian != target endian. This affects cross-builds on dissimilar architectures (like i386 host, sparc64 target). See LibElf |
|
committed |
Get ustack()/jstack() actions working. See ustack patch. (Only outputs hex PC values for now because of the lack of symbol table support in libproc.) |
||
|
|
Implement args beyond arg4. |
|
committed |
Implement lockstat -- including both driver and command. See lockstat kernel patch, lockstat cmd patch, and ksyms pseudo driver. |
||
|
|
Implement toxic ranges. |
|
|
|
Implement stop() action. |
|
|
|
Port MDB DTrace-related dcmds to FreeBSD debugger. |
|
committed |
Get stack() action working. (Committed a while ago.) |
||
|
|
Need to add mailbox IPI's to allow a function to be executed on another CPU. |
|
|
|
Credentials and privileges need a lot of work. |
|
|
|
The ability to trace a process running on a different CPU is an important part of DTrace. Somebody needs to test that. |
|
|
|
Solaris has a vmem subsystem which is an integral part of their virtual memory. In DTrace, vmem is only used to create resource IDs. We can use a simple implementation of the functions: vmem_create(), vmem_destroy(), vmem_alloc(), and vmem_free(). We should just create a bitmap to keep track of which resource numbers we've allocated. Bit zero would be resource ID = 1. Re-allocate the bitmap to a larger one as required. We don't need to keep the 4 function names above. Doing that would probably confuse people. We should just add compatibility definitions to map whatever function names we choose to the names that the Solaris code wants. |
|
|
|
Solaris has a cache as part of vmem too. We need an implementation of the functions: vmem_cache_create(), vmem_cache_destroy(), vmem_cache_alloc(), and vmem_cache_free(). |
|
|
|
There are lots of places in the build where the ctfconvert and ctfmerge tools complain about the objects they are processing. Those issues need to be resolved. |
|
committed |
Add symbol support to libproc. |
||
|
|
Add missing built-in variables: ipl, zonename (jailname) |
|
committed |
Add missing built-in variable 'uregs[]'. See uregs patch. |
||
committed |
Add missing built-in variable 'ustackdepth'. See ustackdepth patch |
||
committed |
Add missing built-in variable 'ucaller'. See ucaller patch |
||
|
|
Get uaddr(), ufunc(), umod(), and usym() action funtions working. |
|
committed |
Fix prochandler() in dtrace.c so that 'dtrace -c' works correctly. See prochandler preliminary patch |
||
|
|
SDT provider support for kernel modules. Reported by np@. |
|
committed |
DTrace is missing symbol info for kernel modules. Reported by np@. |
review = needs code review, wip = "work in progress"
Available patches
References
DWARF: devel/dwarfdump http://dwarfstd.org/