summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordwilder <dwilder>2007-07-30 22:29:12 +0000
committerdwilder <dwilder>2007-07-30 22:29:12 +0000
commite6e233c657a0336c1a621ff513820383e2c41c2f (patch)
tree54b6d9625c11d1f0a9d0a5aa6c1d579ee3082466
parentdc47c10f115509090eda6f965001ccc32fdbdb57 (diff)
downloadsystemtap-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/ChangeLog7
-rw-r--r--tapset/syscalls2.stp18
-rw-r--r--testsuite/systemtap.syscall/ChangeLog4
-rw-r--r--testsuite/systemtap.syscall/readwrite.c6
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;