This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

newbie question : how to access ptr->member.member->data?


Hi,
Trying out systemtap. Running into this problem.

--script begin--
[om@testserv ~]$ cat /space/stap/inode-watch.stp
# Usage:
# taps the vfs_write and vfs_read
#

probe kernel.function ("vfs_read"), kernel.function("vfs_write")
{
       inode = $file->f_dentry->d_inode->i_ino
       dev_nr = $file->f_dentry->d_inode->i_sb->s_dev

}
-- script end--
--errors begin--
[om@testserv ~]$ stap -vv -u /space/stap/inode-watch.stp
SystemTap translator/driver (version 0.6.2/0.127 built 2008-03-27)
Copyright (C) 2005-2008 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
Created temporary directory "/tmp/stap6uzgp4"
Searched '/usr/share/systemtap/tapset/x86_64/*.stp', found 1
Searched '/usr/share/systemtap/tapset/*.stp', found 37
Pass 1: parsed user script and 38 library script(s) in 130usr/0sys/134real ms.
probe vfs_read@fs/read_write.c:257 kernel section=.text pc=0xffffffff81098064
probe vfs_write@fs/read_write.c:315 kernel section=.text pc=0xffffffff81097eed
semantic error: field 'f_dentry' not found (alternatives: f_u f_path f_op f_count f_flags f_mode f_pos f_owner f_uid f_gid f_ra f_version f_security private_data f_ep_links f_ep_lock f_mapping): identifier '$file' at /space/stap/inode-watch.stp:7:10
semantic error: field 'f_dentry' not found (alternatives: f_u f_path f_op f_count f_flags f_mode f_pos f_owner f_uid f_gid f_ra f_version f_security private_data f_ep_links f_ep_lock f_mapping): identifier '$file' at /space/stap/inode-watch.stp:8:11
semantic error: probe_1063 with unresolved type: identifier 'inode' at /space/stap/inode-watch.stp:7:2
semantic error: probe_1063 with unresolved type: identifier 'dev_nr' at /space/stap/inode-watch.stp:8:2
semantic error: probe_1064 with unresolved type: identifier 'inode' at /space/stap/inode-watch.stp:7:2
semantic error: probe_1064 with unresolved type: identifier 'dev_nr' at /space/stap/inode-watch.stp:8:2
Pass 2: analyzed script: 2 probe(s), 0 function(s), 0 embed(s), 0 global(s) in 230usr/70sys/306real ms.
Pass 2: analysis failed. Try again with more '-v' (verbose) options.
Running rm -rf /tmp/stap6uzgp4
--errors end--


I know why the error occur.
From include/linux/fs.h,
#define f_dentry    f_path.dentry

Apparently f_dentry cannot be used from systemtap.
If I replace f_dentry with fpath.dentry, systemtap complains about string operations because `.` is string concatenation operator.


Any idea? Any pointers?

Thanks,
Om.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]