1. 04 Jan, 2017 11 commits
    • 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
    • Kevin Wolf's avatar
      libc: SLIST-Makros aus sys/queue.h · 5cb966ba
      Kevin Wolf authored
      + libc: Ein Satz sys/queue.h-Makros für einfach verkettete Listen
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      5cb966ba
    • Kevin Wolf's avatar
      libc: fread mit blocksize/blockcount == 0 · 8e9dcc62
      Kevin Wolf authored
      ! libc: fread() mit blocksize == 0 sollte nicht durch Null teilen,
        sondern einfach direkt 0 zurückgeben. Das gleiche können wir auch mit
        blockcount == 0 tun, obwohl es da nicht so wichtig ist.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      8e9dcc62
    • Kevin Wolf's avatar
      libc: stdint.h-Konstanten gefixt · 513e0988
      Kevin Wolf authored
      ! libc: (U)INTn_MAX und SIZE_MAX müssen per #if vergleichbar sein, also
        dürfen da keine Casts oder ähnliches verwendet werden
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      513e0988
    • Kevin Wolf's avatar
      libc: Blockierendes read() mit LIOv1 · da801d18
      Kevin Wolf authored
      ! libc: read() darf nicht -EAGAIN zurückgeben, wenn es eigentlich
        blockierend sein sollte. Weil LIOv1 nicht wirklich blockieren kann,
        muss read() selber eine entsprechende Schleife haben.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      da801d18
  2. 02 Jan, 2017 2 commits
    • Kevin Wolf's avatar
      init: p/v um die Initialisierung · 34c9402e
      Kevin Wolf authored
      ! init: Es kann (anscheinend vor allem auf langsameren Maschinen wie
        qemu ohne KVM) passieren, dass die ersten paar Prozesse init so oft
        nach servmgr fragen, dass init nur noch damit beschäftigt ist, zu
        sagen, dass das noch nicht da ist, und nie dazu kommt, es wirklich zu
        laden. Das ist ein bisschen schade. Also lassen wir init erstmal alle
        Module laden, bevor es auf RPCs antwortet. (Ich weiß, die richtige
        Lösung wäre, das Polling loszuwerden, aber... nicht heute.)
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      34c9402e
    • Kevin Wolf's avatar
      libc: Ein paar memory-Clobbers mehr für Syscalls · 2e4c6693
      Kevin Wolf authored
      ! libc: Keine Ahnung, ob es überall nötig ist, aber ohne memory-Clobber
        gibt zumindest mem_dma_allocate() nicht unbedingt die physische
        Adresse zurück, die alloziert worden ist. Also lieber mal an ein paar
        Stellen mehr clobbern.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      2e4c6693
  3. 29 Dec, 2016 3 commits
  4. 28 Dec, 2016 7 commits
    • Kevin Wolf's avatar
      shell: Ein bisschen mehr Farbe · 2f09c95e
      Kevin Wolf authored
      * shell: Wenn stdin ein Terminal ist, aktiviert ls die Farben jetzt per
        Default. Außer dem Dateinamen wird jetzt auch der Typ eingefärbt.
        Abgesehen davon macht ps die Überschriften auf Terminals weiß und der
        Prompt ist jetzt ebenfalls weiß statt hellgrau.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      2f09c95e
    • Kevin Wolf's avatar
      libc: isatty() und file_is_terminal() · 20d46f0d
      Kevin Wolf authored
      + libc: Hilfsfunktionen, die für einen gegebenen FILE* oder
        POSIX-Dateideskriptor feststellen, ob es sich um ein Terminal handelt.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      20d46f0d
    • Kevin Wolf's avatar
      kernel2: LIO_IOCTL_ISATTY · 797e0544
      Kevin Wolf authored
      + kernel2: Unterstützung für LIO_IOCTL_ISATTY, was einfach bei Terminals
        Erfolg und bei allem anderen einen Fehler zurückgibt
      
      + vterm: Terminals als solche markieren, damit der Kernel das bei
        LIO_IOCTL_ISATTY berücksichtigen kann
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      797e0544
    • Kevin Wolf's avatar
      kernel2: Neuer Syscall lio_ioctl() · 9d840e8b
      Kevin Wolf authored
      + kernel2: Mit lio_ioctl() gibt es jetzt einen Syscall, um
        ressourcenspezifische Befehle auszuführen. Dieser Commit enthält nur
        die Infrastruktur und implementiert noch keinen solchen Befehl.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      9d840e8b
    • Kevin Wolf's avatar
      libc: dup() implementiert · d6e56ca0
      Kevin Wolf authored
      + libc: Anstatt einem Stub, der immer einen Fehler zurückgibt, wird
        jetzt für LIOv2-Dateien ein richtiges lio_dup() durchgeführt.
      
        Für LIOv1-Dateien dupliziert der POSIX-Layer einfach nur intern das
        Mapping von POSIX-Dateideskriptoren auf LIO-Streams. Das ist zwar
        kaputt, weil es auf dieser Ebene keine Referenzzähler gibt und ein
        close() alle Kopien zumacht, aber es scheint gut genug für git zu
        sein, das ein dup() für einen Socket macht.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      d6e56ca0
    • Kevin Wolf's avatar
      libc: pipe() implementiert · 312d3ec5
      Kevin Wolf authored
      + libc: Statt einem Stub, der immer einen Fehler zurückgibt, können wir
        jetzt in pipe() eine richtige Pipe erstellen
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      312d3ec5
    • Kevin Wolf's avatar
      libc: chdir() mit relativem Pfad gefixt · 2a2aac8a
      Kevin Wolf authored
      ! libc: chdir() sollte nicht nur den absoluten Pfad herausfinden, zu dem
        es wechseln soll, sondern dann auch diesen absoluten Pfad statt dem
        relativen nach $CWD schreiben.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      2a2aac8a
  5. 24 Dec, 2016 1 commit
  6. 23 Dec, 2016 1 commit
  7. 17 Dec, 2016 2 commits
    • Kevin Wolf's avatar
      libc: Ein paar wordexp-Fixes · 042aab0a
      Kevin Wolf authored
      ! libc: Wenn wordexp() eine Variable durch einen String ersetzen musste,
        der so lang ist wie der Variablenname mit Dollarzeichen, dann hat es
        ins Leere gegriffen.
      
      ! libc: wordexp() ignoriert jetzt einfache Anführungszeichen innerhalb
        von doppelten anstatt die Variablenersetzung in diesem Teil zu
        unterbinden.
      
      ! libc: wordexp() erkennt jetzt auch mehrere direkt aufeinander
        folgenden Quotes anstatt das einleitende Anführungszeichen zu
        überspringen und sich am Ende zu wundern, dass es nicht aufgeht.
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      042aab0a
    • Kevin Wolf's avatar
      shell: Parsen des Pipeoperators gefixt · 4e58693c
      Kevin Wolf authored
      * shell: In tyndur folgt ein Pipeoperator nur auf Leerzeichen, weil
        ansonsten die Pipezeichen in Pfaden nicht mehr funktionieren
      
      ! shell: Endlosschleife gefixt, die durch eine nur halbe Implementierung
        verursacht wurde (Wechsel in Zustand fürs Parsen von Operatoren, aber
        dort wird er nicht erkannt)
      Signed-off-by: Kevin Wolf's avatarKevin Wolf <kevin@tyndur.org>
      4e58693c
  8. 11 Dec, 2016 3 commits
  9. 26 Nov, 2016 1 commit
  10. 05 Nov, 2016 7 commits
  11. 29 Oct, 2016 2 commits