summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Smith <dsmith@redhat.com>2010-03-22 10:43:20 -0500
committerDavid Smith <dsmith@redhat.com>2010-03-22 10:43:20 -0500
commit56f3dbb70a5faf56732a9b87f8ed688b85a4332c (patch)
tree17e21ebc927135167e6cd9b9c1485a04e9b8698a
parent706c280a4dd032a4211fdf4eff62da773a8c2903 (diff)
downloadsystemtap-steved-56f3dbb70a5faf56732a9b87f8ed688b85a4332c.tar.gz
systemtap-steved-56f3dbb70a5faf56732a9b87f8ed688b85a4332c.tar.xz
systemtap-steved-56f3dbb70a5faf56732a9b87f8ed688b85a4332c.zip
Partial fix for pr 11388 by adding 'sys_mmap_pgoff' support.
* tapset/i386/syscalls.stp: Add support for 'sys_mmap_pgoff' (which is what the mmap syscall uses). * tapset/x86_64/syscalls.stp: Ditto.
-rw-r--r--tapset/i386/syscalls.stp6
-rw-r--r--tapset/x86_64/syscalls.stp10
2 files changed, 10 insertions, 6 deletions
diff --git a/tapset/i386/syscalls.stp b/tapset/i386/syscalls.stp
index 2d1a282b..99ae938d 100644
--- a/tapset/i386/syscalls.stp
+++ b/tapset/i386/syscalls.stp
@@ -61,7 +61,8 @@ probe syscall.ipc.return = kernel.function("sys_ipc").return ?
# unsigned long prot, unsigned long flags,
# unsigned long fd, unsigned long pgoff)
#
-probe syscall.mmap2 = kernel.function("sys_mmap2") ?
+probe syscall.mmap2 = kernel.function("sys_mmap_pgoff") ?,
+ kernel.function("sys_mmap2") ?
{
name = "mmap2"
start = $addr
@@ -76,7 +77,8 @@ probe syscall.mmap2 = kernel.function("sys_mmap2") ?
$len, _mprotect_prot_str($prot), _mmap_flags($flags),
__int32($fd), $pgoff)
}
-probe syscall.mmap2.return = kernel.function("sys_mmap2").return ?
+probe syscall.mmap2.return = kernel.function("sys_mmap_pgoff").return ?,
+ kernel.function("sys_mmap2").return ?
{
name = "mmap2"
retstr = returnstr(2)
diff --git a/tapset/x86_64/syscalls.stp b/tapset/x86_64/syscalls.stp
index c385f824..0ad2bc68 100644
--- a/tapset/x86_64/syscalls.stp
+++ b/tapset/x86_64/syscalls.stp
@@ -74,7 +74,8 @@ probe syscall.sysctl32.return = kernel.function("sys32_sysctl").return ?
# long sys_mmap(unsigned long addr, unsigned long len,
# unsigned long prot, unsigned long flags,
# unsigned long fd, unsigned long off)
-probe syscall.mmap = kernel.function("sys_mmap") ?
+probe syscall.mmap = kernel.function("sys_mmap") ?,
+ kernel.function("sys_mmap_pgoff") ?
{
name = "mmap"
start = $addr
@@ -84,13 +85,14 @@ probe syscall.mmap = kernel.function("sys_mmap") ?
# Although the kernel gets an unsigned long fd, on the
# user-side it is a signed int. Fix this.
fd = __int32($fd)
- offset = $off
+ offset = (@defined($pgoff) ? $pgoff : $off)
argstr = sprintf("%p, %d, %s, %s, %d, %d", $addr, $len,
_mprotect_prot_str($prot), _mmap_flags($flags),
- __int32($fd), $off)
+ __int32($fd), (@defined($pgoff) ? $pgoff : $off))
}
-probe syscall.mmap.return = kernel.function("sys_mmap").return ?
+probe syscall.mmap.return = kernel.function("sys_mmap").return ?,
+ kernel.function("sys_mmap_pgoff").return ?
{
name = "mmap"
retstr = returnstr(2)