diff options
author | David Smith <dsmith@redhat.com> | 2010-03-22 10:43:20 -0500 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2010-03-22 10:43:20 -0500 |
commit | 56f3dbb70a5faf56732a9b87f8ed688b85a4332c (patch) | |
tree | 17e21ebc927135167e6cd9b9c1485a04e9b8698a | |
parent | 706c280a4dd032a4211fdf4eff62da773a8c2903 (diff) | |
download | systemtap-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.stp | 6 | ||||
-rw-r--r-- | tapset/x86_64/syscalls.stp | 10 |
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) |