Sourcecode Fortschritt
- 
					
					
					
					
 Werd mal vorbeischauen. 
 
- 
					
					
					
					
 Version 0.0.5.111: - Paging-Modul überarbeitet: 
 -- Threadsicherheit mit Mutex hergestellt
 -- Erste Page (0x00000000 - 0x00000FFF) gegen Schreibzugriffe geschützt
 -- paging_createUserPageDirectory und paging_destroyUserPageDirectory umbenannt, Kommentierung verbessert
 - VM86 repariert: Addressen korrigiert; mit eigener Page-Table ausgestattet
 - Videomanager: Abfangen von leerer Eingabe bei Modusauswahl
 
- 
					
					
					
					
 Version 0.0.5.112: - Bugfix: OHCI-Treiber initialisierte o->interrupt_baseEDs[i].tdQueueTail nicht 
 - Bugfix: dns_setServer() und dns_getServer() stürzen nicht mehr ab, wenn keine Netzwerkkarte vorhanden ist.
 - Makefile: -fno-delete-null-pointer-checks im Kernel aktiviert (nur GCC)
 - Userspace: C-Standardbibliothek um zahlreiche C99/C11-Funktionen erweitert
 - Shell: Befehl 'hi' entfernt
 - Codestil: -Wstrict-prototypes aktiviert, Warnungen behoben
 - Textausgaben, Kommentare und Dokumentation verbessert
 - VM86: Opcodes INSB/W/D, OUTSB/W/D, sowie Unterstützung von rep-Präfix und Segmentoverrides implementiertFrohe Weihnachten! 
 
- 
					
					
					
					
 Version 0.0.5.113: - Fehlerbehebung: ACPI-Modul löschte Allozierung der ersten physischen Speicherseiten, die dann von malloc wiedervergeben wurden. Dadurch wurde die IVT beschädigt. 
 - Fehlerbehebung: Nullpointerdereferenzierung im FAT-Treiber behoben
 - Fehlerbehebung: Register-Clobbering korrigiert
 - RTL8139: Rx-Buffer-Wrap-Around korrekt behandelt, bessere Fehlerbehandlung
 - RTL8168: Schutz vor Speicherüberlauf bei Paketen mit Länge < 4 Byte
 - Fehlende semaphore_t-Funktionen implementiert
 - OSXMMEXCPT in CR4 aktiviert (SSE-Unterstützung)
 
- 
					
					
					
					
 Version 0.0.5.114: - Fehlerbehebung: Stack-Layout bei VM86-Interrupts korrigiert. Es müssen 16-bit-Werte in der richtigen Reihenfolge gespeichert werden (vielen Dank an Paddy für die Entdeckung des Fehlers). 
 - RTL8168: Prüfsummenabladung aktiviert
 - VM86: Behandlung von Fehlern verbessert; keine Tastendruck-Abfrage vor Beenden des Tasks
 - APM: Aktiviert, da nun funktionsfähig.
 - cpu.h: Diverse CPUID-Featureflags hinzugefügt
 
- 
					
					
					
					
 BTW: Hier gibt es ein interessantes OS das in rust geschrieben ist. Es ist noch jung, sieht aber vielversprechend aus. Ein rudimentärer ZFS-Support ist schon implementiert und wird ausgebaut. 
 Kann sicherlich noch Man-Power gebrauchen.
 
