systemtap script code...

This commit is contained in:
gatieme
2017-04-12 19:16:03 +08:00
parent 49120d1c5a
commit 1001fe56db
7 changed files with 152 additions and 1 deletions
@@ -0,0 +1,36 @@
# 1.4.1 Basic SystemTap syntax and control structures
#
# https://sourceware.org/systemtap/langref/SystemTap_overview.html#SECTION00024100000000000000
#
global odds, evens
probe begin
{
# "no" and "he" are local integers
for(i = 0; i < 10; i++)
{
if (i % 2) # 奇数odd
odds[no++] = i
else # 偶数 even
evens[ne++] = i
}
delete odds[2]
delete evens[3]
exit()
}
probe end
{
foreach (x+ in odds)
{
printf ("odds[%d] = %d\n", x, odds[x])
}
foreach (x in evens-)
{
printf ("evens[%d] = %d\n", x, evens[x])
}
}
@@ -0,0 +1,41 @@
#1.4.2 Primes between 0 and 49
#
#
#https://sourceware.org/systemtap/langref/SystemTap_overview.html#SECTION00024200000000000000
#
#
function isprime (x)
{
if (x < 2)
{
return 0
}
for (i = 2; i < x; i++)
{
if (x % i == 0)
{
return 0
}
if (i * i > x)
{
break
}
}
return 1
}
probe begin
{
for (i = 0; i < 50; i++)
{
if (isprime (i))
{
printf("%d\n", i)
}
}
exit()
}
@@ -0,0 +1,33 @@
#1.4.2 Primes between 0 and 49
#
#https://sourceware.org/systemtap/langref/SystemTap_overview.html#SECTION00024300000000000000
#
#
function fibonacci(i)
{
if (i < 1)
{
error ("bad number");
}
if (i == 1)
{
return 1;
}
if (i == 2)
{
return 2;
}
return fibonacci (i - 1) + fibonacci (i - 2);
}
probe begin
{
for(i = 1; i <= 11; i++)
{
printf ("%2dth fibonacci number: %4d\n", i, fibonacci(i));
}
exit()
}
@@ -0,0 +1,13 @@
#1.6 Safety and security
#
#https://sourceware.org/systemtap/langref/SystemTap_overview.html#SECTION00026000000000000000
#
#
probe begin
{
printf("MAXENSTING = %d\n", MAXNESTING);
printf("MAXSTRINGLEN= %d\n", MAXSTRINGLEN);
exit( );
}
@@ -0,0 +1,8 @@
pattern="*"
if [ $# -gt 2 ]; then
echo "usage $0 [pattern]"
elif [ $# -eq 0 ]; then
stap -l 'kernel.function("*")' | sort
elif [ $# -eq 1 ]; then
stap -l 'kernel.function("*")' | sort | grep $1
fi
@@ -0,0 +1,20 @@
probe kernel.function("sys_mkdir").call
{
printf("enter %s\n", $pathname);
}
probe kernel.function("sys_mkdir").return
{
printf("exit %s\n", $pathname);
}
probe begin
{
printf("test mkdir begin\n");
}
probe end
{
printf("test mkdir end\n");
}
@@ -1,6 +1,6 @@
probe begin
{
print("Hello Wordl\n")
print("Hello World\n")
exit()
}