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

JohnBirrell

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

JohnBirrell

StaceySon

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.)

JohnBirrell

Implement args beyond arg4.

JohnBirrell

StaceySon

committed

Implement lockstat -- including both driver and command. See lockstat kernel patch, lockstat cmd patch, and ksyms pseudo driver.

JohnBirrell

Implement toxic ranges.

JohnBirrell

Implement stop() action.

JohnBirrell

Port MDB DTrace-related dcmds to FreeBSD debugger.

JohnBirrell

StaceySon

committed

Get stack() action working. (Committed a while ago.)

JohnBirrell

Need to add mailbox IPI's to allow a function to be executed on another CPU.

JohnBirrell

Credentials and privileges need a lot of work.

JohnBirrell

The ability to trace a process running on a different CPU is an important part of DTrace. Somebody needs to test that.

JohnBirrell

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.

JohnBirrell

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().

JohnBirrell

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.

StaceySon

RuiPaulo

committed

Add symbol support to libproc.

StaceySon

Add missing built-in variables: ipl, zonename (jailname)

StaceySon

StaceySon

committed

Add missing built-in variable 'uregs[]'. See uregs patch.

StaceySon

StaceySon

committed

Add missing built-in variable 'ustackdepth'. See ustackdepth patch

StaceySon

StaceySon

committed

Add missing built-in variable 'ucaller'. See ucaller patch

StaceySon

Get uaddr(), ufunc(), umod(), and usym() action funtions working.

StaceySon

StaceySon

committed

Fix prochandler() in dtrace.c so that 'dtrace -c' works correctly. See prochandler preliminary patch

StaceySon

SDT provider support for kernel modules. Reported by np@.

StaceySon

AndriyGapon

committed

DTrace is missing symbol info for kernel modules. Reported by np@.

review = needs code review, wip = "work in progress"

Available patches

References


CategoryDTrace CategoryTODO

DTraceTODO (last edited 2011-05-28 13:13:40 by MarkLinimon)