command help was optimized for all possible screen resolutions; command fdisk support...
[ZeXOS.git] / kernel / core / init.c
blob30717a85de4fbd83fa419008f848d2e8ae7c8f7e
1 /*
2 * ZeX/OS
3 * Copyright (C) 2007 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
4 * Copyright (C) 2008 Tomas 'ZeXx86' Jedrzejek (zexx86@gmail.com)
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include <system.h>
21 #include <string.h>
22 #include <arch/io.h>
23 #include <config.h>
24 #include <env.h>
25 #include <dev.h>
26 #include <vfs.h>
27 #include <user.h>
28 #include <tty.h>
29 #include <proc.h>
30 #include <partition.h>
31 #include <net/if.h>
32 #include <net/socket.h>
33 #include <net/packet.h>
34 #include <module.h>
35 #include <commands.h>
36 #include <console.h>
37 #include <paging.h>
38 #include <smp.h>
39 #include <build.h>
40 #include <fs.h>
41 #include <fd.h>
44 /* Command structure */
45 typedef unsigned int (init_handler_t) ();
47 void osinfo ()
49 settextcolor (14, 0);
50 kprintf ("ZeX/OS");
51 settextcolor (7, 0);
52 kprintf (" v" ZEXOS_MAJOR "." ZEXOS_MINOR "." ZEXOS_REVISION " " ZEXOS_DATE " " ZEXOS_ARCH " " ZEXOS_COMPILER "\n");
55 void oscmd (char *cmdline)
57 kernel_attr = 0;
59 char cmd[80];
61 int x = 0, y, l;
63 l = strlen (cmdline);
65 while (x < l) {
66 if (cmdline[x] == ' ') {
67 x ++;
69 if (!cstrcmp ("live", cmdline+x))
70 kernel_attr |= KERNEL_LIVE;
71 if (!cstrcmp ("noata", cmdline+x))
72 kernel_attr |= KERNEL_NOATA;
73 if (!cstrcmp ("18hz", cmdline+x))
74 kernel_attr |= KERNEL_18HZ;
75 if (!cstrcmp ("noeth", cmdline+x))
76 kernel_attr |= KERNEL_NOETH;
77 if (!cstrcmp ("novesa", cmdline+x))
78 kernel_attr |= KERNEL_NOVESA;
81 x ++;
85 unsigned int checkinfo (char *msg, int ret)
87 if (msg == NULL)
88 return 2;
90 settextcolor (14, 0);
91 kprintf (" * ");
92 settextcolor (7, 0);
93 kprintf (msg);
94 settextcolor (1, 0);
95 kprintf ("\t\t[ ");
96 settextcolor (14, 0);
98 if (ret) {
99 settextcolor (14, 0);
100 kprintf ("OK");
101 } else {
102 settextcolor (4, 0);
103 kprintf ("Fail");
106 settextcolor (1, 0);
107 kprintf (" ]\n");
109 settextcolor (15, 0);
111 return ret;
114 unsigned int _init (init_handler_t *handler, char *msg)
116 return checkinfo (msg, handler ());
119 extern void calc_freqency ();
120 extern task_t *_curr_task;
121 int init (char *cmdline)
123 debug = 0;
124 _curr_task = 0;
126 _init (&init_arch, NULL);
128 oscmd (cmdline);
130 _init (&init_video, NULL);
132 osinfo ();
134 _init (&init_mm, "Initialize mm");
135 _init (&init_smp, "Initialize SMP");
136 #ifdef ARCH_i386
137 _init (&init_keyboard, "Initialize keyboard");
138 _init (&init_paging, "Initialize paging");
139 #endif
140 _init (&init_env, "Initialize env vars");
141 _init (&init_fd, "Initialize file desc");
142 _init (&init_vfs, "Initialize VFS");
143 _init (&init_fs, "Initialize fs");
144 _init (&init_partition, "Initialize parts");
145 _init (&init_tasks, "Initialize tasks");
146 _init (&init_netif, "Initialize net if");
147 _init (&init_dev, "Initialize devices");
148 _init (&init_socket, "Initialize sockets");
149 _init (&init_packet, "Initialize netcore");
150 _init (&init_proc, "Initialize procs");
151 _init (&init_module, "Loading modules");
152 _init (&init_commands, "Registering cmds");
153 _init (&init_console, "Initialize console");
155 calc_swtimer ();
156 calc_freqency ();
158 _init (&init_tty, NULL);
159 _init (&init_user, NULL);
161 return 1;