]> sourceware.org Git - systemtap.git/commitdiff
PR20333/connect
authorMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 14:41:05 +0000 (15:41 +0100)
committerMartin Cermak <mcermak@redhat.com>
Thu, 22 Dec 2016 14:41:05 +0000 (15:41 +0100)
tapset/linux/nd_syscalls.stp
tapset/linux/sysc_connect.stp [new file with mode: 0644]
tapset/linux/syscalls.stp

index d7862162c3d5739c3f3d698d6e68a90d67486a0a..a435eb23f2823725309a40e374c91108830e6d54 100644 (file)
@@ -1,57 +1,3 @@
-# connect ____________________________________________________
-# long sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
-probe nd_syscall.connect = __nd_syscall.connect ?,
-       __nd_syscall.socketcall.connect ?,
-       __nd_syscall.compat_socketcall.connect ?
-{
-       name = "connect"
-       @_af_inet_info_u(serv_addr_uaddr, addrlen)
-       argstr = sprintf("%d, %s, %u", sockfd,
-                        _struct_sockaddr_u(serv_addr_uaddr, addrlen), addrlen)
-}
-probe __nd_syscall.connect = kprobe.function("sys_connect") ?
-{
-       @__syscall_gate(@const("__NR_connect"))
-       asmlinkage()
-       sockfd = int_arg(1)
-       serv_addr_uaddr = pointer_arg(2)
-       addrlen = uint_arg(3)
-}
-probe __nd_syscall.socketcall.connect = kprobe.function("sys_socketcall").call ?
-{
-       asmlinkage()
-       if (int_arg(1) != @const("SYS_CONNECT")) next;
-       __args = &@cast(pointer_arg(2), "ulong", "kernel<linux/types.h>")
-       sockfd = __int32(user_ulong(&(__args)[0]))
-       serv_addr_uaddr = user_ulong(&(__args)[1])
-       addrlen = __uint32(user_ulong(&(__args)[2]))
-}
-probe __nd_syscall.compat_socketcall.connect =
-       kprobe.function("compat_sys_socketcall").call ?
-{
-       asmlinkage()
-       if (int_arg(1) != @const("SYS_CONNECT")) next;
-       __args = &@cast(pointer_arg(2), "unsigned int", "kernel<linux/types.h>")
-       sockfd = user_int(&(__args)[0])
-       serv_addr_uaddr = user_uint32(&(__args)[1])
-       addrlen = user_uint32(&(__args)[2])
-}
-probe nd_syscall.connect.return = __nd_syscall.connect.return ?,
-       __nd_syscall.socketcall.connect.return ?
-{
-       name = "connect"
-       retstr = returnstr(1)
-}
-probe __nd_syscall.connect.return = kprobe.function("sys_connect").return ?
-{
-       @__syscall_gate(@const("__NR_connect"))
-}
-probe __nd_syscall.socketcall.connect.return =
-       kprobe.function("sys_socketcall").return ?,
-       kprobe.function("compat_sys_socketcall").return ?
-{
-       if (@entry(__asmlinkage_int_arg(1)) != @const("SYS_CONNECT")) next;
-}
 
 # copy_file_range ___________________________________________
 # SYSCALL_DEFINE6(copy_file_range, int, fd_in, loff_t __user *, off_in,
