diff options
author | dwilder <dwilder> | 2007-07-30 22:29:12 +0000 |
---|---|---|
committer | dwilder <dwilder> | 2007-07-30 22:29:12 +0000 |
commit | e6e233c657a0336c1a621ff513820383e2c41c2f (patch) | |
tree | 54b6d9625c11d1f0a9d0a5aa6c1d579ee3082466 | |
parent | dc47c10f115509090eda6f965001ccc32fdbdb57 (diff) | |
download | systemtap-steved-e6e233c657a0336c1a621ff513820383e2c41c2f.tar.gz systemtap-steved-e6e233c657a0336c1a621ff513820383e2c41c2f.tar.xz systemtap-steved-e6e233c657a0336c1a621ff513820383e2c41c2f.zip |
fixed support for pread and pwrite for s390x. Added tests for pread and pwrite.
-rw-r--r-- | tapset/ChangeLog | 7 | ||||
-rw-r--r-- | tapset/syscalls2.stp | 18 | ||||
-rw-r--r-- | testsuite/systemtap.syscall/ChangeLog | 4 | ||||
-rw-r--r-- | testsuite/systemtap.syscall/readwrite.c | 6 |
4 files changed, 33 insertions, 2 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 4aedbfc5..b9462633 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,10 @@ +2007-07-30 Dave Wilder <dwilder@us.ibm.com> + PR 4794 + * syscalls2.stp (syscall.pread and syscall.pread32) + For s390x only changed the $buf argument to $ubuf. + Change the format for count and position from %p to %d + to make it consistant with sys_read and sys_write. + 2007-07-25 Mike Mason <mmlnx@us.ibm.com> PR 4386 diff --git a/tapset/syscalls2.stp b/tapset/syscalls2.stp index 7c5b4854..0554f3cf 100644 --- a/tapset/syscalls2.stp +++ b/tapset/syscalls2.stp @@ -396,7 +396,7 @@ probe syscall.pread = kernel.function("sys_pread64") { buf_uaddr = $buf count = $count offset = $pos - argstr = sprintf("%d, %p, %p, %p", $fd, $buf, $count, $pos) + argstr = sprintf("%d, %p, %d, %d", $fd, $buf, $count, $pos) } probe syscall.pread.return = kernel.function("sys_pread64").return { name = "pread" @@ -410,7 +410,13 @@ probe syscall.pread32 = kernel.function("sys32_pread64") ? { buf_uaddr = $buf count = $count offset = ($poshi << 32) + $poslo - argstr = sprintf("%d, %p, %p, %p", $fd, $buf, $count, ($poshi << 32) + $poslo) +%( arch == "s390x" %? + buf_uaddr = $ubuf + argstr = sprintf("%d, %p, %d, %d", $fd, $ubuf, $count, ($poshi << 32) + $poslo) +%: + buf_uaddr = $buf + argstr = sprintf("%d, %p, %d, %d", $fd, $buf, $count, ($poshi << 32) + $poslo) +%) } probe syscall.pread32.return = kernel.function("sys32_pread64").return ? { name = "pread" @@ -517,9 +523,17 @@ probe syscall.pwrite32 = kernel.function("sys32_pwrite64") ? { buf_uaddr = $buf count = $count offset = ($poshi << 32) + $poslo +%( arch == "s390x" %? + buf_uaddr = $ubuf + argstr = sprintf("%d, %s, %d, %d", $fd, + text_strn(user_string($ubuf),syscall_string_trunc,1), + $count, ($poshi << 32) + $poslo) +%: + buf_uaddr = $buf argstr = sprintf("%d, %s, %d, %d", $fd, text_strn(user_string($buf),syscall_string_trunc,1), $count, ($poshi << 32) + $poslo) +%) } probe syscall.pwrite32.return = kernel.function("sys32_pwrite64").return ? { name = "pwrite" diff --git a/testsuite/systemtap.syscall/ChangeLog b/testsuite/systemtap.syscall/ChangeLog index 848bafae..1070cde6 100644 --- a/testsuite/systemtap.syscall/ChangeLog +++ b/testsuite/systemtap.syscall/ChangeLog @@ -1,3 +1,7 @@ +2007-07-30 David Wilder <dwilder@us.ibm.com> + + * readdwrite.c: Added pwrite and pread test + 2007-07-17 Martin Hunt <hunt@redhat.com> * poll.c (main): Don't hardcode fd. diff --git a/testsuite/systemtap.syscall/readwrite.c b/testsuite/systemtap.syscall/readwrite.c index 71d8d774..b0e964b6 100644 --- a/testsuite/systemtap.syscall/readwrite.c +++ b/testsuite/systemtap.syscall/readwrite.c @@ -33,6 +33,9 @@ int main() write(fd,"Hello world abcdefghijklmnopqrstuvwxyz 01234567890123456789", 59); // write (NNNN, "Hello world abcdefghijklmnopqrstuvwxyz 012345"..., 59) = 59 + pwrite(fd,"Hello Again",11,12); + // pwrite (NNNN, "Hello Again", 11, 12) = 11 + writev(fd, v, 3); // writev (NNNN, XXXX, 3) = 15 @@ -70,6 +73,9 @@ int main() read(fd, buf, 50); // read (NNNN, XXXX, 50) = 50 + pread(fd, buf, 11, 10); + // pread (NNNN, XXXX, 11, 10) = 11 + x[0].iov_base = buf1; x[0].iov_len = sizeof(STRING1); x[1].iov_base = buf2; |