• Max Reitz's avatar
    servmgr: Workaround für zyklische Abhängigkeiten · c8a7bd7e
    Max Reitz authored and Kevin Wolf's avatar Kevin Wolf committed
    
    
    ! Es kann passieren, dass Service A auf B wartet, der auf C wartet. Dann
      melden sich diese beide beim servmgr, der dann für B darauf warten
      soll, dass B gestartet ist, und für A, dass B fertig ist. Da týndur
      leider keine Popupthreads für IPC benutzt, existiert aber nur ein
      wartender Thread. Wenn A später als B angefragt hat, wird also A ewig
      auf B warten, da B nie weiterlaufen kann, auch wenn C fertig ist.
      Ein einfacher Workaround ist es, zu einem Zeitpunkt immer nur einem
      anfragenden Service/Prozess das Privileg zu gestatten, den servmgr
      selbst zu benutzen, um zu warten. Alle anderen bekommen ein EAGAIN,
      wenn der Zielservice noch nicht angemeldet ist, und müssen das Warten
      selber übernehmen (hier als wiederholte Anfragen bei servmgr
      implementiert).
    Signed-off-by: Max Reitz's avatarMax Reitz <max@tyndur.org>
    c8a7bd7e
servmgr.c 2.06 KB