]> sourceware.org Git - systemtap.git/commitdiff
PR16716 partial fix: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pag...
authorMartin Cermak <mcermak@redhat.com>
Tue, 17 Feb 2015 18:19:00 +0000 (19:19 +0100)
committerMartin Cermak <mcermak@redhat.com>
Tue, 17 Feb 2015 18:19:00 +0000 (19:19 +0100)
* runtime/linux/compat_unistd.h: Define __NR_move_pages for rhel5 powerpc platform
* tapset/linux/nd_syscalls.stp: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pages}'.
* tapset/linux/syscalls.stp: Fix types and nesting for 'syscall.{mbind,move_pages,migrate_pages}'.
* testsuite/buildok/nd_syscalls-detailed.stp: Test all convenience variables.
* testsuite/buildok/syscalls-detailed.stp: Test all convenience variables.
* testsuite/systemtap.syscall/numa.c: New testcase.

runtime/linux/compat_unistd.h
tapset/linux/nd_syscalls.stp
tapset/linux/syscalls.stp
testsuite/buildok/nd_syscalls-detailed.stp
testsuite/buildok/syscalls-detailed.stp
testsuite/systemtap.syscall/numa.c [new file with mode: 0644]

index 2f9d75fadcd6ce91904c1fb652c2945e12772b6a..80bfb100533a47aa2ea86ca6361566ac9a98122a 100644 (file)
@@ -58,6 +58,9 @@
 #ifndef __NR_mmap2
 #define __NR_mmap2 (__NR_syscall_max + 1)
 #endif
+#ifndef __NR_move_pages
+#define __NR_move_pages (__NR_syscall_max + 1)
+#endif
 #ifndef __NR_msgctl
 #define __NR_msgctl (__NR_syscall_max + 1)
 #endif
index d27c5f33606221c08acd3839efb9885b25950554..3072421509db3cb6ccb0f83e913f2686d2e7bc75 100644 (file)
@@ -3472,26 +3472,40 @@ probe nd_syscall.madvise.return = kprobe.function("sys_madvise").return ?
 #      compat_ulong_t maxnode,
 #      compat_ulong_t flags)
 #
-probe nd_syscall.mbind = kprobe.function("compat_sys_mbind") ?,
-                         kprobe.function("sys_mbind") ?
+probe nd_syscall.mbind = __nd_syscall.mbind ?,
+                         kprobe.function("compat_sys_mbind") ?
 {
        name = "mbind"
        asmlinkage()
-       start = ulong_arg(1)
-       len = long_arg(2)
-       mode = ulong_arg(3)
+       start = pointer_arg(1)
+       len = ulong_arg(2)
+       mode = int_arg(3)
+       mode_str = _mempolicy_mode_str(mode)
        nmask_uaddr = pointer_arg(4)
        maxnode = ulong_arg(5)
        flags = uint_arg(6)
-       argstr = sprintf("%d, %d, %d, %p, %d, 0x%x", start, len, mode,
-               nmask_uaddr, maxnode, flags)
+       flags_str = _mempolicy_flags_str(flags)
+       argstr = sprintf("%p, %u, %s, %p, %u, %s", start, len,
+                        mode_str, nmask_uaddr, maxnode, flags_str)
+}
+probe __nd_syscall.mbind = kprobe.function("sys_mbind")
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
 }
-probe nd_syscall.mbind.return = kprobe.function("compat_sys_mbind").return ?,
-                                kprobe.function("sys_mbind").return ?
+probe nd_syscall.mbind.return = __nd_syscall.mbind.return ?,
+                                kprobe.function("compat_sys_mbind").return ?
 {
        name = "mbind"
        retstr = returnstr(1)
 }
+probe __nd_syscall.mbind.return = kprobe.function("sys_mbind").return
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
 
 # memfd_create _____________________________________________________
 # long sys_memfd_create (const char __user* uname, unsigned int flags)
