mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-19 01:22:36 +08:00
systemtap script code...
This commit is contained in:
@@ -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( );
|
||||
}
|
||||
|
||||
+8
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user