Sourcecode Fortschritt



  • 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 xHCI

    Damit 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)


  • Mod

    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


  • Mod

    0.0.4.256 - Rev: 1642

    apic.c: Remap PCI lines A#, B#, C#, D# von level/low nach edge/high geändert, damit vmware wieder läuft. Test-PC geht auch noch.


  • Mod

    0.0.4.258 - Rev: 1644 (rev. 1643 war Versehen)

    apic.h: geht doch nur mit #define APICIRQ 0
    xhci.c: timeout-Ausdruck entfernt


  • Mod

    0.0.4.259 - Rev: 1645

    xhci.c: ScratchpadBuffers erstellt, falls vom xHC gefordert (aktuelles Bochs erwartet 4 Buffer)



  • Version 0.0.4.260:

    - PCI: Fehler in pci_trySetMSIVector behoben: Interruptnummer war falsch, Zugriff auf MESSAGEDATA als word
    - RTL8168, RTL8139: volatile beim Zugriff auf MMIO
    - PCNet, RTL8168: Interrupt quittiert bevor Pakete verarbeitet werden (Empfang läuft flüssiger)
    - PCNet: Bugfix: Paketlänge beim Empfang korrigiert (enthält keine CRC32); 4-Byte alignment reicht bei init-block, Leak behoben
    - RTL8168: Fehlinformationen von osdev.org behoben: Register MTPS existiert nicht, stattdessen gibt es ETTHR
    - DHCP: memset anstelle von Kopierschleifen
    - CDI-Header aktualisiert
    - Kleinkram: Includes aufgeräumt, verschiedene Falschschreibungen von "threshold" korrigiert



  • Version 0.0.4.261:

    - Neuer Containertyp: array (dynamisches Array)
    - Disk- und Portarrays nun von dynamischer Größe, Portnummerierung größer 'Z' möglich ('AA', 'AB', ...)
    - EHCI: ehci_addToAsyncScheduler auf Prüfung des Statusbytes zurückumgestellt (-> Keine Timeouts mehr)
    - xHCI: Nutzt nun Interrupt-Vektor 3 (via MSI)
    - Wechsel zur Kernelkonsole in panic_assert()
    - Bugfix: Pufferüberlauf in usb_createDevice() behoben
    - Bugfix: pci_configWrite_word hat falsches Register beschrieben (MSI funktionieren nun!)

    Anmerkung (29.01.2015): xhci: nur noch attach wird erkannt, detach nicht.


  • Mod

    0.0.4.262 - Rev: 1648

    Format für FAT32 ansatzweise korrigiert. Volume-Name kommt nun an der richtigen Stelle und Verzeichnisse sind leer. Beim Einkopieren von Dateien erfolgen aber noch Fehler.



  • Version 0.0.4.263:

    - FAT: Formattierungscode überarbeitet - Medientyp korrigiert, Parameter an Spezifikation angepasst, schreibe nur soviele Sektoren, wie nötig
    - xHCI: Scratchpad-Allokation korrigiert
    - Diverse Treiber: PCI-Command-Register als WORD geschrieben
    - GUI: Nutze array-Typ
    - Bugfix: Strg+d-Ausgabe korrigiert
    - VM86-Code aufgeräumt
    - Variablendeklarationen etwas aufgeräumt


  • Mod

    0.0.4.264 - Rev: 1650

    xhci.c:
    - xhci_enqueueTransfer repariert (if/else bei linkTRB)
    - Toggle Cycle gesetzt beim linkTRB im TransferRing
    - TransferringBase auf Pagegrenze gesetzt

    Transferring läuft nun sauber im Kreis



  • Version 0.0.4.265:

    - xHCI: Abläufe verbessert, Code aufgeräumt, Setzen/Lesen des Interruptstatus korrigiert
    - OHCI, UHCI: Treiber grundlegend überarbeitet: Unsinn beseitigt, korrektes Warten auf Transferabschluss, Speicherverwaltung begradigt
    - USB: Einige Ausgaben und waitForKeyStroke() entfernt bzw. hinter Diagnoseflags versteckt
    - Bugfix: Timeout-Schleife im EHCI-Async-Scheduler korrigiert
    - Bugfix: Disk-Nummer in Portliste korrigiert


  • Mod

    0.0.4.266 - Rev: 1652

    xhci.h: APICIRQ wieder auf 0 gesetzt, damit alle interrupts ankommen (detach klappt mit 3 nicht!!!). Der Interruptmechanismus via APIC/MSI liefert offenbar noch nicht zuverlässig sämtliche interrupts beim xhci-handler ab (Tests klappen am besten mit APICIRQ 12, da man dann durch Mausbewegung die fehlenden Interrupts hervorlocken kann).

    fat.c: String-Korrektur


  • Mod

    0.0.4.267 - Rev: 1653

    xhci.h: APICIRQ 3
    xhci.c: analog uhci eine poll-Funktion bezüglich Portstatus bei xhci
    devicemanager.c: xhci-poll-Funktion wird nun beim regelmäßigen Drivecheck auch bei xhci aufgerufen


Anmelden zum Antworten