Sourcecode Fortschritt
-
0.0.4.236 - Rev: 1622
Nun klappt das Kompilieren mit und ohne #define _SERIAL_LOG_
-
0.0.4.237 - Rev: 1623
Damit bochs wieder mitspielt:
- cli(); und sti(); in scheduler.c, unblockTask() entfernt (wegen #GP bei bochs) (Fund von MrX)
- mit GCC kompilieren (bei clang erfolgt keine Ausführung der Eingaben)
==> bochs läuft (ca. 200 syscalls/sec)
-
0.0.4.238 - Rev: 1624
ehci.c:
e->OpRegs->USBSTS = 0x00000000; is not useful!
Hence, we set it to: 0000 0000 0000 0000 0001 0000 0011 1111 = 0x0000103F
-
0.0.4.239 - Rev: 1625
Beseitigung überflüssiger Zeilen in fat.c (Fund von MrX mittels cppcheck)
-
Version 0.0.4.240:
- Unzählige Clang (-Weverything)- und Cppcheck-Warnungen behoben
- Kein "Press key for exit!" bei Kernel-Absturz
- Caches invalidiert beim Entfernen einer Disk
-
Version 0.0.4.241:
- Pufferüberlauf in FAT_FormatFileName behoben -> Clang-Hack in fsmanager.c entfernt
- Pufferüberläufe beim Zugriff auf partition_t::serial behoben, serial ist nun Integer, Partitionsname in separatem Feld partition_t::name gespeichert, disk_t::name entfernt
- irq_uninstallHandler implementiert
- Einstellungen in PCNet-Treiber überarbeitet (non-promiscuous-Modus, automatische Aushandlung Full-/Halbduplex, etc.)
- HACKs in video.h verbessert und in fat.c und pcnet.c behoben
-
Version 0.0.4.242:
- Treiber für RTL8168/8169 weiterentwickelt:
-> Initialisierung, Senden und Empfangen funktionieren weitgehend, aber keine Interrupts
-
Version 0.0.4.243:
- xHCI/EHCI: Speicherverwaltungsfehler behoben - allokiere soviel Speicher wie nötig anstatt immer eine page
- xHCI: Timeout in HC-Halted-Warteschleife eingebaut
- RTL8186/RTL8139: PCI_CMD_FASTBACKTOBACKENABLE aktiviert; RTL8168: PCI_CMD_MEMORYWRITEINVALIDATEENABLE aktiviert
- RTL8168: Aktiviere Transmitter, bevor TxConfig geschrieben wird
-
0.0.4.244 - Rev: 1630
e->bar oder x->bar = (uintptr_t)paging_acquirePciMemory(bar_phys, alignUp(bar_size, PAGESIZE)/PAGESIZE) + (bar_phys % PAGESIZE);
ehci läuft wieder, xhci bleibt bei der port-behandlung stecken (port check, detect device war alles auskommentiert?!).
-
0.0.4.245 - Rev: 1631
xhci.c: detect Device wieder aktiviert (war auskommentiert).
Test-PC: Stick wird erkannt und Programm kann gestartet werden!
bochs: läuft
vmware: 3 x timeout beim Erkennen (xhci) und freeze.
qemu 2.0 oder 2.1 stürzt wegen xhci ab.
-
Version 0.0.4.246:
- OHCI: Timeouts und Wartezeiten an Spezifikationswerte angepasst, keine bis zu 10 Sek. Wartezeit mehr
- OHCI: Zahlreiche Ausgaben hinter _OHCI_DIAGNOSIS_ versteckt
- PCI/xHCI: Auslesen der PCI-Capabilities nach pci.c verschoben
- Bugfix: Loslassen der STRG-Taste bei Strg+I wird nun erkannt
-
Version 0.0.4.247:
- switch_context erzwingt Task-Wechsel nur noch auf Wunsch - Einsparung von 250 Interrupts pro Sekunde im Idle-Zustand
- Netzwerktreiber deaktivierbar (_NETWORK_ENABLE_)
- FS_ERROR-enum zwischen Kernel und Usertools synchronisiert
- Paketlänge auf Pufferlänge begrenzt in allen Netzwerkkartentreibern
- Bugfix: RTL8168 Tx/RxBuffers korrekt verwendet
- Bugfix: RTL8168/RTL8139 nehmen nun erste statt letzte MMIO-BAR, falls mehrere verfügbar sind
- Bugfix: Entry size in memory map sollte 20 sein (führte zu ASSERTION beim Start mit GRUB)
-
Version 0.0.4.248:
- xHCI: Alignments auf von Spezifikation geforderte Werte reduziert
- PCI/xHCI: MSI-Konfiguration nach pci.c verschoben, 32-Bit-Adressierung implementiert
- RTL8169: Nutze MSI, wenn verfügbar
- Überflüssige "volatile"-Schlüsselwörter entfernt, überflüssige Bitfelder durch normale Variablen ersetzt
- acpi/matd.c: strcpy-Nutzung reduziert und malloc()-Nutzung entfernt
- xHCI: Kommentare schöner formatiert
- Bochs-Script an Bochs 2.6.7 angepasst
-
Version 0.0.4.249:
- *HCI: HC-Treiber implementiert heraussuchen der passenden BAR (keine Verwechselung von IO- und MMIO-Adressen, wenn der HC beides anbietet, keine mehrfache Erkennung eines einzelnen HCs)
- xHCI: Auslesen der Extended Capabilities richtig implementiert (Stehen im MMIO-Bereich, nicht in PCI-Registern, anders als bei EHCI)
- Diagnose-Flag _HCI_DIAGNOSIS_ entfernt (überflüssig)
- Bugfix: Pufferüberlauf in fat.c (Danke, Mechanics!)
- Bugfix: Kein Zeilenumbruch in Konsolenname bei xHCIDamit friert mein Testrechner sowohl bei OHCI als auch bei xHCI nicht mehr bei der Initialisierung ein -> xHCI ist dort jetzt benutzbar.
-
Version 0.0.4.250:
- shell: pwd Befehl hinzugefügt, cd ohne Parameter gibt ebenfalls das working dir aus, chdir als alias für cd hinzugefügt
- shell: ls/dir werten das working dir aus
- shell: cd prüft jetzt, ob das angegebene Ziel auch wirklich ein existierendes Verzeichnis ist
- shell: cd kann jetzt auch . und ..
- length Parameter für ipc_getString in einen Pointer umgewandelt, über den die benötigte Größe zurückgegeben wird
- Bugfix: FAT_openFolder hat auch für Dateien ein gültiges folder_t Objekt zurückgegeben
-
Version 0.0.4.251:
- Diagnoseausgabe von APIC hinter _DIAGNOSIS_ versteckt
- Nutze RDTSC nur für die CPU-Frequenz-Bestimmung, wenn verfügbar
- Bugfix: Clobbering von EAX fehlte in cpu_idGetRegister()
- Bugfix: Timeout von syscall wait() korrigiert
- Styleguide aus Forum aktualisiert und ins Repository gepackt
- documentation/PrettyOS.odt und documentation/Syscalls.odt aktualisiert
- /tools aufgeräumt. Geänderte Programme:
-> Make auf Version 4.1 aktualisiert
-> dd auf Version 0.6b3 aktualisiert
-> BootDisk2BootStick.exe entfernt
-
Version 0.0.4.252:
- VBE: bootscr.bmp nicht mehr in Kernel eingebunden, stattdessen bei Bedarf nachgeladen (Kernelgröße um 64 KB reduziert)
- IPC: Jeder Task hat einen "working node", auf den mit ">" zugegriffen werden kann. Beschleunigt IPC-Zugriffe und erspart zahlreiche Stringoperationen.
- Linker: Entferne Section ".eh_frame" aus KERNEL.BIN (Reduziert Kernelgröße um ~40 KB, wenn mit GCC kompiliert)
- Bugfix: Pufferüberlauf in icmp_sendEchoRequest behoben
- Bugfix: strncicmp gab != 0 zurück, wenn der "case" des letzten Buchstaben verschieden war
- Kleinere Korrekturen an Textausgabe
-
Version 0.0.4.253:
- PCI: Funktionen pci_config_read und pci_config_write_* in pci_configRead und pci_configWrite_* umbenannt, nehmen pciDev_t* als Parameter
- PCI: Allokation der MMIO-Bar in pci_aquireMemoryForMMIO() verallgemeinert; Alle Gerätetreiber sollten nun die Allokation korrekt durchführen
- OHCI: Code besser strukturiert
- Bufix: Unsinnigen Code in pic_remap entfernt
-> Interrupts von PCI/PCIe ohne MSI funktionieren wieder
- Bugfix: Floppy-Treiber setzte drittes Byte von SPECIFY falsch (cppcheck-Fund), Steprate falsch interpretiert
-> Ladegeschwindigkeit nun deutlich verbessert, da Head-Load-Time von 256ms auf 30ms verkürzt. Steprate von 13ms auf 4ms verkürzt
- Bugfix: Initialisere partition-Array von FloppyDisk mit Nullen
- Bugfix: mouse_read() nach Kommandos 0xF6 und 0xF4 auskommentiert - Timeout auf allen getesteten Geräten, inklusive Emulatoren
-
Version 0.0.4.254:
- CDI-Implementation etwas aufgeräumt, Speicherleck in cdi_pci.c behoben
- Bei Absturz des Kernels: Wechsel in Kernelkonsole bevor das System angehalten wird
- todoList mit mutex gesichert, Allokationen reduziert
- _BROKENFREE_DIAGNOSIS_ entfernt - stattdessen Ausgabe eines Stacktraces
- Bugfix: Übergebe nur PAGESIZE-ausgerichtete Adressen an paging_acquirePciMemory
- Bugfix: PCNet-Treiber gibt korrekte Paketlänge an (läuft nun auch auf VBox)Es besteht ein seltsamer Bug, wahrscheinlich mit Zusammenhang zu CDI oder dem e1000-Treiber, der zu einem "Broken Free" führt, wenn man mit clang kompiliert. Vor dem o.g. Fix für das Speicherleck gab es einen Freeze (auch mit GCC). (VBox mit e1000-Netzwerkadapter)
-
0.0.4.255 - Rev: 1641
xhci: handler verändert, so dass ein Port Change Detect erst zurück gesetzt und behandelt wird, wenn der HC wirklich läuft.
Hinweis: vmware läuft mit xhci nicht mehr seit dem Übergang Rev. 1582 -> 1583