[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Lost] [Patch] [3/4] Service-Manager - Konfiguration
Am Donnerstag, 26. Juni 2008 23.45:29 schrieb Kevin Wolf:
> Am Donnerstag, 26. Juni 2008 22:52:28 schrieb Antoine Kaufmann:
> > Die Konfiguration um den Bootprozess auf servmgr umzustellen
>
> Sieht im großen und ganzen ok aus, aber ich glaube, das meiste davon könnte
> nach root-common.
>
> Außerdem bin ich aus zwei Gründen mit dem mount nicht ganz einverstanden:
> Zum einen gefällt es mir nicht, daß das nur als Abhängigkeit von getterm
> nachgezogen wird, es sollte eher auch in default rein. Zum anderen scheint
> mir nowait nicht das richtige zu sein - servmgr sollte warten, bis mount
> beendet ist.
Ok ich habe jetzt ein waitterminate eingeführt.
Index: trunk/build/root-floppy/config/servmgr/mount/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-floppy/config/servmgr/mount/cmd
@@ -0,0 +1 @@
+/modules/file mount file:/ floppy:/devices/fd0|fat:/
Index: trunk/build/root-floppy/config/servmgr/mount/deps
===================================================================
--- /dev/null
+++ trunk/build/root-floppy/config/servmgr/mount/deps
@@ -0,0 +1 @@
+file
Index: trunk/build/root-hd/config/servmgr/mount/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-hd/config/servmgr/mount/cmd
@@ -0,0 +1 @@
+/modules/file mount file:/ ata:/ata00_p0|next2:/
Index: trunk/build/root-hd/config/servmgr/mount/deps
===================================================================
--- /dev/null
+++ trunk/build/root-hd/config/servmgr/mount/deps
@@ -0,0 +1 @@
+file
Index: trunk/build/root-common/config/servmgr/cmos/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/cmos/cmd
@@ -0,0 +1 @@
+/modules/cmos
Index: trunk/build/root-common/config/servmgr/console/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/console/cmd
@@ -0,0 +1 @@
+/modules/console vterm:/vterm0/out vterm:/vterm0/in
Index: trunk/build/root-common/config/servmgr/console/deps
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/console/deps
@@ -0,0 +1 @@
+vterm
Index: trunk/build/root-common/config/servmgr/default/deps
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/default/deps
@@ -0,0 +1,3 @@
+getterm1
+rtl8139
+mount
Index: trunk/build/root-common/config/servmgr/file/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/file/cmd
@@ -0,0 +1 @@
+/modules/file
Index: trunk/build/root-common/config/servmgr/getterm1/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/getterm1/cmd
@@ -0,0 +1 @@
+/apps/getterm vterm:/vterm0/in vterm:/vterm0/out vterm:/vterm0/out /apps/sh
Index: trunk/build/root-common/config/servmgr/getterm1/conf
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/getterm1/conf
@@ -0,0 +1 @@
+nowait
Index: trunk/build/root-common/config/servmgr/getterm1/deps
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/getterm1/deps
@@ -0,0 +1,4 @@
+console
+cmos
+mount
+
Index: trunk/build/root-common/config/servmgr/getterm1/workdir
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/getterm1/workdir
@@ -0,0 +1 @@
+file:/
Index: trunk/build/root-common/config/servmgr/kbc/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/kbc/cmd
@@ -0,0 +1 @@
+/modules/kbc
Index: trunk/build/root-common/config/servmgr/mount/conf
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/mount/conf
@@ -0,0 +1 @@
+waitterminate
Index: trunk/build/root-common/config/servmgr/pci/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/pci/cmd
@@ -0,0 +1 @@
+/modules/pci
Index: trunk/build/root-common/config/servmgr/rtl8139/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/rtl8139/cmd
@@ -0,0 +1 @@
+/modules/rtl8139
Index: trunk/build/root-common/config/servmgr/rtl8139/deps
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/rtl8139/deps
@@ -0,0 +1,2 @@
+pci
+tcpip
Index: trunk/build/root-common/config/servmgr/tcpip/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/tcpip/cmd
@@ -0,0 +1 @@
+/modules/tcpip
Index: trunk/build/root-common/config/servmgr/vterm/cmd
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/vterm/cmd
@@ -0,0 +1 @@
+/modules/vterm
Index: trunk/build/root-common/config/servmgr/vterm/deps
===================================================================
--- /dev/null
+++ trunk/build/root-common/config/servmgr/vterm/deps
@@ -0,0 +1 @@
+kbc
Index: trunk/src/modules/servmgr/config.c
===================================================================
--- trunk.orig/src/modules/servmgr/config.c
+++ trunk/src/modules/servmgr/config.c
@@ -126,7 +126,7 @@ static void config_parse_conf(const char
FILE* f;
char buffer[33];
- conf_serv->conf.no_wait = FALSE;
+ conf_serv->conf.wait = SERVSTART;
f = fopen(path, "r");
if (!f) {
@@ -136,7 +136,9 @@ static void config_parse_conf(const char
// FIXME: Das koennte man noch etwas eleganter loesen ;-)
while (fgets(buffer, sizeof(buffer), f)) {
if (!strcmp(buffer, "nowait")) {
- conf_serv->conf.no_wait = TRUE;
+ conf_serv->conf.wait = NOWAIT;
+ } else if (!strcmp(buffer, "waitterminate")) {
+ conf_serv->conf.wait = TERMINATE;
}
}
}
Index: trunk/src/modules/servmgr/service.c
===================================================================
--- trunk.orig/src/modules/servmgr/service.c
+++ trunk/src/modules/servmgr/service.c
@@ -37,6 +37,7 @@
#include <syscall.h>
#include <init.h>
#include <collections.h>
+#include <sys/wait.h>
#include "servmgr.h"
@@ -119,11 +120,15 @@ bool service_start(const char* name)
}
if (conf_serv->start_cmd) {
- init_execute(conf_serv->start_cmd);
- if (!conf_serv->conf.no_wait && !service_wait(name, 10000)) {
+ pid_t pid = init_execute(conf_serv->start_cmd);
+ if ((conf_serv->conf.wait == SERVSTART) && !service_wait(name, 10000)) {
printf("servmgr: Timeout beim Warten auf den Service %s\n", name);
return FALSE;
+ } else if (conf_serv->conf.wait == TERMINATE) {
+ int status;
+ waitpid(pid, &status, 0);
}
}
+
return TRUE;
}
Index: trunk/src/modules/servmgr/servmgr.h
===================================================================
--- trunk.orig/src/modules/servmgr/servmgr.h
+++ trunk/src/modules/servmgr/servmgr.h
@@ -45,7 +45,11 @@ struct config_service {
list_t* deps;
struct {
- bool no_wait;
+ enum {
+ SERVSTART,
+ TERMINATE,
+ NOWAIT
+ } wait;
} conf;
};