]> granicus.if.org Git - strace/commitdiff
move_pages: honor xlat styles
authorShankara Pailoor <shankarapailoor@gmail.com>
Sun, 13 Jan 2019 19:37:49 +0000 (11:37 -0800)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 18 Feb 2019 01:41:43 +0000 (01:41 +0000)
* numa.c (print_status): Add xlat_style support for status argument.
* tests/move_pages-Xabbrev.c: New file.
* tests/move_pages-Xraw.c: Likewise.
* tests/move_pages-Xverbose.c: Likewise.
* tests/move_pages.c: Handle XLAT_RAW, XLAT_ABBREV, and XLAT_VERBOSE
macros.
* tests/gen_tests.in (move_pages-Xabbrev, move_pages-Xraw,
move_pages-Xverbose): New tests.
* tests/pure_executables.list: Add move_pages-Xabbrev, move_pages-Xraw,
and move_pages-Xverbose.
* tests/.gitignore: Likewise.

numa.c
tests/.gitignore
tests/gen_tests.in
tests/move_pages-Xabbrev.c [new file with mode: 0644]
tests/move_pages-Xraw.c [new file with mode: 0644]
tests/move_pages-Xverbose.c [new file with mode: 0644]
tests/move_pages.c
tests/pure_executables.list

diff --git a/numa.c b/numa.c
index 8eba75f4c0d45f8b5498efa6480964a5ef8baa6d..2b7ac3d5eee93298fefaae82d0362b41d9c12465 100644 (file)
--- a/numa.c
+++ b/numa.c
@@ -121,12 +121,22 @@ static bool
 print_status(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
        const int status = *(int *) elem_buf;
+       bool is_errno = (status < 0) && ((unsigned) -status < nerrnos);
 
-       if (status < 0 && (unsigned) -status < nerrnos)
-               tprintf("-%s", errnoent[-status]);
-       else
+       if (!is_errno || xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV)
                tprintf("%d", status);
 
+       if (!is_errno || xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW)
+               return true;
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" /* ");
+
+       tprintf("-%s", errnoent[-status]);
+
+       if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
+               tprints(" */");
+
        return true;
 }
 
index 5fd5c0a9c62afe2fd3c13b10acb977783baa664b..aecdf4324e659b6514e2f57d48d8e15483a80f6d 100644 (file)
@@ -258,6 +258,9 @@ mount-Xabbrev
 mount-Xraw
 mount-Xverbose
 move_pages
+move_pages-Xabbrev
+move_pages-Xraw
+move_pages-Xverbose
 mq
 mq_sendrecv
 mq_sendrecv-read
index b988656581df7a88bf01fefcbc53e487ee5528dd..3b35a67bdf8ecf1fce1e9900815431060246a88d 100644 (file)
@@ -218,6 +218,9 @@ mount-Xabbrev       -a33 -e trace=mount -Xabbrev
 mount-Xraw     -a33 -e trace=mount -Xraw
 mount-Xverbose -a33 -e trace=mount -Xverbose
 move_pages     -s3
+move_pages-Xabbrev     -s3 -e trace=move_pages -Xabbrev
+move_pages-Xraw        -s3 -a36 -e trace=move_pages -Xraw
+move_pages-Xverbose    -s3 -e trace=move_pages -Xverbose
 mq     -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
 mq_sendrecv    -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
 mq_sendrecv-read       -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/move_pages-Xabbrev.c b/tests/move_pages-Xabbrev.c
new file mode 100644 (file)
index 0000000..d094988
--- /dev/null
@@ -0,0 +1 @@
+#include "move_pages.c"
diff --git a/tests/move_pages-Xraw.c b/tests/move_pages-Xraw.c
new file mode 100644 (file)
index 0000000..e9a6cc0
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_RAW 1
+#include "move_pages.c"
diff --git a/tests/move_pages-Xverbose.c b/tests/move_pages-Xverbose.c
new file mode 100644 (file)
index 0000000..71fcdee
--- /dev/null
@@ -0,0 +1,2 @@
+#define XLAT_VERBOSE 1
+#include "move_pages.c"
index 90d05535b291c3573904bb564e4d01b6b9e2768a..2f88f792814b9ef34c8c934c66119d9448ff2627 100644 (file)
@@ -106,8 +106,16 @@ print_status_array(const int *const status, const unsigned long count)
                if (status[i] >= 0) {
                        printf("%d", status[i]);
                } else {
+#if !XLAT_RAW
                        errno = -status[i];
+#endif
+#if XLAT_RAW
+                       printf("%d", status[i]);
+#elif XLAT_VERBOSE
+                       printf("%d /* -%s */", status[i], errno2name());
+#else
                        printf("-%s", errno2name());
+#endif
                }
        }
        printf("]");
@@ -133,7 +141,13 @@ print_stat_pages(const unsigned long pid, const unsigned long count,
        } else {
                print_status_array(status, count);
        }
+#if XLAT_RAW
+       printf(", 0x2) = %s\n", errstr);
+#elif XLAT_VERBOSE
+       printf(", 0x2 /* MPOL_MF_MOVE */) = %s\n", errstr);
+#else /* XLAT_ABBREV */
        printf(", MPOL_MF_MOVE) = %s\n", errstr);
+#endif
 }
 
 static void
@@ -159,7 +173,13 @@ print_move_pages(const unsigned long pid,
                printf("%p", status);
        else
                printf("[]");
+#if XLAT_RAW
+       printf(", 0x4) = %s\n", errstr);
+#elif XLAT_VERBOSE
+       printf(", 0x4 /* MPOL_MF_MOVE_ALL */) = %s\n", errstr);
+#else /* XLAT_ABBREV */
        printf(", MPOL_MF_MOVE_ALL) = %s\n", errstr);
+#endif
 }
 
 int
index 616ee9ed095d7033f7dc3b7d1100eeac3d71c1bd..af99bda628da2338f6df96b7092673198508450f 100755 (executable)
@@ -217,6 +217,9 @@ mount-Xabbrev
 mount-Xraw
 mount-Xverbose
 move_pages
+move_pages-Xabbrev
+move_pages-Xraw
+move_pages-Xverbose
 mq
 mq_sendrecv
 mq_sendrecv-read