diff options
author | fche <fche> | 2006-08-12 05:13:09 +0000 |
---|---|---|
committer | fche <fche> | 2006-08-12 05:13:09 +0000 |
commit | 814bc89d4635f101b2c0077598f31aad95ed15b7 (patch) | |
tree | 407a49dbaf446af4751f5068607a7fb8dad0611d /testsuite/systemtap.syscall/readwrite.c | |
parent | 6b6d04673a1ef175821afc7d4fabdb496698e8e3 (diff) | |
download | systemtap-steved-814bc89d4635f101b2c0077598f31aad95ed15b7.tar.gz systemtap-steved-814bc89d4635f101b2c0077598f31aad95ed15b7.tar.xz systemtap-steved-814bc89d4635f101b2c0077598f31aad95ed15b7.zip |
2006-08-12 Frank Ch. Eigler <fche@elastic.org>
* configure.ac, Makefile.am: Descend into testsuite/
directory. Remove local test logic.
* configure, Makefile.in: Regenerated.
* runtest.sh: Not yet removed.
* HACKING: Update for new testsuite layout.
2006-08-12 Frank Ch. Eigler <fche@elastic.org>
* all: Reorganized old pass-1..4 tests one dejagnu bucket.
Moved over old pass-5 tests, except for disabled syscalls tests.
* Makefile (installcheck): New target for running pass-1..5
tests against installed systemtap.
Diffstat (limited to 'testsuite/systemtap.syscall/readwrite.c')
-rw-r--r-- | testsuite/systemtap.syscall/readwrite.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/testsuite/systemtap.syscall/readwrite.c b/testsuite/systemtap.syscall/readwrite.c new file mode 100644 index 00000000..88f3a38a --- /dev/null +++ b/testsuite/systemtap.syscall/readwrite.c @@ -0,0 +1,85 @@ +/* COVERAGE: read write readv writev lseek llseek */ +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stdlib.h> +#include <unistd.h> +#include <linux/unistd.h> +#include <sys/uio.h> + +#define STRING1 "red" +#define STRING2 "green" +#define STRING3 "blue" +int main() +{ + int fd; + struct iovec v[3], x[3]; + loff_t res; + char buf[64], buf1[32], buf2[32], buf3[32]; + + v[0].iov_base = STRING1; + v[0].iov_len = sizeof(STRING1); + v[1].iov_base = STRING2; + v[1].iov_len = sizeof(STRING2); + v[2].iov_base = STRING3; + v[2].iov_len = sizeof(STRING3); + + fd = open("foobar1",O_WRONLY|O_CREAT, 0666); + // open ("foobar1", O_WRONLY|O_CREAT, 0666) = 4 + + write(fd,"Hello world", 11); + // write (4, "Hello world", 11) = 11 + + write(fd,"Hello world abcdefghijklmnopqrstuvwxyz 01234567890", 50); + // write (4, "Hello world abc"..., 50) = 50 + + writev(fd, v, 3); + // writev (4, XXXX, 3) = 15 + + lseek(fd, 0, SEEK_SET); + // lseek (4, 0, SEEK_SET) = 0 + + lseek(fd, 1, SEEK_CUR); + // lseek (4, 1, SEEK_CUR) = 1 + + lseek(fd, -1, SEEK_END); + // lseek (4, -1, SEEK_END) = 75 + +#ifdef SYS__llseek + syscall(SYS__llseek, fd, 1, 0, &res, SEEK_SET); + // llseek (4, 0x1, 0x0, XXXX, SEEK_SET) = 0 + + syscall(SYS__llseek, fd, 0, 0, &res, SEEK_SET); + // llseek (4, 0x0, 0x0, XXXX, SEEK_SET) = 0 + + syscall(SYS__llseek, fd, 0, 12, &res, SEEK_CUR); + // llseek (4, 0x0, 0xc, XXXX, SEEK_CUR) = 0 + + syscall(SYS__llseek, fd, 8, 1, &res, SEEK_END); + // llseek (4, 0x8, 0x1, XXXX, SEEK_END) = 0 +#endif + + close (fd); + + fd = open("foobar1",O_RDONLY); + // open ("foobar1", O_RDONLY) = 4 + + read(fd, buf, 11); + // read (4, XXXX, 11) = 11 + + read(fd, buf, 50); + // read (4, XXXX, 50) = 50 + + x[0].iov_base = buf1; + x[0].iov_len = sizeof(STRING1); + x[1].iov_base = buf2; + x[1].iov_len = sizeof(STRING2); + x[2].iov_base = buf3; + x[2].iov_len = sizeof(STRING3); + readv(fd, x, 3); + // readv (4, XXXX, 3) = 15 + + close (fd); + + return 0; +} |