Linux SystemTap脚本如何确定当前线程数?

Linux SystemTap脚本如何确定当前线程数?,linux,systemtap,Linux,Systemtap,我想编写一个SystemTap脚本,它可以确定探测调用中当前PID的实际线程数。此时,该数字应与/proc/4711/status输出中显示的数字相同 我的第一种方法是统计kprocess.create和kprocess.exit事件的发生次数,但这显然只会相对增加/减少线程数 SystemTap脚本如何使用一个给定的API函数来确定这个数字?也许脚本可以以某种方式读取与proc文件系统输出相同的内核信息?在这两种情况下,您都将受到竞争条件的约束-stap探测器不能锁定内核结构,这将需要确保任务

我想编写一个SystemTap脚本,它可以确定探测调用中当前PID的实际线程数。此时,该数字应与/proc/4711/status输出中显示的数字相同

我的第一种方法是统计kprocess.create和kprocess.exit事件的发生次数,但这显然只会相对增加/减少线程数


SystemTap脚本如何使用一个给定的API函数来确定这个数字?也许脚本可以以某种方式读取与proc文件系统输出相同的内核信息?

在这两种情况下,您都将受到竞争条件的约束-stap探测器不能锁定内核结构,这将需要确保任务列表在计数时不会更改。对于一般的Stand挖掘上下文来说,这尤其适用,就像在KPoG的中间一样。 对于第一种方法,您可以在任务列表中添加一个“probe begin{}”时间迭代,从一点嵌入式C代码中初始化初始线程计数。一个挑战是从嵌入式C代码中设置systemtap脚本全局变量(没有相关的API文档),但是如果您查看翻译器生成的内容(stap-p3),它应该是可行的

第二种方法是执行相同的迭代,但是由于上面的锁定原因,这通常是不安全的