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

本文共 1120 字,大约阅读时间需要 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_不会起实际作用。

 

转载地址:http://bwykl.baihongyu.com/

你可能感兴趣的文章
C# ListView用法
查看>>
android 虚线
查看>>
about_Execution_Policies
查看>>
OC中几种延时操作的比較
查看>>
PHP使用api的两种方法
查看>>
hosts不支持泛解析
查看>>
Mac mysql 解决中文乱码
查看>>
Linux基础:xargs命令
查看>>
小程序支持连Wi-Fi,代码包到4M
查看>>
Android 最流行的吸顶效果的实现及代码
查看>>
AT&T汇编指令
查看>>
老王讲架构:负载均衡
查看>>
Nginx+uwsgi+Django 的web应用环境部署-完整记录
查看>>
学习内容及计划
查看>>
一起谈.NET技术,看看Entity Framework 4生成的复杂的分页SQL语句
查看>>
一步步构建大型网站架构
查看>>
[转载]jquery 动态滚动
查看>>
POJ 3415 Common Substrings
查看>>
The run destination iPhone 5.0 Simulator is not valid for running the scheme 'MyApp'
查看>>
【C#】在父窗体菜单合并子窗体菜单
查看>>