diff options
Diffstat (limited to 'tests-m32/reboot.c')
-rw-r--r-- | tests-m32/reboot.c | 72 |
1 files changed, 67 insertions, 5 deletions
diff --git a/tests-m32/reboot.c b/tests-m32/reboot.c index ce651dc7..3f819ce8 100644 --- a/tests-m32/reboot.c +++ b/tests-m32/reboot.c @@ -10,21 +10,83 @@ # define INVALID_MAGIC 319887762 # define INVALID_CMD 0x01234568 +# define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345" +# define STR128 STR32 STR32 STR32 STR32 + int main(void) { + static const kernel_ulong_t bogus_magic1 = + (kernel_ulong_t) 0xFFFFFFFFFFFFFFFFULL; + static const kernel_ulong_t bogus_magic2 = + (kernel_ulong_t) 0xdeadfacefa57beefULL; + static const kernel_ulong_t bogus_cmd = + (kernel_ulong_t) 0xbadda7a09caffee1ULL; static const char buf[] = "reboot"; - long rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, + static const char str256_buf[] = STR128 STR128; + + long rc; + char *str256 = tail_memdup(str256_buf, sizeof(str256_buf) - 1); + + rc = syscall(__NR_reboot, 0, 0, 0, 0); + printf("reboot(0 /* LINUX_REBOOT_MAGIC_??? */, " + "0 /* LINUX_REBOOT_MAGIC_??? */, " + "LINUX_REBOOT_CMD_CAD_OFF) = %s\n", + sprintrc(rc)); + + rc = syscall(__NR_reboot, bogus_magic1, bogus_magic2, bogus_cmd, -1); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, " + "%#x /* LINUX_REBOOT_MAGIC_??? */, " + "%#x /* LINUX_REBOOT_CMD_??? */) = %s\n", + (unsigned int) bogus_magic1, (unsigned int) bogus_magic2, + (unsigned int) bogus_cmd, sprintrc(rc)); + + rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, INVALID_MAGIC, LINUX_REBOOT_CMD_RESTART2, buf); printf("reboot(LINUX_REBOOT_MAGIC1, %#x /* LINUX_REBOOT_MAGIC_??? */," - " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %ld %s (%m)\n", - INVALID_MAGIC, buf, rc, errno2name()); + " LINUX_REBOOT_CMD_RESTART2, \"%s\") = %s\n", + INVALID_MAGIC, buf, sprintrc(rc)); rc = syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, INVALID_CMD); printf("reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2," - " %#x /* LINUX_REBOOT_CMD_??? */) = %ld %s (%m)\n", - INVALID_CMD, rc, errno2name()); + " %#x /* LINUX_REBOOT_CMD_??? */) = %s\n", + INVALID_CMD, sprintrc(rc)); + + rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2A, + LINUX_REBOOT_CMD_RESTART2, str256); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2A, " + "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n", + INVALID_MAGIC, str256, sprintrc(rc)); + + rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2B, + LINUX_REBOOT_CMD_RESTART2, str256 + 1); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2B, " + "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n", + INVALID_MAGIC, str256 + 1, sprintrc(rc)); + + rc = syscall(__NR_reboot, INVALID_MAGIC, LINUX_REBOOT_MAGIC2C, + LINUX_REBOOT_CMD_RESTART2, str256 + 2); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, LINUX_REBOOT_MAGIC2C, " + "LINUX_REBOOT_CMD_RESTART2, %p) = %s\n", + INVALID_MAGIC, str256 + 2, sprintrc(rc)); + + str256[255] = '\0'; + rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1, + LINUX_REBOOT_CMD_RESTART2, str256); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, " + "%#x /* LINUX_REBOOT_MAGIC_??? */, " + "LINUX_REBOOT_CMD_RESTART2, \"%.255s\"...) = %s\n", + INVALID_MAGIC, (unsigned int) bogus_magic1, str256, + sprintrc(rc)); + + rc = syscall(__NR_reboot, INVALID_MAGIC, bogus_magic1, + LINUX_REBOOT_CMD_RESTART2, str256 + 1); + printf("reboot(%#x /* LINUX_REBOOT_MAGIC_??? */, " + "%#x /* LINUX_REBOOT_MAGIC_??? */, " + "LINUX_REBOOT_CMD_RESTART2, \"%.254s\") = %s\n", + INVALID_MAGIC, (unsigned int) bogus_magic1, str256 + 1, + sprintrc(rc)); puts("+++ exited with 0 +++"); return 0; |