@@ -3514,17 +3528,35 @@ probe nd_syscall.memfd_create.return = kprobe.function("sys_memfd_create").retur
 # long sys_migrate_pages(pid_t pid, unsigned long maxnode,
 #              const unsigned long __user *old_nodes,
 #              const unsigned long __user *new_nodes)
-probe nd_syscall.migrate_pages = kprobe.function("sys_migrate_pages") ?
+probe nd_syscall.migrate_pages = __nd_syscall.migrate_pages ?,
+                                 kprobe.function("compat_sys_migrate_pages") ?
 {
        name = "migrate_pages"
        asmlinkage()
-       argstr = sprintf("%d, %d, %p, %p", int_arg(1), ulong_arg(2), pointer_arg(3), pointer_arg(4))
+       pid = int_arg(1)
+       maxnode = ulong_arg(2)
+       old_nodes = pointer_arg(3)
+       new_nodes = pointer_arg(4)
+       argstr = sprintf("%d, %u, %p, %p", pid, maxnode, old_nodes, new_nodes)
 }
-probe nd_syscall.migrate_pages.return = kprobe.function("sys_migrate_pages").return ?
+probe __nd_syscall.migrate_pages = kprobe.function("sys_migrate_pages")
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
+probe nd_syscall.migrate_pages.return = __nd_syscall.migrate_pages.return ?,
+                                        kprobe.function("compat_sys_migrate_pages").return ?
 {
        name = "migrate_pages"
        retstr = returnstr(1)
 }
+probe __nd_syscall.migrate_pages.return = kprobe.function("sys_migrate_pages").return
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
 
 # mincore ____________________________________________________
 # long sys_mincore(unsigned long start, size_t len, unsigned char __user * vec)
@@ -3692,19 +3724,35 @@ probe nd_syscall.modify_ldt.return = kprobe.function("sys_modify_ldt").return ?
 #                int __user *status,
 #                int flags)
 #
-probe nd_syscall.move_pages = kprobe.function("compat_sys_move_pages") ?,
-                              kprobe.function("sys_move_pages") ?
+probe nd_syscall.move_pages = __nd_syscall.move_pages ?,
+                              kprobe.function("compat_sys_move_pages") ?
 {
        name = "move_pages"
        asmlinkage()
-       argstr = sprintf("%d, %d, %p, %p, 0x%x", int_arg(1), ulong_arg(2), pointer_arg(4), pointer_arg(5), int_arg(6))
+       pid = int_arg(1)
+       nr_pages = ulong_arg(2)
+       pages = pointer_arg(3)
+       nodes = pointer_arg(4)
+       status = pointer_arg(5)
+       flags = int_arg(6)
+       flags_str = _mempolicy_flags_str(flags)
+       argstr = sprintf("%d, %u, %p, %p, %p, %s", pid, nr_pages, pages,
+                         nodes, status, flags_str)
+}
+probe __nd_syscall.move_pages = kprobe.function("sys_move_pages")
+{
+       @__syscall_gate(%{ __NR_move_pages %})
 }
-probe nd_syscall.move_pages.return = kprobe.function("compat_sys_move_pages").return ?,
-                                     kprobe.function("sys_move_pages").return ?
+probe nd_syscall.move_pages.return = __nd_syscall.move_pages.return ?,
+                                     kprobe.function("compat_sys_move_pages").return ?
 {
        name = "move_pages"
        retstr = returnstr(1)
 }
+probe __nd_syscall.move_pages.return = kprobe.function("sys_move_pages").return
+{
+       @__syscall_gate(%{ __NR_move_pages %})
+}
 
 # mount ______________________________________________________
 # long sys_mount(char __user * dev_name,
index ca577d2a9c4380e609fafeb5e6d377f1bdd601ca..c06c96f40d84d917f39fde5062bef8b90c3f96db 100644 (file)
@@ -3278,25 +3278,44 @@ probe syscall.madvise.return = kernel.function("sys_madvise").return ?
 #      compat_ulong_t maxnode,
 #      compat_ulong_t flags)
 #