diff --git a/tapset/linux/sysc_connect.stp b/tapset/linux/sysc_connect.stp
new file mode 100644 (file)
index 0000000..a4358ae
--- /dev/null
@@ -0,0 +1,118 @@
+# connect ____________________________________________________
+# long sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
+
+@define _SYSCALL_CONNECT_NAME
+%(
+       name = "connect"
+%)
+
+@define _SYSCALL_CONNECT_ARGSTR
+%(
+       argstr = sprintf("%d, %s, %u", sockfd,
+                        _struct_sockaddr_u(serv_addr_uaddr, addrlen), addrlen)
+%)
+
+probe syscall.connect = dw_syscall.connect !, nd_syscall.connect {}
+probe syscall.connect.return = dw_syscall.connect.return !, nd_syscall.connect.return {}
+
+# dw_connect _____________________________________________________
+
+probe dw_syscall.connect = __syscall.connect ?, __syscall.socketcall.connect ?,
+       __syscall.compat_socketcall.connect ?
+{
+       @_SYSCALL_CONNECT_NAME
+       @_af_inet_info_u(serv_addr_uaddr, addrlen)
+       @_SYSCALL_CONNECT_ARGSTR
+}
+probe __syscall.connect = kernel.function("sys_connect").call ?
+{
+       @__syscall_gate(@const("__NR_connect"))
+       sockfd = __int32($fd)
+       serv_addr_uaddr = $uservaddr
+       addrlen = __uint32($addrlen)
+}
+probe __syscall.socketcall.connect = kernel.function("sys_socketcall").call ?
+{
+       if ($call != @const("SYS_CONNECT")) next;
+       sockfd = __int32(user_ulong(&@cast($args, "ulong")[0]))
+       serv_addr_uaddr = user_ulong(&@cast($args, "ulong")[1])
+       addrlen = __uint32(user_ulong(&@cast($args, "ulong")[2]))
+}
+probe __syscall.compat_socketcall.connect =
+       kernel.function("compat_sys_socketcall").call ?
+{
+       if ($call != @const("SYS_CONNECT")) next;
+       sockfd = user_int(&@cast($args, "unsigned int")[0])
+       serv_addr_uaddr = user_uint32(&@cast($args, "unsigned int")[1])
+       addrlen = user_uint32(&@cast($args, "unsigned int")[2])
+}
+probe dw_syscall.connect.return = __syscall.connect.return ?,
+       __syscall.socketcall.connect.return ?
+{
+       @_SYSCALL_CONNECT_NAME
+       retstr = return_str(1, $return)
+}
+probe __syscall.connect.return = kernel.function("sys_connect").return ?
+{
+       @__syscall_gate(@const("__NR_connect"))
+}
+probe __syscall.socketcall.connect.return =
+       kernel.function("sys_socketcall").return ?,
+       kernel.function("compat_sys_socketcall").return ?
+{
+       if (@entry($call) != @const("SYS_CONNECT")) next;
+}
+
+# nd_connect _____________________________________________________
+
+probe nd_syscall.connect = __nd_syscall.connect ?,
+       __nd_syscall.socketcall.connect ?,
+       __nd_syscall.compat_socketcall.connect ?
+{
+       @_SYSCALL_CONNECT_NAME
+       @_af_inet_info_u(serv_addr_uaddr, addrlen)
+       @_SYSCALL_CONNECT_ARGSTR
+}
+probe __nd_syscall.connect = kprobe.function("sys_connect") ?
+{
+       @__syscall_gate(@const("__NR_connect"))
+       asmlinkage()
+       sockfd = int_arg(1)
+       serv_addr_uaddr = pointer_arg(2)
+       addrlen = uint_arg(3)
+}
+probe __nd_syscall.socketcall.connect = kprobe.function("sys_socketcall").call ?
+{
+       asmlinkage()
+       if (int_arg(1) != @const("SYS_CONNECT")) next;
+       __args = &@cast(pointer_arg(2), "ulong", "kernel<linux/types.h>")
+       sockfd = __int32(user_ulong(&(__args)[0]))
+       serv_addr_uaddr = user_ulong(&(__args)[1])
+       addrlen = __uint32(user_ulong(&(__args)[2]))
+}
+probe __nd_syscall.compat_socketcall.connect =
+       kprobe.function("compat_sys_socketcall").call ?
+{
+       asmlinkage()
+       if (int_arg(1) != @const("SYS_CONNECT")) next;
+       __args = &@cast(pointer_arg(2), "unsigned int", "kernel<linux/types.h>")
+       sockfd = user_int(&(__args)[0])
+       serv_addr_uaddr = user_uint32(&(__args)[1])
+       addrlen = user_uint32(&(__args)[2])
+}
+probe nd_syscall.connect.return = __nd_syscall.connect.return ?,
+       __nd_syscall.socketcall.connect.return ?
+{
+       @_SYSCALL_CONNECT_NAME
+       retstr = returnstr(1)
+}
+probe __nd_syscall.connect.return = kprobe.function("sys_connect").return ?
+{
+       @__syscall_gate(@const("__NR_connect"))
+}
+probe __nd_syscall.socketcall.connect.return =
+       kprobe.function("sys_socketcall").return ?,
+       kprobe.function("compat_sys_socketcall").return ?
+{
+       if (@entry(__asmlinkage_int_arg(1)) != @const("SYS_CONNECT")) next;
+}
index 9f534a9cc5f492e464aab39fa78b066f0a510133..1f8538c4c7db719268d1ff116d158b76c118ce57 100644 (file)
@@ -1,53 +1,4 @@
 
-# connect ____________________________________________________
-# long sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
-probe syscall.connect = __syscall.connect ?, __syscall.socketcall.connect ?,
-       __syscall.compat_socketcall.connect ?
-{
-       name = "connect"
-       @_af_inet_info_u(serv_addr_uaddr, addrlen)
-       argstr = sprintf("%d, %s, %u", sockfd,
-                        _struct_sockaddr_u(serv_addr_uaddr, addrlen), addrlen)
-}
-probe __syscall.connect = kernel.function("sys_connect").call ?
-{
-       @__syscall_gate(@const("__NR_connect"))
-       sockfd = __int32($fd)
-       serv_addr_uaddr = $uservaddr
-       addrlen = __uint32($addrlen)
-}
-probe __syscall.socketcall.connect = kernel.function("sys_socketcall").call ?
-{
-       if ($call != @const("SYS_CONNECT")) next;
-       sockfd = __int32(user_ulong(&@cast($args, "ulong")[0]))
-       serv_addr_uaddr = user_ulong(&@cast($args, "ulong")[1])
-       addrlen = __uint32(user_ulong(&@cast($args, "ulong")[2]))
-}
-probe __syscall.compat_socketcall.connect =
-       kernel.function("compat_sys_socketcall").call ?
-{
-       if ($call != @const("SYS_CONNECT")) next;
-       sockfd = user_int(&@cast($args, "unsigned int")[0])
-       serv_addr_uaddr = user_uint32(&@cast($args, "unsigned int")[1])
-       addrlen = user_uint32(&@cast($args, "unsigned int")[2])
-}
-probe syscall.connect.return = __syscall.connect.return ?,
-       __syscall.socketcall.connect.return ?
-{
-       name = "connect"
-       retstr = return_str(1, $return)
-}
-probe __syscall.connect.return = kernel.function("sys_connect").return ?
-{
-       @__syscall_gate(@const("__NR_connect"))
-}
-probe __syscall.socketcall.connect.return =
-       kernel.function("sys_socketcall").return ?,
-       kernel.function("compat_sys_socketcall").return ?
-{
-       if (@entry($call) != @const("SYS_CONNECT")) next;
-}
-
 # copy_file_range ___________________________________________
 # SYSCALL_DEFINE6(copy_file_range, int, fd_in, loff_t __user *, off_in,
 #              int, fd_out, loff_t __user *, off_out,
This page took 0.036471 seconds and 5 git commands to generate.