- 
					
					
					
					
 Es ist schon bemerkenswert, mal ein recht fortgeschrittenes OS zu sehen, das nicht in C, C++ oder Assembler geschrieben ist. Klingt nach einem Fall für diese Liste: https://www.c-plusplus.net/forum/273023 Version 0.0.5.115: - TCP: Speicherlecks geschlossen und Code aufgeräumt 
 - RTL8168: Konfigurationsregister müssen nicht entsperrt werden, RTL8168_CPCMD gesetzt, weniger Interrupts aktiviert
 - APM: Textausgabe optimiert, Fehlerbehandlung verbessert
 - UDP: Prüfsummenabladung aktiviert
 - Fehlerkorrektur: ISRs 17 (#AC) und 30 (#SX - nur AMD-CPUs) liefern einen Fehlercode
 - Kleinere Korrekturen und Optimierungen
 
- 
					
					
					
					
 @ShadowClone: Danke für den Hinweis! Habe es bei R eingefügt. 
 
- 
					
					
					
					
 Version 0.0.5.116: - CDI: Header aktualisiert und Implementation erweitert 
 - Code aufgeräumt und optimiert, insbesondere:
 -- dns.c: Kopierschleife durch htons/htonl ersetzt
 -- usb_video.c, xhci.c, ohci.c: switch() durch String-Array ersetzt
 -- Inline-Assembler-Code optimiert
 
- 
					
					
					
					
 Version 0.0.5.117: - Audio: Treiber für Via-AC97 hinzugefügt 
 - EHCI: Probleme mit cHC behoben; PSTS_COMPANION_HC_OWNED darf nicht genullt werden, sonst reißt der EHCI-Treiber ein zuvor an den cHC abgegebenes Gerät wieder an sich.
 - USB-HID: Falsche doppelte Tastendrücke behoben
 - Code vereinfacht: Funktion event_issueToDisplayedTasks() implementiert
 
- 
					
					
					
					
 Version 0.0.5.118: 
 - e1000-CDI-Treiber aktualisiert
 - VM86: Maskiere Teile von eflags, die nicht verändert werden dürfen
 - Videomanager: Vermeide mehrfache Initialisierung
 - Fehlerbehebung: Maskierung beim Lesen der PCI-BAR-Adressen korrigiert
 - Fehlerbehebung: Powermanagement-Fallback muss immer verfügbar sein
 - Fehlerbehebung: Korrekte Erkennung fehlender oder leerer VBE-Modelisten
 - Fehlerbehebung: isxdigit() korrekt implementiert
 
- 
					
					
					
					
 Version 0.0.5.119: 
 - Fehlerkorrektur: Compilerfehler in _NETWORK_DIAGNOSIS_ behoben
 - Fehlerkorrektur: Dateisystemtreiber müssen fflush nicht implementieren - Absturz behoben
 - Log: Bedienung und Implementation weitgehend fertiggestellt
 - Grafik-Font optimiert: Leere Zeichen an Beginn und Ende weggelassen
 - Kleine Optimierungen
 
- 
					
					
					
					
 Version 0.0.5.120: 
 - Fehlerkorrktur: Erkenne BMP-Dateien mit übergroßem Header korrekt
 - Unterstützung von lauflängenkodierten BMP-Dateien, Bilder entsprechend komprimiert
 - Aufspreizung des Farbraums bei 8-Bit-Farben - behebt gelbstich
 
- 
					
					
					
					
 Version 0.0.5.121: - ACPI: Lese FADT aus 
 - KBC: Setze Tastatur-LEDs für Num-Lock, Scroll-Lock und Caps-Lock
 - KBC: Initialisiere Maus vor Tastatur (nur ein Timeout statt 2, behebt Problem in VirtualBox in Kombination mit Tastatur-LEDs), prüfe Vorhandensein anhand der FADT vor Initialisierung
 - event_poll() optimiert: list_find()-Aufruf eingespart
 - Clang-Warnung über uint8_t vor ...-Argument behoben
 
- 
					
					
					
					
 Version 0.0.5.122: - IPv6-Implementation begonnen 
 - Interne Signallisierung von FPU-Ausnahmen aktiviert
 - netbios.h/c entfernt (enthielten keine nennenswerte Funktionalität, und das Protokoll ist obsolet)
 - Funktion usb_setupTransfer() in usb_constructTransfer() umbenannt
 
- 
					
					
					
					
 Version 0.0.5.123: - Treiber für I/O-APIC und Local-APIC getrennt und verbessert. I/O-APIC wird nur genutzt, wenn _IOAPIC_ENABLE_ gesetzt ist 
 - EOI-Verhalten verbessert: Kein EOI bei Exceptions, kein EOI an PIC, wenn Interruptnummer außerhalb von [32, 48]
 - Bugfix: ftoa vergisst nicht länger das Vorzeichen bei Zahlen zwischen 0 und -1
 - Bugfix: Initialisiere Konsolenstacks auch wenn displayConsole() nicht aufgerufen wird
 - Tippfehler: CF_MTRR statt CF_MTTR
 
- 
					
					
					
					
 Version 0.0.5.124: - Unterstützung für AGP: Wähle 1x-Modus bei AGP 2.0 und 4x-Modus bei AGP 3.0 
 - Unterstützung für MTRRs um das Caching-Verhalten der CPU für bestimmte Speicherbereiche zu optimieren
 -> Speicherbereiche für VBE- und VGA/Textmodus-Framebuffer auf Write-Combining gestellt
 - Cache verbessert: Mehr Sektoren im Cache, intelligenterer Belegungsalgorithmus
 - Bugfix: Nutze alle Caches, nicht nur die ersten 256.
 - Kleinkram
 
- 
					
					
					
					
 Version 0.0.5.125: - Sende Events wenn Konsole den Fokus erhält oder verliert; behebt irrtümlich erkannte Strg+...-Befehle nach Benutzung von Strg+V. 
 - Paging/Multiboot: Unterstütze MemoryMap mit variabler Eintragslänge
 - itoa auf Basis von utoa implementiert
 - Kleine Korrekturen: Potentielle Nullpointer-Dereferenzierungen, falsche Allokationsgröße, Register-Clobbering etc. behoben
 
- 
					
					
					
					
 Version 0.0.5.126: - Fehlerbehebung: Crash durch Race-Condition in event_poll behoben (konnte z.B. in Bochs durch sehr schnelles drücken auf der Tastatur ausgelöst werden) 
 - USB-MSD: Fange Fehler aus usb_sendSCSICommand besser abgefangen
 - Nutzerprogramm-Dummies entfernt; es gibt echte Nutzerprogramme als Anschauungsbeispiele
 - Diverse Cppcheck- und Clang-Analyzer-Warnungen behoben
 - bochs.bxrc an Bochs 2.6.9 angepasst, VS-Projektmappe auf Visual Studio 2017 aktualisiert
 
- 
					
					
					
					
 Version 0.0.5.127: - Paging: Fehlende TLB-Invalidierungen ergänzt; erstes MiB nicht als MEM_NOTLBUPATE gekennzeichnet wegen VM86 
 - VM86: VM86-Code vor Schreibzugriffen geschützt, Stack oberhalb des Codes angeordnet und pro Task allokiert
 - Video: Setze PCI-Busmaster für Grafikkarten