博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux tracepoint用法【转】
阅读量:6268 次
发布时间:2019-06-22

本文共 1174 字,大约阅读时间需要 3 分钟。

转自:

在kernel中经常会看到trace_XX形式的函数,但是又找不到它的定义。这个其实是kernel的tracepoint,定义在include/linux/tracepoint.h中。#define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \extern struct tracepoint __tracepoint_##name;\static inline void trace_##name(proto)\{ \if (static_key_false(&__tracepoint_##name.key))\__DO_TRACE(&__tracepoint_##name,\TP_PROTO(data_proto),\TP_ARGS(data_args),\TP_CONDITION(cond),,);\} \__DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args),\PARAMS(cond), PARAMS(data_proto), PARAMS(data_args))\static inline int\register_trace_##name(void (*probe)(data_proto), void *data)\{ \return tracepoint_probe_register(#name, (void *)probe,\data);  \} \static inline int\unregister_trace_##name(void (*probe)(data_proto), void *data)\{ \return tracepoint_probe_unregister(#name, (void *)probe, \  data);  \} \static inline void\check_trace_callback_type_##name(void (*cb)(data_proto))\{ \} \static inline bool\trace_##name##_enabled(void)\{ \return static_key_false(&__tracepoint_##name.key);\}这些trace_开头的函数是由上面这个宏来定义的。trace_要想起作用,需要调用register_trace_##name,给他关联一个probe函数,当调用trace_时就执行probe函数,否则这个trace_不会起实际作用。

 

转载于:https://www.cnblogs.com/sky-heaven/p/8906921.html

你可能感兴趣的文章
Delphi IdTCPClient IdTCPServer 点对点传送文件
查看>>
Delphi中使用ActiveX的一些心得
查看>>
QT5.8.0+MSVC2015安装以及环境配置(不需要安装VS2015)
查看>>
(原創) C/C++的function prototype和header file (C/C++) (C)
查看>>
深入理解JavaScript系列(29):设计模式之装饰者模式
查看>>
程序员的罪与罚
查看>>
SQL*LOADER错误总结
查看>>
SQL日志收缩
查看>>
【转】MySQL Query Cache 小结
查看>>
SVN分支和合并的简单例子
查看>>
PHP实现的封装验证码类
查看>>
Augular初探
查看>>
PHPStorm下XDebug配置
查看>>
【LeetCode】55. Jump Game
查看>>
Android应用盈利广告平台的嵌入方法详解
查看>>
Linux(CentOS6.5) 开放端口,配置防火墙
查看>>
Func与Action
查看>>
Android ViewPager 应该及技巧
查看>>
ODI KM二次开发手册
查看>>
iOS通讯录整合,兼容iOS789写法,附demo
查看>>