-probe syscall.mbind = kernel.function("compat_sys_mbind").call ?,
-                      kernel.function("sys_mbind").call ?
+probe syscall.mbind = __syscall.mbind ?,
+                      kernel.function("compat_sys_mbind").call ?
 {
        name = "mbind"
        start = $start
-       len = $len
-       mode = $mode
+       mode = __int32($mode)
+       mode_str = _mempolicy_mode_str(mode)
        nmask_uaddr = $nmask
-       maxnode = $maxnode
-       flags = $flags
-       argstr = sprintf("%d, %d, %d, %p, %d, 0x%x", $start, $len, $mode,
-               $nmask, $maxnode, $flags)
+       flags = __uint32($flags)
+       flags_str = _mempolicy_flags_str(flags)
+       if (%{ _stp_is_compat_task() %}) {
+               len = __uint32($len)
+               maxnode = __uint32($maxnode)
+       } else {
+               len = $len
+               maxnode = $maxnode
+       }
+       argstr = sprintf("%p, %u, %s, %p, %u, %s", start, len,
+                        mode_str, nmask_uaddr, maxnode, flags_str)
+}
+probe __syscall.mbind = kernel.function("sys_mbind").call
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
 }
-probe syscall.mbind.return = kernel.function("compat_sys_mbind").return ?,
-                             kernel.function("sys_mbind").return ?
+probe syscall.mbind.return = __syscall.mbind.return ?,
+                             kernel.function("compat_sys_mbind").return ?
 {
        name = "mbind"
        retstr = return_str(1, $return)
 }
+probe __syscall.mbind.return = kernel.function("sys_mbind").return
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
 
 # memfd_create _____________________________________________________
 # long sys_memfd_create (const char __user* uname, unsigned int flags)
@@ -3318,16 +3337,38 @@ probe syscall.memfd_create.return = kernel.function("sys_memfd_create").return ?
 # long sys_migrate_pages(pid_t pid, unsigned long maxnode,
 #              const unsigned long __user *old_nodes,
 #              const unsigned long __user *new_nodes)
-probe syscall.migrate_pages = kernel.function("sys_migrate_pages").call ?
+probe syscall.migrate_pages = __syscall.migrate_pages ?,
+                              kernel.function("compat_sys_migrate_pages").call ?
 {
        name = "migrate_pages"
-       argstr = sprintf("%d, %d, %p, %p", $pid, $maxnode, $old_nodes, $new_nodes)
+       pid = __int32($pid)
+       old_nodes = $old_nodes
+       new_nodes = $new_nodes
+       if (%{ _stp_is_compat_task() %}) {
+               maxnode = __uint32($maxnode)
+       } else {
+               maxnode = $maxnode
+       }
+       argstr = sprintf("%d, %u, %p, %p", pid, maxnode, old_nodes, new_nodes)
 }
-probe syscall.migrate_pages.return = kernel.function("sys_migrate_pages").return ?
+probe __syscall.migrate_pages = kernel.function("sys_migrate_pages").call
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
+probe syscall.migrate_pages.return = __syscall.migrate_pages.return ?,
+                                     kernel.function("compat_sys_migrate_pages").return ?
 {
        name = "migrate_pages"
        retstr = return_str(1, $return)
 }
+probe __syscall.migrate_pages.return = kernel.function("sys_migrate_pages").return
+{
+%( arch == "powerpc" %?
+       @__syscall_gate_compat_simple
+%)
+}
 
 # mincore ____________________________________________________
 # long sys_mincore(unsigned long start, size_t len, unsigned char __user * vec)
@@ -3488,18 +3529,42 @@ probe syscall.modify_ldt.return = kernel.function("sys_modify_ldt").return ?
 #                int __user *status,
 #                int flags)
 #
