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
{
23
char
arg
[
MAX_ARGUMENT_LEN
];
24
cmdline_cb_t
callback
;
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
Kernel
Bootloader
Arguments.hpp
Generated by
1.8.17