[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] vterm: Deadlock verhindern



! vterm: Sobald der Service registriert ist, sollte er auch benutzbar
  sein. Wenn waehrend einem init_service_get() init unterbrochen wird
  und ein open auf ein vterm-Terminal machen soll, entsteht sonst ein
  Deadlock.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/vterm/vterm.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/modules/vterm/vterm.c b/src/modules/vterm/vterm.c
index d0afc99..0ff461f 100644
--- a/src/modules/vterm/vterm.c
+++ b/src/modules/vterm/vterm.c
@@ -54,6 +54,10 @@ int main(int argc, char* argv[])
     // Schnittstelle fuer die anderen Prozesse einrichten
     init_lostio_interface();
 
+    // Virtuelle Terminal initialisieren
+    init_output();
+    init_vterminals(10);
+
     // Service registrieren
     //
     // HACK: Wenn wir uns fast gleichzeitig bei init und servmgr anmelden,
@@ -61,7 +65,6 @@ int main(int argc, char* argv[])
     // vterm:/vterm8/out zu oeffnen und init will "service_register" auf stdout
     // schreiben, das beim servmgr liegt). Also warten wir, bis init fertig
     // ist.
-    p();
     init_service_register("vterm");
     while(!init_service_get("vterm")) {
         yield();
@@ -73,11 +76,6 @@ int main(int argc, char* argv[])
         rpc_get_dword(servmgr_pid, "VTERM   ", 0, NULL);
     }
 
-    // Virtuelle Terminal initialisieren
-    init_output();
-    init_vterminals(10);
-    v();
-
     // Eingabe initialisieren
     // Dies registriert einen RPC-Callbackhandler bei kbc. Der Aufruf
     // von init_input() darf daher erst geschehen, wenn auch das Registrieren
-- 
1.6.0.2