应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

调试ftrace(二)新增跟踪点

  内核的各个子系统已经有大量的跟踪点,如果这些跟踪点无法满足工作中的需求,可以自己手动添加跟踪点。
  添加跟踪点有两种方式,一种是仿照events目录下的跟踪点,使用TRACEEVENT()宏添加。另一种是参考内核目录samplestraceevents添加。本文对这两种方式分别进行介绍。
  使用TRACEEVENT定义tracepoint
  我们仿照eventstimertimerstart,添加一个timerstat的跟踪点,获取startpid和slack参数。
  首先,需要在includetraceeventstimer。h头文件种添加名为timerstat的跟踪点。
  c
  timerstatftraceinterfacetimerstat
  timer:pointertostructtimerlist
  TRACEEVENT(timerstat,
  TPPROTO(structtimerlisttimer),
  TPARGS(timer),
  TPSTRUCTentry(
  field(void,timer)
  field(int,startpid)
  field(int,slack)
  ),
  TPfastassign(
  entrytimertimer;
  entrystartpidtimerstartpid;
  entryslacktimerslack;
  ),
  TPprintk(ftraceinterfacetimerstat:timerppiddslackd,
  entrytimer,entrystartpid,entryslack)
  );
  TRACEEVENT()宏如下
  c
  defineTRACEEVENT(name,proto,args,struct,assign,print)
  DEFINETRACE(name)
  name:表示跟踪点的名字,如上面的timerstat。
  proto:表示跟踪点调用的入参的原型,比如timer类型为structtimerlist。
  args:表示参数。
  struct:定义跟踪器内部使用的entry数据结构。
  assign:把参数复制到entry数据结构中。
  print:定义输出的格式。
  接着在kernelkerneltimetimer。cdebugactivate()添加tracetimerstat()。
  c
  staticinlinevoid
  debugactivate(structtimerlisttimer,unsignedlongexpires)
  {
  debugtimeractivate(timer);
  tracetimerstart(timer,expires,timerflags);
  tracetimerstat(timer);
  }
  重新编译内核后,烧写到设备中,即可看到sys节点已经有了新增的跟踪点。
  !〔〕(http:linuxdriver。topBlog2023202301261736287。png)
  使能跟踪点后,查看trace点的输出。
  !〔〕(http:linuxdriver。topBlog2023202301261736280。png)
  编译为独立的ko文件
  内核还提供了一个跟踪点的例子,在samplestraceevents目录下。
  traceeventinit()创建内核线程一个名为eventsample内核线程。
  c
  staticintinittraceeventinit(void)
  {
  simpletskkthreadrun(simplethread,NULL,eventsample);
  if(ISERR(simpletsk))
  return1;
  return0;
  }
  kthreadshouldstop()用于创建的线程检查结束标志,并决定是否退出。
  c
  staticintsimplethread(voidarg)
  {
  intcnt0;
  while(!kthreadshouldstop())
  simplethreadfunc(cnt);
  return0;
  }
  setcurrentstate()来设置进程的状态,设置为TASKINTERRUPTIBLE表示是可以被信号和wakeup()唤醒的,当信号到来时,进程会被设置为可运行。
  scheduletimeout()将当前task调度出cpu,重新调度间隔为HZ。接着trace开头的函数就会依次打印跟踪点的信息。
  c
  staticvoidsimplethreadfunc(intcnt)
  {
  intarray〔6〕;
  intlencnt5;
  inti;
  setcurrentstate(TASKINTERRUPTIBLE);
  scheduletimeout(HZ);
  for(i0;ilen;i)
  array〔i〕i1;
  array〔i〕0;
  Sillytracepoints
  tracefoobar(hello,cnt,array,randomstrings〔len〕,
  tskcpusallowed(current));
  tracefoowithtemplatesimple(HELLO,cnt);
  tracefoobarwithcond(Sometimesprint,cnt);
  tracefoowithtemplatecond(printsothertimes,cnt);
  tracefoowithtemplateprint(Ihavetobedifferent,cnt);
  }
  tracefoowithtemplatesimple跟踪点的实现方式也是使用的TRACEEVENT()宏,这里不再赘述。
  最后将文件编译为ko拷贝到设备上insmod后,即可看到sys目录下已经有新增的节点。
  bash
  cdhomezhongyicoderk3399linuxreleasev2。5。120210301kernelsamplestraceevents
  makeChomezhongyicoderk3399linuxreleasev2。5。120210301kernelM(pwd)modules
  bash
  rootfirefly:syskerneldebugtracingcatavailableeventsgrepsample
  sampletrace:foobar
  sampletrace:foobarwithcond
  race:foobarwithfn
  sampletrace:foowithtemplatesimple
  sampletrace:foowithtemplatecond
  sampletrace:foowithtemplatefn
  sampletrace:foowithtemplateprint
  power:pstatesample
  bash
  rootfirefly:syskerneldebugtracingcdeventssampletrace
  rootfirefly:syskerneldebugtracingeventssampletracels
  enablefoobarwithcondfoowithtemplatefn
  filterfoobarwithfnfoowithtemplateprint
  foobarfoowithtemplatecondfoowithtemplsimple
  rootfirefly:syskerneldebugtracingeventssampletraceecho1enable
  rootfirefly:syskerneldebugtracingeventssampletracecatsyskerneldebugtracingtrace
  !〔〕(http:linuxdriver。topBlog2023202301261507400。png)
  TRACEEVENTCONDITION()
  在某些情况下,跟踪点只有在某个条件发生时才会被调用,类似于
  c
  if(cond)
  tracefoo();
  TRACEEVENTCONDITION()宏就是这个作用,它和TRACEEVENT()相比只是在参数中多加了一个cond条件。TPCONDITION()会对条件做个判断。
  c
  TRACEEVENT(name,proto,args,struct,assign,printk)
  TRACEEVENTCONDITION(name,proto,args,cond,struct,assign,printk)
  详细使用方法可以参考traceeventssample。h。
  TRACEEVENTFN()
  TRACEEVENTFN()是在跟踪点使能前和使能后分别打印一些信息。相比于TRACEEVENT(),TRACEEVENTFN()多了两个参数reg和unreg,
  c
  TRACEEVENT(name,proto,args,struct,assign,printk)
  TRACEEVENTFN(name,proto,args,struct,assign,printk,reg,unreg)
  reg和unreg原型为
  c
  voidreg(void)
  reg函数在跟踪点使能前打印,unreg函数在跟踪点使能后打印。reg和unreg可以根据实际情况置其中一个为NULL,也可以全部置为NULL。
  详细使用方法可以参考traceeventssample。h。
  本文参考
  samplestraceevents

