Sourcecode Fortschritt
-
Version 0.0.4.12:
- GCC-4.7.2-Kompatible Userlib
- Fehler durch ungenaue Fließkommarechnungen bei clang behoben
- Compilerfehler mit _FAT_DIAGNOSIS_ behoben
- disk_t::size als 64-bit Integer - Festplatten können größer als 4 GiB sein. %Sa, %Sg, %Sm und %Sk erfordern 64-bit int.
- Verschiebung der PCI-Vendorliste in VS10-Projektmappe nachgetragen
- VCcompatibility.h ergänzt und aktualisiert (GCC 4.7.2 als Standard)
-
Version 0.0.4.13:
- bochs.bxrc korrigiert: Aktualisiert für Bochs 2.6, relativer Pfad zum Floppyimage
- Optimierung: memset durch statische Array-Initialisierung ersetzt, wo möglich
- Scope einiger Variablen im FAT-Treiber reduziert
- Typkorrekturen: uint8_t vs. int8_t/char
- Fehlerbehebung in C++-Userlib: clang verhält sich wie 4.5/4.6
-
Version 0.0.4.14:
- HDD-Treiber auf Interrupts umgebaut (JonasOSDever)
- Compilerfehler in paging.c behoben, wenn _DIAGNOSIS_ aktiviert ist (JonasOSDever)
- Datum im Bootscreen auf 2013 gesetzt
-
Version 0.0.4.15:
- Codeduplikation in makefiles reduziert
- VS-Ausgabeformat bei Clang verwendet
- Lowercase/Uppercase-Problem unter Linux behoben (Fund von Paddy)
- void foo(); prototypen zu void foo(void) geändert. In C besteht ein Unterschied, nämlich ob die Funktion beliebig viele Argumente akzeptiert oder nicht. Dabei aufgedeckte Fehler behoben. (Fund von Paddy)
- jmp $2 statt 4x nop im hdd-Treiber
- Padding-Bytes in einigen Strukturen reduziert
-
Version 0.0.4.16:
- Shortcuts in PrettyOS.odt dokumentiert
- CPUID-Funktionen optimiert und Problem mit Clang gelöst
- Audio-Treiber nun deaktivierbar (_AUDIO_ENABLE_)
- Zwei potentielle Deadlocks in events.c behoben
- Eine Allokation in executable.c eingespart
- Task-Log-Ausgabe besser formatiert
- Fehlerkorrektur im Maustreiber: Eine PS/2-Maus sendet anscheinend immer ACK
-
Version 0.0.4.17:
- Register/Memory-Clobbering bei Inline-Assembler (behebt u.a. bug mit GCC 4.7.2)
- Fehler in vsnprintf behoben: String muss nullterminiert werden (wenn Platz ist)
- Optimierungsstufe -O2 auch im Userspace
- Fehlendes va_end in serial_log ergänzt
-
Version 0.0.4.18:
- CapsLock-Unterstützung im Keyboardtreiber eingebaut
- make_initrd und CreateFloppyImage aufgeräumt. make_initrd als C++-Program umgeschrieben. Flexible Anzahl von Headern in Ramdisk (reduziert Kernelgröße um 4,67 KiB)
- ivt-Pointer in vm86.c volatile, damit der Speicherzugriff nicht wegoptimiert wird
- Bugfix in Shell: Letzten 3 Zeichen einer Zeile werden richtig gelöscht
-
Version 0.0.4.19:
- ataPoll in readSectorPIOLBA28 aufgerufen, um Lesefehler zu beheben (JonasOSDever)
- maxcls im FAT-Treiber nicht mehr von USB-Stick-Größe abhängig
- ATA/HDD im Devicemanager nicht mehr als "Unknown" angezeigt
- Logausgabe im HDD-Treiber Windows-konform umgebrochen (\r\n)
- HDD-Testcode in ckernel.c entfernt, da obsolet
-
Version 0.0.4.20:
- Unterstützung für C++-Userprogramme in user/other_userprogs
- Neues Userprogramm: Editor (C++). Kann bislang nur Dateien anzeigen (absoluten Pfad als erstes Kommandozeilenargument übergeben)
- -ffreestanding sollte nicht für Userprogramme verwendet werden (Ermöglicht C++-Userprogramme mit Clang)
- fgetc() sollte EOF zurückgeben, falls das Dateiende erreicht wurde
- PRINT+h (Screenshot auf Harddisk) dokumentiert
- Hacks in der Umgebung von saveScreenshot etwas verringert
-
Version 0.0.4.21:
- Performance-Verbesserung für Textmodus: VGA-Cursor deutlich seltener verschoben (Behebt Einfrieren in Hyper-V)
- Hinweise zu volatile bei inline-Assembler aus dem GCC-Manual befolgt - entfernt, wo unnötig
-
Version 0.0.4.22:
- ATA-Treiber läuft nun unter echter Hardware (VORSICHT bei HDDs, die wichtige Dateien enthalten!); Diverse Probleme behoben.
- Bugfix in printf: Größenangaben > 4 GiB möglich
- Fehlerausgaben im Maustreiber vereinheitlicht
- test-results.txt aktualisiert
- sysenter-Handler etwas optimiert
- refreshUserScreen aktualisiert nur noch den User-Bereich (Scrollen kopiert weniger Zeichen im Textmodus)
-
Version 0.0.4.23:
- Falsche Bootdevice-Angaben im Bootloader Stage 1 und 2 korrigiert (Erhöhte Erfolgswahrscheinlichkeit, wenn man von USB booten will)
- timeout-Funktion von scheduler_blockCurrentTask korrigiert
- Nullterminierung in vsnprintf/snprintf sichergestellt
- C99-Funktionen in C-Standardbibliothek ergänzt
- IRC-Client erweitert: Kommandos können gesendet werden (mit / beginnen, oder strg+c) (JonasOSDever)
-
Die neue Revision baut bei mir nicht (letzten Zeilen der log-Datei):
..\user_tools\prettylib.a(userlib.o) : In function
vsnprintf': userlib.c: (.text.vsnprintf+0x0): multiple definition of
vsnprintf'
..\stdlibc\stdlibc.a(stdio.o):stdio.c : (.text.vsnprintf+0x0): first defined here
..\user_tools\prettylib.a(userlib.o): In functionsnprintf': userlib.c: (.text.snprintf+0x0): multiple definition of
snprintf'
..\stdlibc\stdlibc.a(stdio.o):stdio.c: (.text.snprintf+0x0): first defined here
mingw32-make[1]: *** [browser.ELF] Error 1
mingw32-make: *** [other_userprogs] Error 2
-
woran das liegt, kann ich gerade nicht erkennen.
normalerweise gibt es solche fehlermeldungen, wenn man funktionen oder prototypen doppelt schreibt.
was mir aber auffällt: in "userlib.h" fehlt der prototyp für vsnprintf und snprintf.
-
Ich habe wohl vergessen, die Implementation in der userlib zu löschen. Danke für den Hinweis.
-
Version 0.0.4.23 - Revision 1409:
- Compilerfehler behoben - doppelte vsnprintf/snprintf-Implementation gelöscht
-
Version 0.0.4.24:
- Schreibschutz im Paging aktiviert - Kernel-Code gegen Überschreiben geschützt
- Bootloader optimiert: BL2 übernimmt Daten von BL1, anstatt sie selbst noch einmal zu speichern
- Fehlendes Register-Clobbering ergänzt (führte zu Problemen, wenn mit O3 kompiliert wird)
- Größere Objekte auf den Heap gelegt (Verkleinert den Kernel um mehrere KB)
- Zugriff auf uninitialisierte Variable entfernt (cppcheck-Fund)
- Einheitliche NULL-Definition
-
Mr X schrieb:
- Einheitliche NULL-Definition
Anscheinend hat man meine Ratschläge doch nich ein bisschen ernst genommen.
-
Version 0.0.4.25:
- Bessere Trennung von usb und usb-MSD
- Neue Funktion strdup im Kernel - Ersetzt mehrere malloc+strcpy durch effizienteres memcpy
- Const-correctness erhöht
- Lizenztext in stdlibc eingebaut
-
Version: 0.0.4.26 - rev. 1412:
usb.c: Prüfen auf usb-Hub und erste Verhinderung sinnloser Maßnahmen am "Device".bool hub = IsUsbHub(device)
Edit: Fehler wurde in rev. 1413 korrigiert.