feat: owloysius - dynamic init function invocator
[lunaix-os.git] / lunaix-os / hal / term / console.c
1 #include <lunaix/device.h>
2 #include <lunaix/owloysius.h>
3 #include <lunaix/spike.h>
4 #include <lunaix/kcmd.h>
5 #include <lunaix/fs.h>
6 #include <lunaix/syslog.h>
7
8 #include <hal/term.h>
9
10 LOG_MODULE("console")
11
12 static void 
13 setup_default_tty()  
14 {
15     char* console_dev;
16     if(!kcmd_get_option("console", &console_dev)) {
17         FATAL("I am expecting a console!");
18         // should not reach
19     }
20
21     struct v_dnode* dn;
22     int err;
23
24     if ((err = vfs_walk(NULL, console_dev, &dn, NULL, 0))) {
25         FATAL("unable to set console: %s, err=%d", console_dev, err);
26         // should not reach
27     }
28
29     struct device* dev = resolve_device(dn->inode->data);
30     if (!dev) {
31         FATAL("not a device: %s", console_dev);
32         // should not reach
33     }
34
35     assert(device_addalias(NULL, dev_meta(dev), "tty"));
36     
37     // TODO implement capability list
38     // for now, we just assume the parameter always pointed to valid device
39     sysconsole = dev;
40 }
41 lunaix_initfn(setup_default_tty, call_on_boot);