1. 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
  2. 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
  3. 31 Dec, 2017 1 commit
  4. 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
  5. 14 Jun, 2017 1 commit
  6. 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
  7. 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
  8. 20 May, 2017 1 commit
  9. 07 May, 2017 1 commit
  10. 18 Apr, 2017 1 commit
  11. 17 Apr, 2017 1 commit
  12. 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
  13. 15 Apr, 2017 2 commits
  14. 14 Apr, 2017 4 commits
  15. 23 Jan, 2017 3 commits
  16. 21 Jan, 2017 6 commits
    • Kevin Wolf's avatar
      kernel2: lio_seek()-Restriktionen für Pipes lockern · 57f91328
      Kevin Wolf authored
      * kernel2: lio_seek() geht jetzt eingeschränkt auch für Pipes, es
        betrifft dann immer die Position im Lesestream. Erlaubt ist es, die
        aktuelle Position zu ermitteln und (relativ) vorwärts zu springen.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      57f91328
    • Kevin Wolf's avatar
      kernel2: LIO-Server-Operation pipe · a35acbe8
      Kevin Wolf authored
      + kernel2: Passende Kernelimplementierung für die .pipe-Operation, die
        im Userspace schon implementiert ist: Für eine als Pipe markierte
        erstellt der Kernel beim Öffnen eine Pipe und gibt das eine Ende an
        den .pipe-Callback des Service.
      
        Das ist nicht das Interface, das wir am Ende haben wollen, aber es ist
        vervollständigt, was schon da ist, und erstmal das zu mergen und dann
        davon ausgehend weiterzubasteln macht das Rebasen des alten
        LIOv2-Codes auf master einfacher.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      a35acbe8
    • Kevin Wolf's avatar
      shell: 'pipe' gefixt · fb197022
      Kevin Wolf authored
      ! shell: Seit fread() ordentlich blockiert wie es normalerweise sollte,
        funktioniert 'pipe' leider nicht mehr. Damit es weiterhin tut, muss
        man es auf passende LIO-Funktionen umbauen. Und irgendwann wäre auch
        mal was select()-artiges toll...
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      fb197022
    • Kevin Wolf's avatar
      libc: lio_compat_read_nonblock() · 551b7d1a
      Kevin Wolf authored
      + libc: Eine neue Read-Funktion, die nicht blockiert, und sowohl mit
        LIOv1- als auch LIOv2-Dateien tut.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      551b7d1a
    • Kevin Wolf's avatar
      libc: Fehlerbehandlung in fread() gefixt · f5b3518c
      Kevin Wolf authored
      ! libc: Wenn man Fehler als -errno zurückgibt, ist es nicht so clever,
        den Rückgabewert direkt in einen size_t zu speichern und dann nur auf
        ret < bytes zu testen.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      f5b3518c
    • Kevin Wolf's avatar
      vesa: Speicherleck gefixt · f5bac9ff
      Kevin Wolf authored
      ! vesa: vesamodeinfo kann auch auf dem Stack alloziert werden, dann
        sparen wir uns nicht nur das malloc(), sondern leaken das Ding auch
        nicht mehr.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      f5bac9ff
  17. 07 Jan, 2017 1 commit
    • Kevin Wolf's avatar
      image_hd_syslinux: Abhängigkeiten der Module mitkopieren · d2e29cc5
      Kevin Wolf authored
      ! image_hd_syslinux: Nach dem Vorbild des großen GRUB 2 hat sich
        syslinux entschieden, jetzt auch mal Modulabhängigkeiten zu haben, so
        dass einfach das kopieren, was man haben möchte, je nach Version nicht
        mehr unbedingt ausreicht.
      
        Also müssen wir jetzt auch hier die Module anschauen und rausfinden,
        welche Abhängigkeiten mitkopiert werden müssen.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      d2e29cc5
  18. 05 Jan, 2017 1 commit
  19. 04 Jan, 2017 9 commits
    • Kevin Wolf's avatar
      build/config: Größeres Festplattenimage · 130cc2af
      Kevin Wolf authored
      * build/config: Je mehr lbuilds dazukommen, um so öfter reichen die
        64 MB, die das Festplattenimage bisher hat, nicht mehr aus. Dieser
        Commit erhöht die Größe auf 256 MB, in der Hoffnung, dass das
        zumindest für eine Weile wieder ausreichend ist.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      130cc2af
    • Kevin Wolf's avatar
      libc: Vollständige libc.so bauen · fc61ff20
      Kevin Wolf authored
      * libc: Anstatt wie bisher zwei separate Bibliotheken src/lib/library.a
        und src/modules/lib/library.a zu bauen, wird die Bibliothek aus
        src/lib/ jetzt nicht mehr direkt gegen Programme gelinkt, sondern in
        die library.{a,so} integriert. Damit ist libc.so vollständig genug,
        dass auch lbuilds dagegen linken können.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      fc61ff20
    • Kevin Wolf's avatar
      libc: setjmp/longjmp in die libc aufnehmen · 1e93fb81
      Kevin Wolf authored
      ! libc: Anscheinend haben wir setjmp.o nie wirklich ins .a-Archiv
        aufgenommen. Vielleicht sollte man das mal tun.
      
      * libc: Und wenn wir schon dabei sind, sollten wir für die (in Assembler
        implementieren) Funktionen auch noch den Symboltyp auf Funktion setzen
        und eine Größe angeben, sonst mag ld nicht dynamisch dagegen linken.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      1e93fb81
    • Kevin Wolf's avatar
      libc: Mit -fPIC kompilieren · b2702903
      Kevin Wolf authored
      * libc: Wenn man mit -fPIC kompiliert, sind statt über 3300 Relokationen
        nur noch knapp 650 übrig. Und für echte Shared Libraries will man das
        früher oder später sowieso, weil damit dann alle Relokationen direkt
        nebeneinander liegen und man nicht überall COW machen muss.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      b2702903
    • Kevin Wolf's avatar
      Buildsystem: libc in src/modules/c dynamisch linken · 11973a7f
      Kevin Wolf authored
      + libc: Zusätzlich zur statischen Bibliothek auch eine dynamische bauen
      
      + modules/c/*: Die libc dynamisch linken
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      11973a7f
    • Kevin Wolf's avatar
      user-i386.ld: Linkerskript .so-tauglich machen · cc75edf9
      Kevin Wolf authored
      ! user-i386.ld: Wenn man __ctor/dtor_start/end__ innerhalb der Input
        Section Description anlegt statt außenrum, kommt ld nicht auf die
        Idee, irgendwelche Orphaned Sections dazwischenzupacken, die als
        Konstruktoren interpretiert nicht so richtig viel Sinn ergeben.
      
      + user-i386.ld: .dynbss explizit hinzugefügt (das hatte sich ohne den
        Fix zwischen die Konstruktoren gemogelt)
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      cc75edf9
    • Kevin Wolf's avatar
      libc: Einfacher dynmaischer Linker für den ELF-Loader · 8f16f03b
      Kevin Wolf authored
      + libc: Der ELF-32-Loader kann jetzt Shared Libraries nachladen, wenn
        die Binary einen DYNAMIC-Program-Header hat, der das verlangt. Dabei
        werden die nötigen Relokationen direkt ausgeführt (d.h. es gibt im
        Moment kein Lazy Binding, sondern alle Symbole, ob benötigt oder
        nicht, werden aufgelöst).
      
        Was hier implementiert ist, ist zwar dynamisches Linken, aber keine
        echten Shared Libraries, weil nämlich nichts gesharet wird. Das kann
        etwas Plattenplatz sparen, weil die Bibliotheken nur noch einmal
        vorhanden sein müssen statt überall statisch dazugelinkt, aber in
        Sachen RAM liegt weiter für jeden Prozess eine Kopie im Speicher.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      8f16f03b
    • Kevin Wolf's avatar
      init: loader_get_library() implementiert · 7ed8b570
      Kevin Wolf authored
      + libc: Ein neuer Callback loader_get_library() für den ELF-Loader, der
        ein ELF-Image einer Shared Library in den Speicher lädt
      
      + init: Implementierung von loader_get_library()
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      7ed8b570
    • Kevin Wolf's avatar
      libc: ELF-32-Loader ein bisschen umgebaut · e4938faa
      Kevin Wolf authored
      * libc: Als Vorbereitung für die Erweiterungen erst ein bisschen
        Refactoring für den bestehenden Loader machen. Der wird dabei so
        umgebaut, dass er davon ausgeht, dass es mal mehrere Images zu laden
        geben könnte.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      e4938faa