1. 28 Jan, 2020 4 commits
    • Max Reitz's avatar
      servmgr: Workaround für zyklische Abhängigkeiten · c8a7bd7e
      Max Reitz authored
      ! 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
    • Kevin Wolf's avatar
      libc: Nach fseek() io_res->os_eof zurücksetzen · a623f4f7
      Kevin Wolf authored
      ! libc: Wenn wir bis ans Ende der Datei gelesen haben und os_eof
        deswegen gesetzt wurde, muss das Flag nach einem fseek() wieder
        gelöscht werden, weil wir jetzt möglicherweise nicht mehr am Ende der
        Datei sind und feof() 0 zurückgeben soll. Wenn wir es doch sind, wird
        das nächste fread() das Flag wieder setzen.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      a623f4f7
    • Kevin Wolf's avatar
      libc: fopen()-Modus korrekter parsen · 49d5afac
      Kevin Wolf authored
      ! libc: Bisher musste im fopen()-Modus das "+" direkt nach "r"/"w"/"a"
        kommen, damit es eine Wirkung hatte. Das ist falsch, denn dazwischen
        darf auch noch ein "b" kommen.
      
        Dieser Patch fixt den Parser, so dass er alle vorgesehenen Varianten
        akzeptiert, und die meisten nicht vorgesehenen mit EINVAL ablehnt.
        ("rb+b" usw. ist noch möglich, aber das sollte harmlos sein.)
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      49d5afac
    • Kevin Wolf's avatar
      libc: stdio_init(): fopen-Modus 's' gibt es nicht · ed0d89a5
      Kevin Wolf authored
      !  libc: Vor langer Zeit wurde einmal versehentlich in Commit f64c1b3c
         ein fopen-Modus 's' committet, der IO_OPEN_MODE_SYNC gesetzt hat (das
         aber wiederum ignoriert wird), am Tag danach aber in Commit 95134b9a
         wieder revertet. Davor und danach war es immer ein ungültiger Modus.
      
         Bevor fopen() jetzt anfangen kann, zu prüfen, ob es den übergebenen
         Modus überhaupt komplett versteht, muss zuerst das ungültige 's' in
         stdio_init() weg.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      ed0d89a5
  2. 26 Jan, 2020 4 commits
  3. 25 Jan, 2020 8 commits
  4. 22 Oct, 2018 2 commits
    • Kevin Wolf's avatar
      image_hd_grub2: minicmd nicht in core.img einbauen · 4549664d
      Kevin Wolf authored
      ! image_hd_grub2: Auf meinen Fedora-29-Host wird die core.img zu groß,
        dass sie nicht mehr in die ersten 63 Sektoren passt, und dann weigert
        sich GRUB, das zu installieren. Wenn man minicmd weglässt, passt es
        wieder.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      4549664d
    • Kevin Wolf's avatar
      shell: Buildfix · 2af92ef4
      Kevin Wolf authored
      ! shell: Neuen Compiler zufriedenstellen:
      
          commands.c: In Funktion »shell_start_path_app«:
          commands.c:82:43: Fehler: Doppelter Deklarationsspezifizierer »const« [-Werror=duplicate-decl-specifier]
               pid = init_execv(argv[0], (const char const**) argv);
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      2af92ef4
  5. 06 Jan, 2018 2 commits
    • Kevin Wolf's avatar
      vterm: Cursor beim Scrollen aktualisieren · ef201067
      Kevin Wolf authored
      ! vterm: Wenn man scrollt, dann soll der Cursor nicht physisch an
        derselben Stelle bleiben, sondern nur logisch, d.h. er wandert mit.
        Wenn man so weit scrollt, dass der Cursor nicht mehr auf dem
        Bildschirm ist, muss der Textmodus-Cursor komplett deaktiviert werden.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      ef201067
    • Kevin Wolf's avatar
      vterm: Ein echtes Ende für den Terminal-Ringpuffer · a78a5518
      Kevin Wolf authored
      ! vterm: vterm_output_t.buffer_last_line eingeführt, was die logisch letzte
        Zeile im Ringpuffer angibt. Bisher wurde stattdessen die aktuelle
        Cursorposition hergenommen, was aber keinen Sinn ergibt, wenn der
        Cursor auch mal aus der letzten Zeile zurückbewegt wird, wie das jedes
        TUI-Programm macht.
      
        Damit wird einerseits verhindert, dass man beim Hochscrollen im Editor
        ganz oben wieder den unteren Teil des Editors sieht, und andererseits
        weiß jetzt auch output_insert_lines(), wo es wirklich aufhören muss,
        Zeilen zu verschieben. Und als drittes wird nach einem Zeilenumbruch
        nicht grundsätzlich die Zeile gelöscht (das ist nämlich falsch, wenn
        man in eine Zeile logisch weiter unten zurückkehrt), sondern nur, wenn
        eine neue Zeile angehängt wird, also die logisch oberste Zeile aus dem
        Ringpuffer die neue logisch unterste wird.
      
        Mit diesen Fixes scheint jetzt auch less glücklich genug mit dem
        tyndur-Terminal zu sein.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      a78a5518
  6. 31 Dec, 2017 1 commit
  7. 30 Dec, 2017 1 commit
    • Kevin Wolf's avatar
      kernel2: Zusammengesetzte Streams gefixt · b854d122
      Kevin Wolf authored
      ! kernel2: Beim Aufräumen von Ressourcen muss man aufpassen, dass man
        nicht Ressourcen wegräumt, die noch von einem zusammengesetzten Stream
        benutzt werden.
      
        Um das zu fixen, gestaltet dieser Commit die Funktionsweise von Pipes
        grundsätzlich um: Statt in einem Stream für Lesen und Schreiben auf
        zwei verschiedene Ressourcen zu verweisen und zwei Dateizeiger zu
        verwalten, sind das jetzt zwei unabhängige Streams, die mittels
        lio_composite_stream() zusammengesetzt werden.
      
        Gleichzeitig hat ein lio_stream* jetzt entweder s->is_composite und
        verweist auf zwei andere Streams (statt vorher Ressourcen), die jetzt
        auch gerefcountet werden, oder er ist ein normaler Stream und verweist
        auf eine Ressource und hat einen Dateizeiger. Alle Funktionen, die auf
        die Ressource zu einem Stream zugreifen wollen, müssen jetzt für
        zusammengesetzte Streams erst einmal bis zum Wurzelstream durchgehen.
      
        Das fixt Rot beim Schließen der letzten Instanz des zusammengesetzten
        stderr, das getterm produziert.
      
      * kernel2: lio_composite_stream() akzeptiert jetzt auch NULL für die
        beiden Parameter. In diesem Fall fehlt dem Ergebnisstream einfach die
        Les- bzw. Schreibbarkeit.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      b854d122
  8. 14 Jun, 2017 1 commit
  9. 27 May, 2017 1 commit
    • Kevin Wolf's avatar
      user-i386.ld: Platz für die Header reservieren · 2d2442e4
      Kevin Wolf authored
      ! user-i386.ld: ELF schreibt vor, dass wenn es ein PT_PHDR-Segment gibt
        (was bei dynamisch gelinkten Programmen der Fall ist), die Header
        gleichzeitig auch in einem LOAD-Segment sein müssen. Älteren
        binutils-Versionen war das egal, aber ein neuerer ld erweitert einfach
        das LOAD-Segment nach vorne, um Platz für die Header zu schaffen.
      
        Wenn jetzt .text direkt bei 0x40000000 anfängt, dann landen die Header
        also in dem Speicherbereich, der gar nicht mehr dem Userspace gehört,
        und die letzte Pagetable geht kaputt. Um das zu fixen, wird .text
        jetzt genau soweit nach hinten verschoben, dass ab 0x40000000 die
        Header Platz haben.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      2d2442e4
  10. 21 May, 2017 1 commit
    • Kevin Wolf's avatar
      kedit: Überschreib-Modus gefixt · cd3a7f98
      Kevin Wolf authored
      ! kedit: Wenn beim Überschreiben am Zeilenende doch neue Zeichen
        eingefügt werden, dann sollte man erst den Puffer vergrößern und dann
        das Zeichen reinschreiben, andersrum geht schief.
      
      ! kedit: Wenn ein Zeichen noch weiter rechts als am Zeilenende eingefügt
        wird, dann muss davor mit Leerzeichen aufgefüllt werden.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      cd3a7f98
  11. 20 May, 2017 1 commit
  12. 07 May, 2017 1 commit
  13. 18 Apr, 2017 1 commit
  14. 17 Apr, 2017 1 commit
  15. 16 Apr, 2017 1 commit
    • Kevin Wolf's avatar
      shell: Pseudo-Pipes · b6867ca9
      Kevin Wolf authored
      + shell: Der Pipe-Operator funktioniert jetzt so ein bisschen, ist
        allerdings noch keine echte Pipe, sondern führt die Programme
        DOS-mäßig eins nach dem anderen aus anstatt sie parallel auszuführen.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      b6867ca9
  16. 15 Apr, 2017 2 commits
  17. 14 Apr, 2017 4 commits
  18. 23 Jan, 2017 3 commits
  19. 21 Jan, 2017 1 commit