[dtrace-discuss] How to get from file descriptor to file name

Jim Mauro James.Mauro at Sun.COM
Tue Feb 13 19:16:19 PST 2007


Check out this discussion thread:

http://www.opensolaris.org/jive/thread.jspa?messageID=72813&#72813

And Mike's blog:

http://blogs.sun.com/mws/entry/dtrace_inlines_translators_and_file

Where he describes the fds[] array, with this example:

$ dtrace -q -s /dev/stdin
syscall::write:entry
/ execname == "ksh" && fds[arg0].fi_oflags & O_APPEND /
{
        printf("ksh %d appending to %s\n", pid, fds[arg0].fi_pathname);
}


This will accomplish what you wish...

/jim


MC wrote:
>
> I am enabling the syscall::write:entry probe on a running process.  
> Within dtrace, I have easy access to the file descriptor.  I can also 
> easily cross-reference this using pfiles to determine the filename.  I 
> am interested in doing this from within dtrace.  I started with 
> curpsinfo and from there I was going to access the user struct and 
> follow the trail to the vnode where I expected I would find the goods 
> I am interested in.  Once I include <sys/proc.h> I get error messages 
> related to <sys/kstat.h>.
>
> I suspect that there is an easier way.  I'm new to this, so I'll 
> appreciate whatever pointer you can give me.
>
> This is somewhat of a pointless exercise, as I have what I need, but 
> I'm using this as an opportunity to learn.  What is the dtrace way?
>
> Given that i didn't have enabled probes when the file was opened, and 
> I'm in the action clause with a file descriptor, how do I get the name 
> of the file?
>
> Thanks,
> Chris
> ------------------------------------------------------------------------
>
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss at opensolaris.org
>   


More information about the dtrace-discuss mailing list