- 04 Jan, 2017 9 commits
-
-
Kevin Wolf authored
+ libc: Zusätzlich zur statischen Bibliothek auch eine dynamische bauen + modules/c/*: Die libc dynamisch linken Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
Kevin Wolf authored
+ libc: Ein Satz sys/queue.h-Makros für einfach verkettete Listen Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
- 02 Jan, 2017 2 commits
-
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
- 29 Dec, 2016 3 commits
-
-
Kevin Wolf authored
+ libc: strtoll() implementiert Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
+ libm: gcc hat auch praktische Builtins für frexp() und modf() und die Entsprechungen für float und long double. Benutzen! Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
+ libc: Der Compiler hat noch einen ganzen Haufen vordefinierte Makros für Konstanten in float.h auf Lager, die könnte man auch einfach benutzen. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 28 Dec, 2016 7 commits
-
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
- 24 Dec, 2016 1 commit
-
-
Kevin Wolf authored
* shell: Dieser Commit spendiert der Shell Ansätze von einem richtigen Parser anstatt nur Dateiumleitungen aus der Tokensuppe herauszufischen und den Rest als Argumente zu nehmen. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 23 Dec, 2016 1 commit
-
-
Kevin Wolf authored
* shell: Ein Token pro Aufruf zurückgeben statt einen kompletten String auf einmal in ein großes Array zu zerlegen. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 17 Dec, 2016 2 commits
-
-
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 <kevin@tyndur.org>
-
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 <kevin@tyndur.org>
-
- 11 Dec, 2016 3 commits
-
-
Kevin Wolf authored
+ tests: Ein paar einfache Testfälle für lio_pipe(), sowohl mit uni- als auch bidirektionalen Pipes Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
+ kernel2: lio_pipe() in den Userspace exportieren Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
+ kernel2: Kernelinterne Funktion, um eine (uni- oder bidirektionale) Pipe zu erstellen Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 26 Nov, 2016 1 commit
-
-
Kevin Wolf authored
A directory isn't supposed to contain multiple entries with the same name. Error out when someone tries to create a new directory entry with the same name as an existing entry uses. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 05 Nov, 2016 7 commits
-
-
Kevin Wolf authored
It shouldn't normally happen that there are two directory entries with the same name, but in order to avoid crashes on inconsistent file systems, let's make sure to free the right resource instead of just one with the same name. Also, remove only one directory entry so that another unlink() request can succeed and fully remove the second entry. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
* kernel2: lio_mkfile/dir/symlink können jetzt einen Fehlercode zurückgeben statt nur NULL (woraus immer -EIO wurde) + kernel2: EEXIST zurückgeben, wenn lio_mkfile/dir/symlink mit einem Dateinamen aufgerufen wird, den es im Verzeichnis schon gibt Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
* kernel2: get_node_in_dir() ist der Teil von lio_get_resource(), der in einer gegebenen Verzeichnis-Ressource nach einem Eintrag sucht. Das ist auch in anderen Zusammenhängen nützlich. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
! libc: Zumindest für LIOv2 bekommen wir einen Fehlercode vom Kernel zurück, den könnten wir dann eigentlich auch nach errno schreiben. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
! LostIOv2: Wenn Userspace-Services einen Knoten gelöscht haben, dann wurde der zwar beim Kernel abgemeldet und der Speicher freigegeben, aber er wurde nicht aus der Userspace-Liste der Verzeichniseinträge gelöscht. Über kurz oder lang gibt das Rot. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
+ libc: strerror() hat jetzt für ein paar der wichtigsten errno-Codes richtige Meldungen statt nur "Unbekannter Fehler %d" Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
! libc: Schreibgeschützte temporäre Dateien sind doof Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 29 Oct, 2016 4 commits
-
-
Kevin Wolf authored
+ setup: Bei den Defaults für die Netzwerkeinstellungen wird jetzt der e1000-Treiber vorgeschlagen, wenn das e1000e-Modell aus qemu da ist. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
We have done everything to support qemu's e1000e emulation now. The only missing part is fixing qemu so that it doesn't zero the buffer address in descriptors after using them. The spec is explicit that the CDI driver is right here and qemu isn't. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
The old e1000 models used to clear the interrupt flags in ICR on read, but e1000e doesn't do this any more. Just writing the bits back is fine for both, so let's do just that. Clearing the bits must be done before actually processing the interrupt in order to avoid races with new events. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
Checking whether bit 0 has been set in the status field only works for determining whether a descriptor has been used by the NIC if the bit is properly cleared before handing it to the device. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-