* Acess2 System Init Task
*/
#include <acess/sys.h>
+#include <stdlib.h>
+#include <stdio.h>
+//#include <spiderscript.h>
+//#include "common.h"
// === CONSTANTS ===
#define NULL ((void*)0)
#define NUM_TERMS 4
#define DEFAULT_TERMINAL "/Devices/VTerm/0"
#define DEFAULT_SHELL "/Acess/SBin/login"
+#define DEFAULT_SCRIPT "/Acess/Conf/BootConf.isc"
+
+#define ARRAY_SIZE(x) ((sizeof(x))/(sizeof((x)[0])))
+
+// === PROTOTYPES ===
+/*
+tSpiderVariable *Script_System_IO_Open(tSpiderScript *, int, tSpiderVariable *);
+*/
+
+// === GLOBALS ===
+/*
+tSpiderFunction gaScriptNS_IO_Fcns[] = {
+ {"Open", Script_System_IO_Open}
+};
+tSpiderNamespace gaScriptNS_System[] = {
+ {
+ "IO",
+ 0, NULL,
+ ARRAY_SIZE(gaScriptNS_IO_Fcns), gaScriptNS_IO_Fcns,
+ 0, NULL
+ }
+};
+
+tSpiderNamespace gaScriptNamespaces[] = {
+ {
+ "System",
+ ARRAY_SIZE(gaScriptNS_System), gaScriptNS_System,
+ 0, NULL,
+ 0, NULL
+ }
+};
+
+tSpiderVariant gScriptVariant = {
+ "init", 0,
+ ARRAY_SIZE(gaScriptNamespaces), gaScriptNamespaces
+};
+*/
// === CODE ===
/**
int main(int argc, char *argv[])
{
int tid;
- // int i;
- char termpath[sizeof(DEFAULT_TERMINAL)+1] = DEFAULT_TERMINAL;
+ int i;
+ char termpath[sizeof(DEFAULT_TERMINAL)] = DEFAULT_TERMINAL;
+ char *child_argv[2] = {DEFAULT_SHELL, 0};
+
+ // - Parse init script
- //for( i = 0; i < NUM_TERMS; i++ )
- //{
- //termpath[ sizeof(DEFAULT_TERMINAL)-1 ] = '0' + i;
- open(termpath, OPENFLAG_READ); // Stdin
- open(termpath, OPENFLAG_WRITE); // Stdout
- open(termpath, OPENFLAG_WRITE); // Stderr
-
+ // - Start virtual terminals
+ for( i = 0; i < NUM_TERMS; i++ )
+ {
tid = clone(CLONE_VM, 0);
if(tid == 0)
{
- execve(DEFAULT_SHELL, NULL, NULL);
- for(;;) __asm__ __volatile__("hlt");
+ termpath[sizeof(DEFAULT_TERMINAL)-2] = '0' + i;
+
+ open(termpath, OPENFLAG_READ); // Stdin
+ open(termpath, OPENFLAG_WRITE); // Stdout
+ open(termpath, OPENFLAG_WRITE); // Stderr
+ execve(DEFAULT_SHELL, child_argv, NULL);
+ for(;;) sleep();
}
- //}
+ }
+ // TODO: Implement message watching
for(;;) sleep();
return 42;
}
+
+/**
+ * \brief Reads and parses the boot configuration script
+ * \param Filename File to parse and execute
+ */
+void ExecuteScript(const char *Filename)
+{
+ /*
+ tSpiderScript *script;
+ script = SpiderScript_ParseFile(&gScriptVariant, Filename);
+ SpiderScript_ExecuteMethod(script, "");
+ SpiderScript_Free(script);
+ */
+}
+
+/**
+ * \brief Open a file
+ */
+/*
+tSpiderVariable *Script_System_IO_Open(tSpiderScript *Script, int NArgs, tSpiderVariable *Args)
+{
+ return NULL;
+}
+*/