2 * Acess2 System Init Task
7 #include <spiderscript.h>
11 #define NULL ((void*)0)
13 #define DEFAULT_TERMINAL "/Devices/VTerm/0"
14 #define DEFAULT_SHELL "/Acess/SBin/login"
15 #define DEFAULT_SCRIPT "/Acess/Conf/BootConf.isc"
17 #define ARRAY_SIZE(x) ((sizeof(x))/(sizeof((x)[0])))
20 tSpiderVariable *Script_System_IO_Open(tSpiderScript *, int, tSpiderVariable *);
23 tSpiderFunction gaScriptNS_IO_Fcns[] = {
24 {"Open", Script_System_IO_Open}
26 tSpiderNamespace gaScriptNS_System[] = {
30 ARRAY_SIZE(gaScriptNS_IO_Fcns), gaScriptNS_IO_Fcns,
35 tSpiderNamespace gaScriptNamespaces[] = {
38 ARRAY_SIZE(gaScriptNS_System), gaScriptNS_System,
44 tSpiderVariant gScriptVariant = {
46 ARRAY_SIZE(gaScriptNamespaces), gaScriptNamespaces
51 * \fn int main(int argc, char *argv[])
54 int main(int argc, char *argv[])
58 char termpath[sizeof(DEFAULT_TERMINAL)] = DEFAULT_TERMINAL;
59 char *child_argv[2] = {DEFAULT_SHELL, 0};
61 // - Parse init script
63 // - Start virtual terminals
64 for( i = 0; i < NUM_TERMS; i++ )
66 tid = clone(CLONE_VM, 0);
69 termpath[sizeof(DEFAULT_TERMINAL)-2] = '0' + i;
71 open(termpath, OPENFLAG_READ); // Stdin
72 open(termpath, OPENFLAG_WRITE); // Stdout
73 open(termpath, OPENFLAG_WRITE); // Stderr
74 execve(DEFAULT_SHELL, child_argv, NULL);
79 // TODO: Implement message watching
86 * \brief Reads and parses the boot configuration script
87 * \param Filename File to parse and execute
89 void ExecuteScript(const char *Filename)
91 tSpiderScript *script;
92 script = SpiderScript_ParseFile(&gScriptVariant, Filename);
93 SpiderScript_ExecuteMethod(script, "");
94 SpiderScript_Free(script);
100 tSpiderVariable *Script_System_IO_Open(tSpiderScript *Script, int NArgs, tSpiderVariable *Args)