[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