diff options
author | Mark Wielaard <mjw@redhat.com> | 2010-03-20 19:58:29 +0100 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2010-03-21 17:34:41 +0100 |
commit | 816395d6f1c433cddc1eaecba2248168c1dd4a5a (patch) | |
tree | 96fe777697334f937c46f1db0835a063c9aec001 /testsuite | |
parent | 92ef533e0241eb1a39ef7ceef8dce52e4ae9d820 (diff) | |
download | systemtap-steved-816395d6f1c433cddc1eaecba2248168c1dd4a5a.tar.gz systemtap-steved-816395d6f1c433cddc1eaecba2248168c1dd4a5a.tar.xz systemtap-steved-816395d6f1c433cddc1eaecba2248168c1dd4a5a.zip |
Add support for dup3 to syscall.stp tapset.
* tapset/aux_syscalls.stp (_dup3_flag_str): New helper function.
* tapset/syscalls.stp (syscall.dup2): Add alternatives to handle dup3 also.
* testsuite/systemtap.syscall/dup.c: New testcase.
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/systemtap.syscall/dup.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/testsuite/systemtap.syscall/dup.c b/testsuite/systemtap.syscall/dup.c new file mode 100644 index 00000000..862f7e91 --- /dev/null +++ b/testsuite/systemtap.syscall/dup.c @@ -0,0 +1,43 @@ +/* COVERAGE: dup dup2 dup3 */ + +#define _GNU_SOURCE +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> + +int main() +{ + dup(2); + //staptest// dup (2) = NNNN + + dup(256); + //staptest// dup (256) = -9 (EBADF) + + dup2(3, 4); + //staptest// dup2 (3, 4) = 4 + + dup2(255, 256); + //staptest// dup2 (255, 256) = -9 (EBADF) + + /* weird corner case oldfd == newfd */ + dup2(1, 1); + //staptest// dup2 (1, 1) = 1 + +#ifdef O_CLOEXEC + dup3 (4, 5, O_CLOEXEC); + //staptest// dup3 (4, 5, O_CLOEXEC) = 5 + + dup3 (256, 255, O_CLOEXEC); + //staptest// dup3 (256, 255, O_CLOEXEC) = -9 (EBADF) + + dup3 (5, 6, 666); + //staptest// dup3 (5, 6, UNKNOWN) = -22 (EINVAL) + + /* corner case not valid for dup3 */ + dup3 (1, 1, O_CLOEXEC); + //staptest// dup3 (1, 1, O_CLOEXEC) = -22 (EINVAL) +#endif + + return 0; +} |