]> sourceware.org Git - systemtap.git/commitdiff
Improve 'syscall.listen' probe alias and testing.
authorDavid Smith <dsmith@redhat.com>
Mon, 3 Mar 2014 21:44:35 +0000 (15:44 -0600)
committerDavid Smith <dsmith@redhat.com>
Mon, 3 Mar 2014 21:44:35 +0000 (15:44 -0600)
* 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
testsuite/systemtap.syscall/listen.c [new file with mode: 0644]

index 12238c46d621efa513b274355c3f08af24a0d928..084f6d57ec0c233b870fea5247c7ecd3c2744e1f 100644 (file)
@@ -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 (file)
index 0000000..886d4eb
--- /dev/null
@@ -0,0 +1,47 @@
+/* COVERAGE: listen */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+
+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;
+}
This page took 0.032975 seconds and 5 git commands to generate.