Sourcecode Fortschritt
-
version = "0.0.2.206 - Rev: 1052"
- Verbesserte Version für RTT
-
Version 0.0.2.207:
- tcp_findConnection verbessert: Mit tcp_findConnectionListen zusammengeführt, beachtet beim passiven Verbinden die Angabe des Ports
- Angefangen, lastPacket zu entfernen. Nur noch der derzeit nötige Teil ist vorhanden
- Zahlreiche Codestyle-Anpassungen. Bitte Styleguide beachten: Leerzeichen statt Tabs, keine Leerzeichen am Zeilenende.
-
version = "0.0.2.208 - Rev: 1054"
- RTO wird bestimmt nach RFC 2988 und aufgerundet auf 1000 msec (typische RTT sind ca. 100 ms ins Internet)
- #define SYSTEMFREQUENCY 100 in timer.h (nicht mehr versteckt in ckernel.c)
-
version = "0.0.2.209 - Rev: 1055"
- retransmission eingefügt (rfc2988)
version = "0.0.2.210 - Rev: 1056"
- Fehler korrigiert bei retransmit (seq.nxt anstelle alte seq wurde in tcp_send geschickt)
version = "0.0.2.211 - Rev: 1057"
- Testwert für RTO in tcp.c entfernt. Jetzt wieder check auf time > RTO.
-
version = "0.0.2.212 - Rev: 1058"
Vereinfachungen im Code von tcp.c, z.B. send_ACK(...)
-
version = "0.0.2.213 - Rev: 1059"
- Fehler in RTO calculation (in letzter Versioin versehentlich eingebaut) wieder behoben
-
version = "0.0.2.214 - Rev: 1060"
- Eigenen tcp-Log auf die serielle Schittstelle 1 implementiert, der empfangene und gesendete Pakete mit relativen seq-/ack-Numbers dokumentiert
- Fehler korrigiert (mit Hilfe des serial Logs aufgefallen!)Einfügen in qemu-Batch: -serial file:serielleSchnittstelle1.txt (nicht com1.txt verwenden. Das wird bereits unsichtbar verwendet, kann also nicht erstellt werden.)
Bsp. mit "browser":
send: SYN seq: 0 seq nxt: 1 recv: SYN ACK seq: 0 rcv nxt: 1 ack: 1 send: ACK seq: 1 seq nxt: 1 ack: 1 SND.UNA: 0 send: ACK seq: 1 seq nxt: 82 ack: 1 recv: ACK PSH seq: 1 rcv nxt: 248 ack: 82 SND.UNA: 82 send: ACK seq: 82 seq nxt: 82 ack: 248 recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82 send: ACK seq: 82 seq nxt: 82 ack: 755 recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82 send: ACK seq: 82 seq nxt: 82 ack: 755 send: RST seq: 82 seq nxt: 82
Reihenfolge der Pakete stimmt so wie oben (dort manuell sortiert) in der Ausgabe noch nicht, liegt noch am Sourcecode, da wir dort noch sofort senden, den serial_log gebe ich erst am Ende der tcp_receive aus. Sollte noch sinnvoll umgebaut werden. Die Abläufe funktionieren noch nicht komplett RFC793ff. konform.
-
version = "0.0.2.215 - Rev: 1061"
- tcp structs und abläufe weiter optimiert (Paket-Reihenfolge kommt nun richtig)
-
Version 0.0.2.216:
- Unterstützung für PE-Dateien implementiert
- VM86-Tasks haben nun ein eigenes PD -> Mehrere VM86-Tasks mit gleicher virtuellen Adresse (0x100) sind nun möglich
- waitForEvent implementiert, Als syscall eingeführt, in Userprogrammen genutzt
- RTO-Formel korrigiert (Klammern falsch gesetzt)
- Kleinigkeiten. U.a. Include-Gruppierung in ckernel.c überarbeitet
-
version = "0.0.2.217 - Rev: 1063"
Kleine Korrekturen in tcp.c
-
version = "0.0.2.218 - Rev: 1064"
//serial.h: static inline void serial_logUINT(uint8_t com, uint32_t num) static inline void serial_logINT (uint8_t com, int32_t num)
Anwendung in tcp.c (vereinfachter code)
-
Version 0.0.2.219:
- serial_log verhält sich nun analog zu printf
- Code von network.h/usb_hc.c nach pci.c verlegt
- Bugfix: Memoryleak beim löschen von eventqueues beseitigt
- Bugfix: Freetimetask nimmt nun keine events mehr an
- Verbesserungen am heap (placementMalloc in Funktion ausgelagert, unnötigen code hinter _MALLOC_FREE_ versteckt)
-
version = "0.0.2.220 - Rev: 1066"
- starwars darstellung optimiert (Folge ESC,[,H als Bildtrenner nach clearScreen übersetzt und RU (bedeutung?) gelöscht)
- region_t nun als packed (spart 2 byte)
-
version = "0.0.2.220 - Rev: 1067"
- Fehler in starwars.c korrigiert (das RU entstammt der MAC des qemu gateway???)
-
version = "0.0.2.221 - Rev: 1068"
Weitere Korrekturen in tcp.c (ports nun zufällig zwischen 49152 und 65535)
-
version = "0.0.2.222 - Rev: 1069"
- Im Heap gespeicherte tcp In/Out-Pakete werden beim Schließen gelöscht (Test: Browser klappt)
- Anmerkung: ge-ackte Pakete in der out-Liste werden nun sofort vollständig gelöscht (nicht erst beim Schließen). In den vorhergehenden Versionen wurde nur das Listenelement gelöscht, ohne die Struct und die Daten zu löschen (üble Fehlerquelle).
-
version = "0.0.2.223 - Rev: 1070"
tcp.h/c: msl (maximum segment lifetime) eingebaut in connection->tcb und auf 10 sec gesetzt in createConnection(...)
-
Version 0.0.2.224:
- memcpyr geschaffen (optimiert mit rep movsl), genutzt durch memmove. -> memmove optimiert.
- kheap nutzt nun memmove statt for-Schleife
- CPU-Cache in kernel.asm aktiviert (Bits 30 und 29 in CR0 gelöscht)
- todolist enthält nun timer-ähnliche Funktion
-
version = "0.0.2.225 - Rev: 1072"
Neue timer-Funktion verwendet im tcp-Prozess. Allerdings sind da noch Fehler im Ablauf im ACTIVE CLOSE Ablauf (qemu, irc). In FIN_WAIT_2 kommt ein ACK PSH und nicht das erwartete FIN. TODO: analysieren.
-
version = "0.0.2.226 - Rev: 1073"
Duplicate ACK Empfang / Senden in tcp.c versuchsweise ergänzt