Sourcecode Fortschritt
-
Version 0.0.2.237:
- Grafikschnittstelle implementiert, VBE-Treiber entsprechend angepasst
- VBEShell auf aktuellste Text-Shell-Version aktualisiert (Event-Handling u.a.)
- Events optimiert: Daten, die in 4 Bytes passen, werden im data-Pointer selbst gespeichert (spart Speicherallokationen)
- Heap: Schutz gegen überlauf der placement-Area
- Netzwerkcode (ipv4 und arp) vereinfacht und optimiert (Pufferung eingehender Pakete läuft nun über die todolist)
-
version = "0.0.2.238 - Rev: 1085"
Da irc.elf nicht funktionierte, habe ich die Retransmission aufgrund fehlenden ACKs (rto-Vergleich) deaktiviert.
-
version = "0.0.2.239 - Rev: 1086"
Zeitausgaben (Laufzeit) inkludiert in output nach COM1
-
version = "0.0.2.240 - Rev: 1087"
tcp.c: in tcp_receive korrigiert
-
Version 0.0.2.241:
- TCP überarbeitet, Code vereinfacht
- Makefile wird nun mit --jobs ausgeführt (Multithreading)
-
version = "0.0.2.242 - Rev: 1089"
tcp.c: retransmission due to wrong dup-acks corrected
-
version = "0.0.2.243 - Rev: 1090"
tcp.c: tcp_sendReset(tcpConnection_t* connection, tcpPacket_t* tcp, bool ack, uint32_t length)
-
Version 0.0.2.244:
- Ramdisk nicht mehr an 4 KiB-Grenzen ausgerichtet
- Erstellen und Starten von Tasks getrennt:
-> Race-Condition beim Warten auf VM86-Tasks behoben: Probleme auf bestimmten Systemen mit VBE sollten damit behoben sein
-> Race-Condition beim Erstellen von Tasks mit eigener Konsole behoben: Selten auftretenes Erscheinen von Text in der falschen Konsole sollte damit behoben sein.
- VM86-Monitor überarbeitet
- APM-Code überarbeitet: Läuft nun unter Qemu, Bochs und VBox, nicht aber auf VPC und echter Hardware. Zum Testen Zeile 131 in power_management.c ändern
-
Version 0.0.2.245:
- Bessere logische Trennung zwischen Tasks, Prozessen und Threads (Vorschlag von kosmick):
-> Task: Allgemeine Containerstruktur für Prozesse und Threads
-> Prozess: Task in eigenen Paging-Context
-> Thread: Task im Context des Erstellers, Abhängig vom Ersteller
- Memory-Übersicht erweitert
- Bugfix: Shell-Prozess wird nicht mehr gestartet, wenn Shell.elf nicht gefunden werden konnte
-
version = "0.0.2.246 - Rev: 1093"
DHCP gelingt nun auch unter Emulation mit Qemu.
Foto: http://www.henkessoft.de/OS_Dev/Bilder/DHCP_on_Qemu.PNG
qemu-batch:
del serielleSchnittstelle1.txt qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt
-
version = "0.0.2.247 - Rev: 1094"
list.c kleine Korrektur
-
version = "0.0.2.248 - Rev: 1095"
list.h/c und ring.h/c getrennt.
ring.h/c wird bisher nur in scheduler.c eingesetzt und wurde von MrX speziell dafür entwickelt.
-
Version 0.0.2.249:
- ring.h/c comittet (hat ehenkes vergessen)
- Neuer Interrupt-Code: Mehrfachbelegung von IRQs möglich, Interrupt-Handler mit anderen Prototypen (z.B. für PCI-Geräte oder für CDI) möglich. Benutzung des Interrupt-Status-Bits von PCI erstmal auskommentiert.
-> Es sollten nun mehrere baugleiche Netzwerkkarten zugleich unterstützt werden. Zumindest theoretisch.
- CDI-Implementation deutlich erweitert - Es ist nun möglich, den e1000-CDI-Treiber zu kompilieren und in den Kernel zu linken
-
version = "0.0.2.250 - Rev: 1097"
Netzwerkausgaben arp, dhcp, udp hinter debug (os.h)
-
version = "0.0.2.251 - Rev: 1098"
tcp-Ausgaben hinter debug (os.h: _TCP_DEBUG_)
Screen Photo (PrettyOS emuliert mit qemu. Erfolgreiches DHCP und Ausführung von browser.elf und starwars.elf in eigener jeweils separater Konsole): http://www.henkessoft.de/OS_Dev/Bilder/rev.1098.PNG
-
version = "0.0.2.251 - Rev: 1099"
browser.elf verallgemeinert: Man kann nun eine IP-Adresse (Zahlenwerte) eingeben.
Tipps:
82 100 220 68 goneo.de 65 55 175 254 bing.com 209 85 149 105 google 188 40 141 82 c-plusplus.net
-
Version 0.0.2.252:
- Listen nun doppelt verkettet
- Linkerscript aufgeräumt
- strstr im Userspace implementiert
-
Rev. 1101; 0.0.2.253:
* Workaround DNS Resolver (hack, proof of concept)
Anmerkung (ehenkes):
- browser.c mit Auflösung von Namen (thx to Cuervo)
- TCP beendet manchmal nicht, wenn TCP_DEBUG nicht eingeschlatet ist
-
version = "0.0.2.254 - Rev: 1102"
Experimentelle Version:
- zusätzliche Sicherheits-Timeouts angestoßen bei Übergang zu CLOSE_WAIT und zu FIN_WAIT_1 (nicht schön)
- Leider treten nun vermehrt #PF auf, z.B. beim Erfolgen des Timeouts.
- resolve.php unter tools/ (wurde von Cuervo erstellt)
-
version = "0.0.2.255 - Rev: 1103"
version = "0.0.2.256 - Rev: 1104"
tcp.c: stabiler, aber leider immer noch #PF bei tcp_deleteConnection (erfolgt exakt beim timeout)
Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev.1104_PF.PNG
static void scheduledDeleteConnection(void* data, size_t length) { if ( (*(tcpConnection_t**)data) && (deleteProtection != (*(tcpConnection_t**)data)->ID) ) { tcp_deleteConnection(*(tcpConnection_t**)data); } }