summaryrefslogtreecommitdiff
path: root/tests/madvise.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/madvise.c')
-rw-r--r--tests/madvise.c109
1 files changed, 100 insertions, 9 deletions
diff --git a/tests/madvise.c b/tests/madvise.c
index 51118c6a0..9df952bbe 100644
--- a/tests/madvise.c
+++ b/tests/madvise.c
@@ -32,26 +32,117 @@ main(void)
long rc;
rc = madvise(addr, length, MADV_NORMAL);
- printf("madvise(%p, %lu, MADV_NORMAL) = %s\n",
- addr, length, sprintrc(rc));
+ printf("madvise(%p, %lu, " XLAT_FMT ") = %s\n",
+ addr, length, XLAT_ARGS(MADV_NORMAL), sprintrc(rc));
static const kernel_ulong_t advice =
(kernel_ulong_t) 0xfacefeed00000000ULL | MADV_RANDOM;
rc = k_madvise((uintptr_t) addr, length, advice);
- printf("madvise(%p, %lu, MADV_RANDOM) = %s\n",
- addr, length, sprintrc(rc));
+ printf("madvise(%p, %lu, " XLAT_FMT ") = %s\n",
+ addr, length, XLAT_ARGS(MADV_RANDOM), sprintrc(rc));
static const kernel_ulong_t bogus_length =
(kernel_ulong_t) 0xfffffffffffffaceULL;
rc = k_madvise(0, bogus_length, MADV_SEQUENTIAL);
- printf("madvise(NULL, %llu, MADV_SEQUENTIAL) = %s\n",
- (unsigned long long) bogus_length, sprintrc(rc));
+ printf("madvise(NULL, %llu, " XLAT_FMT ") = %s\n",
+ (unsigned long long) bogus_length,
+ XLAT_ARGS(MADV_SEQUENTIAL), sprintrc(rc));
if (F8ILL_KULONG_SUPPORTED) {
- rc = k_madvise(f8ill_ptr_to_kulong(addr), length, MADV_NORMAL);
- printf("madvise(%#llx, %lu, MADV_NORMAL) = %s\n",
+ rc = k_madvise(f8ill_ptr_to_kulong(addr), length,
+ MADV_WILLNEED);
+ printf("madvise(%#llx, %lu, " XLAT_FMT ") = %s\n",
(unsigned long long) f8ill_ptr_to_kulong(addr),
- length, sprintrc(rc));
+ length, XLAT_ARGS(MADV_WILLNEED), sprintrc(rc));
+ }
+
+ static const struct strval32 advices[] = {
+#ifdef __alpha__
+ { 4, "0x4" NRAW(" /* MADV_??? */") },
+ { ARG_XLAT_KNOWN(0x6, "MADV_DONTNEED") },
+#else
+ { ARG_XLAT_KNOWN(0x4, "MADV_DONTNEED") },
+ { 6, "0x6" NRAW(" /* MADV_??? */") },
+#endif
+ { 5, "0x5" NRAW(" /* MADV_??? */") },
+ { 7, "0x7" NRAW(" /* MADV_??? */") },
+ { ARG_XLAT_KNOWN(0x8, "MADV_FREE") },
+ { ARG_XLAT_KNOWN(0x9, "MADV_REMOVE") },
+ { ARG_XLAT_KNOWN(0xa, "MADV_DONTFORK") },
+ { ARG_XLAT_KNOWN(0xb, "MADV_DOFORK") },
+#ifdef __hppa__
+ { 12, "0xc" NRAW(" /* new/generic MADV_MERGEABLE */") },
+ { 13, "0xd" NRAW(" /* new/generic MADV_UNMERGEABLE */") },
+ { 14, "0xe" NRAW(" /* new/generic MADV_HUGEPAGE */") },
+ { 15, "0xf" NRAW(" /* new/generic MADV_NOHUGEPAGE */") },
+ { 16, "0x10" NRAW(" /* new/generic MADV_DONTDUMP */") },
+ { 17, "0x11" NRAW(" /* new/generic MADV_DODUMP */") },
+ { 18, "0x12" NRAW(" /* new/generic MADV_WIPEONFORK */") },
+ { 19, "0x13" NRAW(" /* new/generic MADV_KEEPONFORK */") },
+#else
+ { ARG_XLAT_KNOWN(0xc, "MADV_MERGEABLE") },
+ { ARG_XLAT_KNOWN(0xd, "MADV_UNMERGEABLE") },
+ { ARG_XLAT_KNOWN(0xe, "MADV_HUGEPAGE") },
+ { ARG_XLAT_KNOWN(0xf, "MADV_NOHUGEPAGE") },
+ { ARG_XLAT_KNOWN(0x10, "MADV_DONTDUMP") },
+ { ARG_XLAT_KNOWN(0x11, "MADV_DODUMP") },
+ { ARG_XLAT_KNOWN(0x12, "MADV_WIPEONFORK") },
+ { ARG_XLAT_KNOWN(0x13, "MADV_KEEPONFORK") },
+#endif
+ { ARG_XLAT_KNOWN(0x14, "MADV_COLD") },
+ { ARG_XLAT_KNOWN(0x15, "MADV_PAGEOUT") },
+ { ARG_XLAT_KNOWN(0x16, "MADV_POPULATE_READ") },
+ { ARG_XLAT_KNOWN(0x17, "MADV_POPULATE_WRITE") },
+ { ARG_XLAT_KNOWN(0x18, "MADV_DONTNEED_LOCKED") },
+#ifdef __hppa__
+ { 25, "0x19" NRAW(" /* new/generic MADV_COLLAPSE */") },
+#else
+ { ARG_XLAT_KNOWN(0x19, "MADV_COLLAPSE") },
+#endif
+ { ARG_XLAT_UNKNOWN(0x1a, "MADV_???") },
+
+ { ARG_XLAT_UNKNOWN(0x40, "MADV_???") },
+#ifdef __hppa__
+ { 65, "0x41" NRAW(" /* old MADV_MERGEABLE */") },
+ { 66, "0x42" NRAW(" /* old MADV_UNMERGEABLE */") },
+ { 67, "0x43" NRAW(" /* old MADV_HUGEPAGE */") },
+ { 68, "0x44" NRAW(" /* old MADV_NOHUGEPAGE */") },
+ { 69, "0x45" NRAW(" /* old MADV_DONTDUMP */") },
+ { 70, "0x46" NRAW(" /* old MADV_DODUMP */") },
+ { 71, "0x47" NRAW(" /* old MADV_WIPEONFORK */") },
+ { 72, "0x48" NRAW(" /* old MADV_KEEPONFORK */") },
+ { 73, "0x49" NRAW(" /* old MADV_COLLAPSE */") },
+#else
+ { ARG_XLAT_UNKNOWN(0x41, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x42, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x43, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x44, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x45, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x46, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x47, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x48, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x49, "MADV_???") },
+#endif
+ { ARG_XLAT_UNKNOWN(0x4a, "MADV_???") },
+
+ { ARG_XLAT_UNKNOWN(0x63, "MADV_???") },
+ { ARG_XLAT_KNOWN(0x64, "MADV_HWPOISON") },
+ { ARG_XLAT_KNOWN(0x65, "MADV_SOFT_OFFLINE") },
+ { ARG_XLAT_UNKNOWN(0x66, "MADV_???") },
+
+ { ARG_XLAT_UNKNOWN(0x80, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x81, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x100, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x101, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x1000, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0x1001, "MADV_???") },
+ { ARG_XLAT_UNKNOWN(0xbadc0ded, "MADV_???") },
+ };
+
+ for (unsigned int i = 0; i < ARRAY_SIZE(advices); i++) {
+ rc = madvise(NULL, length, advices[i].val);
+ printf("madvise(NULL, %lu, %s) = %s\n",
+ length, advices[i].str, sprintrc(rc));
}
puts("+++ exited with 0 +++");