-probe syscall.move_pages = kernel.function("compat_sys_move_pages").call ?,
-                           kernel.function("sys_move_pages").call ?
+probe syscall.move_pages = __syscall.move_pages ?,
+                           __syscall.compat_move_pages ?
 {
        name = "move_pages"
-       argstr = sprintf("%d, %d, %p, %p, 0x%x", $pid, $nr_pages, $nodes, $status, $flags)
+       pid = __int32($pid)
+       nodes = $nodes
+       status = $status
+       flags = __int32($flags)
+       flags_str = _mempolicy_flags_str(flags)
+       if (%{ _stp_is_compat_task() %}) {
+               nr_pages = __uint32($nr_pages)
+       } else {
+               nr_pages = $nr_pages
+       }
+       argstr = sprintf("%d, %u, %p, %p, %p, %s", pid, nr_pages, pages,
+                        nodes, status, flags_str)
+}
+probe __syscall.move_pages = kernel.function("sys_move_pages").call
+{
+       @__syscall_gate(%{ __NR_move_pages %})
+       pages = $pages
 }
-probe syscall.move_pages.return = kernel.function("compat_sys_move_pages").return ?,
-                                  kernel.function("sys_move_pages").return ?
+probe __syscall.compat_move_pages = kernel.function("compat_sys_move_pages").call
+{
+       pages = $pages32
+}
+probe syscall.move_pages.return = __syscall.move_pages.return ?,
+                                  kernel.function("compat_sys_move_pages").return ?
 {
        name = "move_pages"
        retstr = return_str(1, $return)
 }
+probe __syscall.move_pages.return = kernel.function("sys_move_pages").return
+{
+       @__syscall_gate(%{ __NR_move_pages %})
+}
 
 # mount ______________________________________________________
 # long sys_mount(char __user * dev_name,
