summaryrefslogtreecommitdiffstats
path: root/boot/bootargs.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2025-07-30 14:32:01 -0400
committerJon Santmyer <jon@jonsantmyer.com>2025-07-30 14:32:01 -0400
commitb905869a35f062a4e5072f10bec3a2ba3db0e365 (patch)
tree0666691804878857b4bb07daca8a54f5ddb8ae0b /boot/bootargs.c
downloadjove-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.c25
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;
+}