From 4f53b72c1d47b372ad64c662e6a2c95c19a58fa5 Mon Sep 17 00:00:00 2001 From: David Smith Date: Mon, 3 Mar 2014 15:44:35 -0600 Subject: [PATCH] Improve 'syscall.listen' probe alias and testing. * tapset/linux/syscalls.stp (syscall.listen): The 'fd' variable is 32-bits on the user side. Truncate it. * testsuite/systemtap.syscall/listen.c: New testcase. --- tapset/linux/syscalls.stp | 4 +-- testsuite/systemtap.syscall/listen.c | 47 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 testsuite/systemtap.syscall/listen.c diff --git a/tapset/linux/syscalls.stp b/tapset/linux/syscalls.stp index 12238c46d..084f6d57e 100644 --- a/tapset/linux/syscalls.stp +++ b/tapset/linux/syscalls.stp @@ -2438,9 +2438,9 @@ probe syscall.linkat.return = kernel.function("sys_linkat").return ? probe syscall.listen = kernel.function("sys_listen").call ? { name = "listen" - sockfd = $fd + sockfd = __int32($fd) backlog = $backlog - argstr = sprintf("%d, %d", $fd, $backlog) + argstr = sprintf("%d, %d", __int32($fd), $backlog) } probe syscall.listen.return = kernel.function("sys_listen").return ? { diff --git a/testsuite/systemtap.syscall/listen.c b/testsuite/systemtap.syscall/listen.c new file mode 100644 index 000000000..886d4eb07 --- /dev/null +++ b/testsuite/systemtap.syscall/listen.c @@ -0,0 +1,47 @@ +/* COVERAGE: listen */ + +#include +#include +#include +#include +#include +#include + +int main() +{ + int sock_stream; + int sock_dgram; + int fd_null; + + sock_stream = socket(PF_INET, SOCK_STREAM, 0); + //staptest// socket (PF_INET, SOCK_STREAM, IPPROTO_IP) = NNNN + + sock_dgram = socket(PF_INET, SOCK_DGRAM, 0); + //staptest// socket (PF_INET, SOCK_DGRAM, IPPROTO_IP) = NNNN + + fd_null = open("/dev/null", O_WRONLY); + //staptest// open ("/dev/null", O_WRONLY) = NNNN + + listen(-1, 0); + //staptest// listen (-1, 0) = -NNNN (EBADF) + + listen(fd_null, 0); + //staptest// listen (NNNN, 0) = -NNNN (ENOTSOCK) + + listen(sock_dgram, 0); + //staptest// listen (NNNN, 0) = -NNNN (EOPNOTSUPP) + + listen(sock_stream, 0); + //staptest// listen (NNNN, 0) = 0 + + close(sock_stream); + //staptest// close (NNNN) = 0 + + close(sock_dgram); + //staptest// close (NNNN) = 0 + + close(fd_null); + //staptest// close (NNNN) = 0 + + return 0; +} -- 2.43.5