]> sourceware.org Git - systemtap.git/commitdiff
Add tapset support for mlock2 syscall in 4.4
authorLukas Berk <lberk@redhat.com>
Fri, 22 Jan 2016 23:40:33 +0000 (18:40 -0500)
committerLukas Berk <lberk@redhat.com>
Fri, 22 Jan 2016 23:45:18 +0000 (18:45 -0500)
aux_syscalls.stp - flags to str function
nd_syscalls.stp - add kprobe based syscall probe point
syscalls.stp - add kernel function based syscall probe point

tapset/linux/aux_syscalls.stp
tapset/linux/nd_syscalls.stp
tapset/linux/syscalls.stp

index 929396d7010ed778da0fcab9b2624bdb740a7892..d59ebbfd5e9e3bece7aaed7ecb870d4aafc03e93 100644 (file)
@@ -1678,15 +1678,34 @@ function _mfd_flags_str:string(flags:long)
          _stp_lookup_or_str(_stp_mfd_flags_list, flags, STAP_RETVALUE, MAXSTRINGLEN);
 %}
 
+%{
+#include <linux/mman.h>
+static const _stp_val_array const _stp_mlock2_flags_list[] = {
+#ifdef MLOCK_ONFAULT  
+         V(MLOCK_ONFAULT),
+#endif
+        {0, NULL}
+};
+%}
+/* `man mlock2` for more information */
+function _stp_mlock2_str:string(flags:long)
+%{
+        uint32_t flags = (uint32_t)STAP_ARG_flags;
+        _stp_lookup_or_str(_stp_mlock2_flags_list, flags, STAP_RETVALUE,
+                          MAXSTRINGLEN);
+%}
+
 %{
 #include <linux/mman.h>
 static const _stp_val_array const _stp_mlockall_flags_list[] = {
        V(MCL_CURRENT),
        V(MCL_FUTURE),
+#ifdef MCL_ONFAULT
+       V(MCL_ONFAULT),
+#endif
        {0, NULL}
 };
 %}
-
 /* `man mlockall` for more information */
 function _mlockall_flags_str:string(flags:long)
 %{ /* pure */
index b17501de7f583b68c5dcb3f51df7fa34fb552902..ff7e4750f1a4a3e28da83ba6eba7041abf5d73c2 100644 (file)
@@ -3945,6 +3945,26 @@ probe nd_syscall.mlock.return = kprobe.function("sys_mlock").return ?
        retstr = returnstr(1)
 }
 
+# mlock2 _____________________________________________________
+#
+# long sys_mlock2(unsigned long start, size_t len, int flags)
+#
+probe nd_syscall.mlock2 = kprobe.function("sys_mlock2") ?
+{
+       name = "mlock2"
+       asmlinkage()
+       addr = __ulong(1)
+       len = __ulong(2)
+       flags = __int32(3)
+       flags_str = _stp_mlock2_str(__int32(3))
+       argstr = sprintf("%p, %u %s", addr, len, flags_str)
+}
+probe nd_syscall.mlock2.return = kprobe.function("sys_mlock2").return ?
+{
+       name = "mlock2"
+       retstr = returnstr(1)
+}
+
 # mlockall ___________________________________________________
 #
 # long sys_mlockall(int flags)
index d55060027494cf8345766e0221331081ea96ad80..d93dc78111ebf4b029bdf0344b341a72c37aeb0e 100644 (file)
@@ -3710,6 +3710,25 @@ probe syscall.mlock.return = kernel.function("sys_mlock").return ?
        retstr = return_str(1, $return)
 }
 
+# mlock2 _____________________________________________________
+#
+# long sys_mlock2(unsigned long start, size_t len, int flags)
+#
+probe syscall.mlock2 = kernel.function("sys_mlock2").call ?
+{
+       name = "mlock2"
+       addr = __ulong($start)
+       len = __ulong($len)
+       flags = __int32($flags)
+       flags_str = _stp_mlock2_str(__int32(flags))
+       argstr = sprintf("%p, %u %s", addr, len, flags_str)
+}
+probe syscall.mlock2.return = kernel.function("sys_mlock2").return ?
+{
+       name = "mlock2"
+       retstr = return_str(1, $return)
+}
+
 # mlockall ___________________________________________________
 #
 # long sys_mlockall(int flags)
This page took 0.040573 seconds and 5 git commands to generate.