Xyris  0.5
Arguments.hpp
Go to the documentation of this file.
1 /**
2  * @file Arguments.hpp
3  * @author Keeton Feavel ([email protected])
4  * @brief Kernel command argument parsing
5  * @version 0.1
6  * @date 2021-08-10
7  *
8  * @copyright Copyright the Xyris Contributors (c) 2021
9  *
10  */
11 #pragma once
12 #include <Library/LinkedList.hpp>
13 
14 #define MAX_ARGUMENT_LEN 32
15 #define KERNEL_PARAM(name, arg, callback) \
16  [[gnu::section(".arguments")]] struct Boot::argument __##name##_arg = \
17  { arg, callback }
18 
19 namespace Boot {
20 
21 typedef void (*cmdline_cb_t)(const char* arg);
22 struct argument {
25 };
26 
27 /**
28  * @brief Parse a command line for registered arguments
29  *
30  * @param cmdline Command line string to be parsed
31  */
32 void parseCommandLine(char* cmdline);
33 
34 } // !namespace Boot
35 
36 /* Moved outside of sections.hpp since this is only desired if creating a kernel argument */
37 extern struct Boot::argument _ARGUMENTS_START[0];
38 #define ARGUMENTS_START ((uintptr_t)&_ARGUMENTS_START)
39 extern struct Boot::argument _ARGUMENTS_END[0];
40 #define ARGUMENTS_END ((uintptr_t)&_ARGUMENTS_END)
Boot::argument
Definition: Arguments.hpp:22
_ARGUMENTS_START
struct Boot::argument _ARGUMENTS_START[0]
MAX_ARGUMENT_LEN
#define MAX_ARGUMENT_LEN
Definition: Arguments.hpp:14
Boot::cmdline_cb_t
void(* cmdline_cb_t)(const char *arg)
Definition: Arguments.hpp:21
_ARGUMENTS_END
struct Boot::argument _ARGUMENTS_END[0]
Boot::argument::arg
char arg[MAX_ARGUMENT_LEN]
Definition: Arguments.hpp:23
LinkedList.hpp
Standard linked list library.
Boot::argument::callback
cmdline_cb_t callback
Definition: Arguments.hpp:24
Boot
Definition: Arguments.cpp:15
Boot::parseCommandLine
void parseCommandLine(char *cmdline)
Parse a command line for registered arguments.
Definition: Arguments.cpp:17