index 71a6d2937c962e9fa6e77fcc9aeff513e66f78db..361fdccea1029a4f067f3530bb8770a824e8ac89 100755 (executable)
@@ -1175,8 +1175,8 @@ probe nd_syscall.madvise.return
 probe nd_syscall.mbind ?
 {
        printf("%s, %s\n", name, argstr)
-       printf("%d, %d, %d, %p, %d, %d\n", start, len, mode, nmask_uaddr,
-              maxnode, flags)
+       argstr = sprintf("%p, %u, %d, %s, %p, %u, %u, %s", start, len, mode,
+                        mode_str, nmask_uaddr, maxnode, flags, flags_str)
 }
 probe nd_syscall.mbind.return ?
 {
@@ -1196,6 +1196,7 @@ probe nd_syscall.memfd_create.return ?
 probe nd_syscall.migrate_pages ?
 {
        printf("%s, %s\n", name, argstr)
+       printf("%d, %u, %p, %p", pid, maxnode, old_nodes, new_nodes)
 }
 probe nd_syscall.migrate_pages.return ?
 {
@@ -1286,6 +1287,8 @@ probe nd_syscall.modify_ldt.return ?
 probe nd_syscall.move_pages ?
 {
        printf("%s, %s\n", name, argstr)
+       printf("%d, %u, %p, %p, %p, %u, %s", pid, nr_pages, pages, nodes,
+              status, flags, flags_str)
 }
 probe nd_syscall.move_pages.return ?
 {
index 0070d713b8d3d04911d8ffac4b2032b775eb022c..85635e417d1b35a46fe613f06f8b318f15b8fc78 100755 (executable)
@@ -1174,8 +1174,8 @@ probe syscall.madvise.return
 probe syscall.mbind ?
 {
        printf("%s, %s\n", name, argstr)
-       printf("%d, %d, %d, %p, %d, %d\n", start, len, mode, nmask_uaddr,
-              maxnode, flags)
+    printf("%p, %u, %d, %s, %p, %u, %u, %s", start, len, mode,    
+              mode_str, nmask_uaddr, maxnode, flags, flags_str)
 }
 probe syscall.mbind.return ?
 {
@@ -1195,6 +1195,7 @@ probe syscall.memfd_create.return ?
 probe syscall.migrate_pages ?
 {
        printf("%s, %s\n", name, argstr)
+       printf("%d, %u, %p, %p", pid, maxnode, old_nodes, new_nodes)
 }
 probe syscall.migrate_pages.return ?
 {
@@ -1285,6 +1286,8 @@ probe syscall.modify_ldt.return ?
 probe syscall.move_pages ?
 {
        printf("%s, %s\n", name, argstr)
+       printf("%d, %u, %p, %p, %p, %u, %s", pid, nr_pages, pages, nodes,
+              status, flags, flags_str)
 }
 probe syscall.move_pages.return ?
 {
diff --git a/testsuite/systemtap.syscall/numa.c b/testsuite/systemtap.syscall/numa.c
new file mode 100644 (file)
index 0000000..bee06cf
--- /dev/null
@@ -0,0 +1,147 @@
+/* COVERAGE: mbind migrate_pages move_pages */
+
+#define _GNU_SOURCE
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <sys/mman.h>
+#include <linux/mempolicy.h>
+#include <sys/types.h>
+#define TEST_PAGES 2
+
+
+#ifdef __NR_mbind
+int __mbind(void *start, unsigned long len, int mode,
+            unsigned long *nmask, unsigned long maxnode, unsigned flags) {
+    return syscall(__NR_mbind, start, len, mode, nmask, maxnode, flags);
+}
+#endif
+
+#ifdef __NR_migrate_pages
+long __migrate_pages(pid_t pid, unsigned long maxnode,
+                     const unsigned long *old_nodes,
+                     const unsigned long *new_nodes) {
+    return syscall(__NR_migrate_pages, pid, maxnode, old_nodes, new_nodes);
+}
+#endif
+
+#ifdef __NR_move_pages
+long __move_pages(pid_t pid, unsigned long nr_pages, const void **pages,
+                  const int *nodes, int *status, int flags) {
+    return syscall(__NR_move_pages, pid, nr_pages, pages, nodes, status, flags);
+}
+#endif
+
+
+int main()
+{
+    unsigned long *p;
+    unsigned long len = 100;
+    const unsigned long node0 = 1;
+    const void *pages[TEST_PAGES] = { 0 };
+    int status[TEST_PAGES];
+
+// ---- normal operation --------------
+
+#ifdef __NR_mbind
+    p = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
+    __mbind(p, len, MPOL_DEFAULT, NULL, 0, 0);
+    //staptest// [[[[mbind (XXXX, 100, MPOL_DEFAULT, 0x0, 0, 0x0) = 0!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+#ifdef __NR_move_pages
+    __move_pages(0, TEST_PAGES, pages, NULL, status, 0);
+    //staptest// [[[[move_pages (0, 2, XXXX, 0x0, XXXX, 0x0) = 0!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+#ifdef __NR_migrate_pages
+    __migrate_pages(0, 1, &node0, &node0);
+    //staptest// [[[[migrate_pages (0, 1, XXXX, XXXX) = 0!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+
+// ---- ugly calls --------------------
+
+#ifdef __NR_mbind
+    __mbind((void *)-1, 0, 0, NULL, 0, 0);
+    //staptest// [[[[mbind (0x[f]+, 0, MPOL_DEFAULT, 0x0, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __mbind(NULL, -1, 0, NULL, 0, 0);
+#if __WORDSIZE == 64
+    //staptest// [[[[mbind (0x0, 18446744073709551615, MPOL_DEFAULT, 0x0, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#else
+    //staptest// [[[[mbind (0x0, 4294967295, MPOL_DEFAULT, 0x0, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    __mbind(NULL, 0, -1, NULL, 0, 0);
+    //staptest// [[[[mbind (0x0, 0, 0x[f]+, 0x0, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __mbind(NULL, 0, 0, (unsigned long *)-1, 0, 0);
+    //staptest// [[[[mbind (0x0, 0, MPOL_DEFAULT, 0x[f]+, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __mbind(NULL, 0, 0, NULL, -1, 0);
+#if __WORDSIZE == 64
+    //staptest// [[[[mbind (0x0, 0, MPOL_DEFAULT, 0x0, 18446744073709551615, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#else
+    //staptest// [[[[mbind (0x0, 0, MPOL_DEFAULT, 0x0, 4294967295, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    __mbind(NULL, 0, 0, NULL, 0, -1);
+    //staptest// [[[[mbind (0x0, 0, MPOL_DEFAULT, 0x0, 0, MPOL_F_NODE|MPOL_F_ADDR[[[[!!!!|MPOL_F_MEMS_ALLOWED]]]]|XXXX)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+#ifdef MPOL_F_STATIC_NODES
+    __mbind(NULL, 0, MPOL_F_STATIC_NODES|MPOL_PREFERRED, NULL, 0, 0);
+    //staptest// [[[[mbind (0x0, 0, MPOL_F_STATIC_NODES|MPOL_PREFERRED, 0x0, 0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    __mbind(NULL, 0, 0, NULL, 0, MPOL_F_ADDR);
+    //staptest// [[[[mbind (0x0, 0, MPOL_DEFAULT, 0x0, 0, MPOL_F_ADDR)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+#ifdef __NR_move_pages
+    __move_pages(-1, 0, NULL, NULL, NULL, 0);
+    //staptest// [[[[move_pages (-1, 0, 0x0, 0x0, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __move_pages(0, -1, NULL, NULL, NULL, 0);
+#if __WORDSIZE == 64
+    //staptest// [[[[move_pages (0, 18446744073709551615, 0x0, 0x0, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#else
+    //staptest// [[[[move_pages (0, 4294967295, 0x0, 0x0, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    __move_pages(0, 0, (const void **)-1, NULL, NULL, 0);
+    //staptest// [[[[move_pages (0, 0, 0x[f]+, 0x0, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __move_pages(0, 0, NULL, (const int *)-1, NULL, 0);
+    //staptest// [[[[move_pages (0, 0, 0x0, 0x[f]+, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __move_pages(0, 0, NULL, NULL, (int *)-1, 0);
+    //staptest// [[[[move_pages (0, 0, 0x0, 0x0, 0x[f]+, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __move_pages(0, 0, NULL, NULL, NULL, -1);
+    //staptest// [[[[move_pages (0, 0, 0x0, 0x0, 0x0, MPOL_F_NODE|MPOL_F_ADDR[[[[!!!!|MPOL_F_MEMS_ALLOWED]]]]|XXXX)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __move_pages(0, 0, NULL, NULL, NULL, MPOL_F_ADDR);
+    //staptest// [[[[move_pages (0, 0, 0x0, 0x0, 0x0, MPOL_F_ADDR)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+#ifdef __NR_migrate_pages
+    __migrate_pages(-1, 0, NULL, NULL);
+    //staptest// [[[[migrate_pages (-1, 0, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __migrate_pages(0, -1, NULL, NULL);
+#if __WORDSIZE == 64
+    //staptest// [[[[migrate_pages (0, 18446744073709551615, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#else
+    //staptest// [[[[migrate_pages (0, 4294967295, 0x0, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    __migrate_pages(0, 0, (const unsigned long *)-1, NULL);
+    //staptest// [[[[migrate_pages (0, 0, 0x[f]+, 0x0)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+
+    __migrate_pages(0, 0, NULL, (const unsigned long *)-1);
+    //staptest// [[[[migrate_pages (0, 0, 0x0, 0x[f]+)!!!!ni_syscall () = NNNN (ENOSYS)]]]]
+#endif
+
+    return 0;
+
+}
This page took 0.051316 seconds and 5 git commands to generate.