Sourcecode Fortschritt
-
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
-
version = "0.0.2.227 - Rev: 1074"
list_insert(list_t* list, element_t* next, void* data) hinzugefügt
Vorbereitung für den Übertrag vom noch zu schaffenden Out-of-Order Receive In-Buffer zum regulären In-Buffer.
-
version = "0.0.2.228 - Rev: 1075"
tcpRCV_t ergänzt um: uint32_t ACKforDupACK // Speicher für letztes in Serie eingegangenes Paket, wird bei Lücke verwendet. Damit wurde das Dup-ACK Procedere korrigiert, sodass nun das korrekte ACK wiederholt wird. Die Sendung wird aber vom Sender nicht immer zeitnah (oder garnicht?) beachtet.
Gutes Testmodell: starwars.elf, weil von dort massenweise Pakete in korrekter Serie erscheinen sollen, der ideale Testserver für Dup-ACK.
TODO: Sortiervorgang aufbauen bei falscher Eingangsreihenfolge, wenn das, mittels Duplicate ACK angeforderte, fehlende frühere Paket in tcp_receive(...) erscheint oder bei Paketversetzungen durch Überholvorgänge über verschiedene Routen durchs Internet. Liste für Out-of-Order RCV Buffer schaffen.
-
version = "0.0.2.229 - Rev: 1076"
tcp modul weiter entwickelt: Out-of-Order-Buffer List geschaffen
(Zahlen im serial_log bei ACK auf SYN ACK sind falsch, in wireshark aber ok. Ursache?)
-
version = "0.0.2.230 - Rev: 1077"
Ausgabefehler im serial_log korrigiert.
-
version = "0.0.2.231 - Rev: 1078"
tcp.c:
Statische Funktion tcp_timeoutDeleteConnection(tcpConnection_t* connection, uint32_t timeMilliseconds) zur Vereinfachung/Kapselung geschaffen.
-
version = "0.0.2.232 - Rev: 1079"
Fehler in tcp.c behoben. timeouts korrigiert. tcp_prepare_send_FIN gelöscht.
Anzeige:printf("\nconnection ID %u will be deletetd at %u sec runtime.", connection->ID, (timeMilliseconds + timer_getMilliseconds()) / 1000);
-
version = "0.0.2.233 - Rev: 1080"
tcp.c: tcp_sendFin(tcpConnection_t* connection)
Bsp.:
case CLOSE_WAIT: tcp_sendFin(connection); connection->TCP_CurrState = LAST_ACK; tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl); break;