Command line usage and setup
Sometime it is useful to be able to have some arguments passed at runtime to the kernel, in order to configure it dynamically. For this, STOS have a basic commandline support. In this part we will see how to pass arguments to a module.
In order to have access to command line arguments for a module, you need to
register the argument inside your module definition. All we need to use is the
module_param
macro, and add a dependancy to M_COMMANDLINE
.
#include <kernel/klog.h>
#include <kernel/module.h>
#include <kernel/stos.h>
static char *option;
static void __init_once init(void)
{
if (option) {
klog("my argument is %s\n", option);
} else {
klog("I had no argument passed to me\n");
}
}
MODINFO {
module_name("some-module"),
module_init_once(init),
module_deps(M_COMMANDLINE)
};
module_param(option_name, &option);
After that, we need to pass :
some-module.option_name=option_value
to the kernel commandline. For the moment, we just need to edit the
commandline
file in the build directory to add an option.
In order to have more information about the commandline support of stos, you can see the implementation of it inside kernel/modules/commandline
. There is also a talk done by Paul Hervot about it