Sourcecode Fortschritt



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

    Frohe 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.

    http://www.redox-os.org/



  • 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


  • Mod

    @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


  • Mod

    Version 0.0.5.128:
    - Problem mit der Shell behoben. Unverständlicher #PF beim Booten auf Testrechner mit eingestecktem Stick in xhci-Port ist weg.
    - Kommentar ergänzt bei disable PIC/enable IOAPIC


Anmelden zum Antworten