From 42e17f8877cc28e904c7a218e88de3fa2bc44d98 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 14 Aug 2021 11:07:38 +0200 Subject: init: add multipageify(), so i can test virt_iter in an simpler way --- src/init/main.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/init/main.c b/src/init/main.c index 89f964f..00f8f31 100644 --- a/src/init/main.c +++ b/src/init/main.c @@ -1,15 +1,23 @@ #include +#include -#define STR_64 "This string has exactly 64 characters. It'll be repeated a bunch" -#define STR_256 STR_64 STR_64 STR_64 STR_64 -#define STR_1K STR_256 STR_256 STR_256 STR_256 -#define STR_4K STR_1K STR_1K STR_1K STR_1K -#define STR_LNG "start " STR_4K STR_4K " finished! " +// takes a cstring and copies it right before a page boundary +const char *multipageify(const char *str) { + static char buf[0x2000] __attribute__((section("text"))); + + char *out = ((uintptr_t)buf & ~0xFFF) + 0xFFF; + char *cur = out; + do { + *cur++ = *str; + } while (*str++ != '\0'); + return out; +} int main() { - // try to print a string which is longer than a page - _syscall_debuglog(STR_LNG, - sizeof(STR_LNG) - 1); + // try to print a string crossing page boundaries + _syscall_debuglog( + multipageify("I cross pages. "), + sizeof("I cross pages. ") - 1); _syscall_exit("bye from init! ", sizeof("bye from init! ") - 1); -- cgit v1.2.3