为什么人们都喜欢去乌镇?1、最佳旅行时间45月,也就是清明节前后的乌镇,有着无限好的江南春景,听说还会有各种极具特色的民情风俗活动。1012月亦是最佳时间,正是杭白菊的采摘季节。2、注意事……冬季老年人养生保健知识对于老年人来说,冬天的寒冷无疑是最难熬的。随着身体机能逐渐减退,抵抗力等方面也是大不如前,因此务必要做好冬季养生工作。1、保证热量的合理供给人体需要充足的热量来抵抗……春分养生吃三样,喝三样,健康就靠这三样【健康科普】春分刚过,天气回暖,万物复苏。不知道这个周末,你出去踏青了吗?晒着暖暖的太阳、吹着温柔的风,是不是觉得浑身都更有劲了?图片来源shutter……温汤镇广场许多人不戴口罩,口罩还是应该戴起来,对大家都有好处最近几年,冬季都会去宜春温汤过冬,即便是疫情,也从未间断。温汤水好,阳光好,温泉好。我到温汤,一般在镇外约2公里的温汤河边停车场露营,那儿距离明月千古情景区很近。……随遇而安有时也不失为一种良好的心态一名待转干部的总结及展望2023年已经开始了好几天,才想起盘点这特殊的一年,这一年,着实不易但又符合人生历程的特点,就是难嘛!但哪一年不难呢?所以各年有各年的难,在春节即将到来的时候,我也该回望岁月,……期待更多微型跨国企业近日,德勤发布2021年度《科技赋能亚太数字贸易》报告称,成长中的亚洲中小跨境电商在《区域全面经济伙伴关系协定》(RCEP)政策红利和数字技术助力下,正尝试一跃成为微型跨国企业……steam喜加一!12月10日狂野西部枪手限时免费领距离上次的《小小梦魇》,steam又有厂家要送不错的游戏了!为了庆祝Techland成立三十周年,国内时间将于12月10日凌晨2点开始,可以在steam白嫖到《狂野西部:枪手》……鲁迅搞怪育儿一代文豪也逃不过新手奶爸的噩梦鲁迅先生以文笔犀利在中国文学史上留下了浓墨重彩的一笔,而他的思想在当时也是极度超前的,如果让他到现代来生活,他应该也能完美融合现代发展的思想。在育儿方面,他的思想也是非常前卫的……33。90万!密云春节假期旅游成绩单出炉2022年春节假期,密云文化和旅游产品供给优质充足,市场平稳有序,游客接待超往年同期水平,七天实现旅游营业综合收入8614。73万元。2022年春节假期,密云的景区、滑雪……排骨三种进阶做法,软烂入味,十分好学,吃到停不下来排骨虽然价格略高于其他猪肉部位,但是其嚼劲相比于其他部位的肉更加劲道,还可以搭配多种多样的配菜做成多种风味的美食,是家庭餐桌上的常客。今天乔爸爸就介绍三种排骨的进阶做法,……苹果春季发布会新iPhoneSE领跑多款M2新设备亮相【CNMO新闻】在去年的苹果秋季发布会上,凭借A15处理器的跑分,iPhone新产品线再一次刷新了移动设备的性能天花板。据国外知名爆料人MarkGurman透露,苹果将在3月的……为何吴前在国家队容易迷失?并非因为实力,看完分析你就知道了为何吴前在国家队容易迷失?并非因为实力,看完分析你就知道了。网友热议一针见血地指出:吴前需要围绕他做战术,国家队后卫人才济济,轮不到他。吴前现在在浙江的状态,其实也不好。吴前的……
女单4强出炉!国乒主力被阻击,世界前2全出局,王艺迪险遭爆大2022年全国乒乓球锦标赛结束了女单四分之一决赛的争夺,随着王曼昱顺利击败范思琦,女单四强全部产生,分别是孙铭阳、陈幸同、王艺迪、王曼昱。令人感到意外的是,赛会前两号种子、世界……开学第一次家长会,娃就被老师点名表扬,为啥我劝你重视亲子阅读孩子上了幼儿园之后,我本来还担心孩子在幼儿园会不适应,对于老师教的东西可能不理解或是记不住,但是事实却令我十分的惊讶,孩子并没有出现我想象中的那些情况,反而给了我更多的惊喜。……年内下跌近70,马斯克告诉特斯拉员工不要被股市的疯狂所困扰IT之家12月29日消息,据路透社报道,特斯拉首席执行官埃隆马斯克(ElonMusk)告诉员工,他们不应该被股市的疯狂所困扰。此前,由于对电动汽车需求疲软的担忧,以及马斯……潘玮柏小14岁妻子晒照!一身名牌阔太范儿十足,腹部圆润被疑有近日,潘玮柏的妻子宣云在社交平台上晒出一组美照,分享名牌服装的初秋穿搭,罕见更新动态引发网友关注。当天,宣云在店里试穿了多套服装,整体风格温柔淑女又不失时尚,看起来满满的……遇事最重要的4种能力生活中,我们会遇到很多问题,如何处理这些问题能反映出一个人的水平,也决定着生活走向。今天,我们和大家分享4种遇事时最重要的能力。自我更新的能力一成不变,只会将自己困……五冠王巴西能在卡塔尔戴上第六枚戒指吗?激动人心的2022卡塔尔世界杯还有俩月就要开幕了。而更让我心驰神往的巴西足球队又将要在世界杯上抛头露面了,想到这,我的心中无比激动,像个小孩一样天天在期盼那群穿着黄球衣的……苗苗产后3个月恢复迅速,陪女儿下水游泳,跟郑恺搬入大别墅9月6日,苗苗在社交平台晒出一则动态,她配文道生命在于运动,引起了不少网友的围观!画面中的苗苗大清早就起床跟老公郑恺一起做运动,两人都在阳台上练习八段锦,她身着紧身的运动……奇观误国帝国时代4,八大文明奇观原型(亚洲篇)作者:小黑盒gdtop伐伐伐伐伐木工!时隔二十多年,微软不仅持续给帝国2推出新的DLC,同时也在去年推出了系列新作帝国时代4,拿下去年TGA的最佳模拟策略游戏,微软……LG的MoodUP冰箱拥有能变色的LED门上下冰箱门分别能变22和19种颜色。LGIFA2022,LG自然少不了带来自家最新奇的家电。除了能掰弯的电视显示器外,他们现在又拿出了一款拥有变色LED门和带有喇叭……中国男篮新主帅即将到位,CBA第二阶段赛会制,张镇麟开始训练头条创作挑战赛在战胜伊朗队后,中国男篮目前的形势一片大好。只要在15日的比赛中再次战胜巴林队,中国男篮就能提前拿到明年的男篮世界杯门票了。从两队的实力对比和之前的战绩来看……王守义儿子开饭店孙子炒房,坚持不上市不干地产十三香错了吗?文凯哥鉴史编辑凯哥鉴史集团不上市、不动房地产,要踏踏实实做实业!这是调料大王十三香创始人王守义,在迟暮之年对子女的忠告。王守义在王守义去世后,子孙……健康热点秋冬季节皮肤干燥发痒怎么办?皮肤科医生给你支招封面新闻记者邱添秋冬季一到,皮肤状态容易随气温发生诸多变化,特别是裸露在外的皮肤,受到外界刺激后易出现各种问题。秋冬季该如何应对皮肤问题?我们邀请到成都市第三人民医院医学……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网