diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2025-07-30 14:32:01 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2025-07-30 14:32:01 -0400 |
commit | b905869a35f062a4e5072f10bec3a2ba3db0e365 (patch) | |
tree | 0666691804878857b4bb07daca8a54f5ddb8ae0b /boot/bootargs.c | |
download | jove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.tar.gz jove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.tar.bz2 jove-kernel-b905869a35f062a4e5072f10bec3a2ba3db0e365.zip |
working userland with some invoke syscalls
Diffstat (limited to 'boot/bootargs.c')
-rw-r--r-- | boot/bootargs.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/boot/bootargs.c b/boot/bootargs.c new file mode 100644 index 0000000..81ba57d --- /dev/null +++ b/boot/bootargs.c @@ -0,0 +1,25 @@ +#include "bootargs.h" +#include "boot.h" +#include "string.h" +#include <stdint.h> +#include "print.h" + +char* +bootargs_getarg(const char *key) +{ + size_t keylen = strlen(key); + char *arg = jove_bootargs; + for(; (uintptr_t)arg < (uintptr_t)jove_bootargs + jove_bootargs_len; arg += strlen(arg) + 1) { + size_t arglen = strlen(arg); + if(arglen < keylen) continue; + + for(size_t i = 0; i < keylen; i++) { + if(arg[i] != key[i]) goto eol; + } + if(arg[keylen] != '=') continue; + return arg + keylen + 1; +eol: + continue; + } + return NULL; +} |