注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

User-Space Probes(uprobe)  

2013-12-11 01:19:20|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://lxr.free-electrons.com/source/Documentation/trace/uprobetracer.txt

829  * uprobe_register - register a probe
830  * @inode: the file in which the probe has to be placed.
831  * @offset: offset from the start of the file.
832  * @uc: information on howto handle the probe..
833  *
834  * Apart from the access refcount, uprobe_register() takes a creation
835  * refcount (thro alloc_uprobe) if and only if this @uprobe is getting
836  * inserted into the rbtree (i.e first consumer for a @inode:@offset
837  * tuple).  Creation refcount stops uprobe_unregister from freeing the
838  * @uprobe even before the register operation is complete. Creation
839  * refcount is released when the last @uc for the @uprobe
840  * unregisters.
841  *
842  * Return errno if it cannot successully install probes
843  * else return 0 (success)
844  */
845 int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *uc)
关键还是这个uprobe_register函数,systemtap也是把stp脚本转成内核模块,然后通过这个注释到内核里面。跟kprobe一样的,访问用户空间的变量,靠得还是copy_from_user系列的函数吧。
root@debian01:/home/bright/uprobes# cat uprobe_register.stp 
#! /usr/bin/env stap

probe kernel.function("uprobe_register"){
	print ("uprobe_regeister is called\n")
}
可以通过 stap -v -k 来查看编译过程和生成的内核模块的源码
stap -vvv 打印更多详细的信息




  评论这张
 
阅读(595)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017