mirror of https://github.com/tailix/mrubyvisor.git
Ruby modules actually do something
This commit is contained in:
parent
a6b1853851
commit
3345488f47
|
@ -2,4 +2,5 @@ set timeout=0
|
||||||
|
|
||||||
menuentry "mrubyvisor" {
|
menuentry "mrubyvisor" {
|
||||||
multiboot2 /boot/mrubyvisor.multiboot2
|
multiboot2 /boot/mrubyvisor.multiboot2
|
||||||
|
module2 /boot/hello.rb
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
console_puts 'Hello, World! Ruby modules work!'
|
21
src/main.c
21
src/main.c
|
@ -34,6 +34,8 @@ static void *my_realloc(void *ptr, size_t size);
|
||||||
|
|
||||||
static bool load_module(const char *source, size_t size, const char *cmdline);
|
static bool load_module(const char *source, size_t size, const char *cmdline);
|
||||||
|
|
||||||
|
static mrb_value ruby_console_puts(mrb_state *mrb, mrb_value self);
|
||||||
|
|
||||||
void main(
|
void main(
|
||||||
const uint32_t multiboot2_info_magic,
|
const uint32_t multiboot2_info_magic,
|
||||||
const struct KernAux_Multiboot2_Info *const multiboot2_info
|
const struct KernAux_Multiboot2_Info *const multiboot2_info
|
||||||
|
@ -53,6 +55,15 @@ void main(
|
||||||
ASSERT(mrb = mrb_open());
|
ASSERT(mrb = mrb_open());
|
||||||
ASSERT(context = mrbc_context_new(mrb));
|
ASSERT(context = mrbc_context_new(mrb));
|
||||||
|
|
||||||
|
// Define method Kernel#console_puts
|
||||||
|
mrb_define_method(
|
||||||
|
mrb,
|
||||||
|
mrb->kernel_module,
|
||||||
|
"console_puts",
|
||||||
|
ruby_console_puts,
|
||||||
|
MRB_ARGS_REQ(1)
|
||||||
|
);
|
||||||
|
|
||||||
for (
|
for (
|
||||||
const struct KernAux_Multiboot2_ITag_Module *module_tag =
|
const struct KernAux_Multiboot2_ITag_Module *module_tag =
|
||||||
(const struct KernAux_Multiboot2_ITag_Module*)
|
(const struct KernAux_Multiboot2_ITag_Module*)
|
||||||
|
@ -125,3 +136,13 @@ bool load_module(
|
||||||
mrb_gc_arena_restore(mrb, arena);
|
mrb_gc_arena_restore(mrb, arena);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mrb_value ruby_console_puts(
|
||||||
|
mrb_state *const mrb,
|
||||||
|
mrb_value self __attribute__((unused))
|
||||||
|
) {
|
||||||
|
const char *str = NULL;
|
||||||
|
mrb_get_args(mrb, "z", &str);
|
||||||
|
kernaux_drivers_console_puts(str);
|
||||||
|
return mrb_nil_value();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue