Sourcecode Fortschritt
-
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); } }
-
version = "0.0.2.257 - Rev: 1105"
version = "0.0.2.258 - Rev: 1106"
#PF durch multiple deleteConnection mittels Variable "deleteProtection" endlich besiegt.
Warum sind die Verbindungen bei einer Wiederholung so langsam?
Anmerkung: Nun kommen neue #PF (browser.elf, aber auch vom kernel, nun aber nicht mehr tcp_deleteConnection)
-
Version 0.0.2.259:
- Protection-Hack durch list_find ersetzt
- Code aus browser.c, userlib.c und tcp vereinfacht
- srand jetzt einmal beim Start und anschließend nicht mehr aufgerufen
-
Rev. 1108 (0.0.2.260):
* Shell makefile und shell.c aktualisiert (helptext)
* DNS Resolver verhübscht
-
version = "0.0.2.261 - Rev: 1109"
- srand nur einmal in ckernel.c ist ok
- rand() im Kernel repariert
-
version = "0.0.2.262 - Rev: 1110"
Interface zwischen user app und tcp-Modul beim Senden erweitert um sendBuffer, um Datenmengen, die größer MSS bzw. connection->tcb.RCV.WND sind, segmentiert versenden zu können.
TODO: segmentation / buffering / steering data flow
-
Version mit sendBuffer zum Testen (Tester: Cuervo, ehenkes):
version = "0.0.2.263 - Rev: 1111" (Fehler)
version = "0.0.2.264 - Rev: 1112" (Fehler: 2. abgeschnittenes Paket kommt nicht an)
version = "0.0.2.265 - Rev: 1113" (funktioniert, man muss nur noch alle Pakete im sendBuffer "flushen" mittels dummy schicken.)version = "0.0.2.266 - Rev: 1114" ("flush" des sendBuffer erfolgt nun ohne dummy senden.)
Mit dem Programm rt.elf kann man beispielhaft testen (schickt langen lateinischen Text "lorum ipsum").
memshow (util.c) wurde erweitert mit bool alpha, sodass man wahlweise auch Texte zeigen kann (siehe auskommentierten Code in tcp_usend).
PrettyOS ist Server (passive open):
cmd: telnet 127.0.0.1 8080 (client erhält den Text)
qemu-batch:
del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=rtl8139 -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt
-
version = "0.0.2.267 - Rev: 1115"
- ESC+h auf serial output umgeleitet (inzwischen zu groß)
Aktuell auf dem Heap nach dem Start:
---------------- HEAP REGIONS ---------------- address size number comment C0000000h 00000008h 1 mutex C0000008h 00000008h 2 listHead C0000010h 0000000Ch 3 event_queue C000001Ch 00000008h 4 mutex C0000024h 00000008h 5 listHead C000002Ch 0000000Ch 6 listElement C0000038h 0000000Ch 7 listElement C0000044h 00000008h 8 ring C000004Ch 00000008h 9 ring C0000054h 00000008h 10 ring-element C000005Ch 00000008h 11 listHead C0000064h 00000004h 13 todoList C0000068h 00000008h 14 listHead C0000070h 00001CD8h 15 thread-console C0001D48h 0000000Ch 16 console-name C0001D54h 00000008h 17 listHead C0001D5Ch 00000008h 18 mutex C0001D64h 00000048h 19 task_t C0001DACh 00001000h 20 task-kernelstack C0002DACh 0000000Ch 21 listElement C0002DB8h 0000000Ch 22 listElement C0002DC4h 00000008h 23 listHead C0002DCCh 0000000Ch 24 listElement C0002DD8h 0000000Ch 25 event_queue C0002DE4h 00000008h 26 mutex C0002DECh 00000008h 27 listHead C0002DF4h 00000008h 28 ring-element C0002DFCh 0000006Ch 29 FPUptr C0002E68h 00000008h 30 listHead C0002E70h 0000005Ch 31 pciDev_t C0002ECCh 0000000Ch 32 listElement C0002ED8h 0000005Ch 33 pciDev_t C0002F34h 0000000Ch 34 listElement C0002F40h 0000005Ch 35 pciDev_t C0002F9Ch 0000000Ch 36 listElement C0002FA8h 0000005Ch 37 pciDev_t C0003004h 0000000Ch 38 listElement C0003010h 0000005Ch 39 pciDev_t C000306Ch 0000000Ch 40 listElement C0003078h 0000005Ch 41 pciDev_t C00030D4h 0000000Ch 42 listElement C00030E0h 00000034h 43 network apdapter C0003114h 00000008h 44 listHead C000311Ch 00000014h 45 arp entry C0003130h 0000000Ch 46 listElement C000313Ch 00000014h 47 arp entry C0003150h 0000000Ch 48 listElement C000315Ch 00000018h 49 RTL8139 C0003174h 00002000h 50 RTL8139-RxBuf C0005174h 00001000h 51 RTL8139-TxBuf C0006174h 00000008h 52 listHead C000617Ch 0000000Ch 53 listElement C0006188h 00000030h 60 flpydsk-FDD C00061B8h 00000008h 61 mutex C00061C0h 00000038h 63 flpydsk-Disk C00061F8h 00000048h 64 task_t C0006240h 0000000Ch 66 listElement C000624Ch 0000000Ch 67 listElement C0006258h 00000028h 68 partition_t C0006280h 00000200h 69 part->buffer C0006480h 00000028h 70 FAT_partition_t C00064A8h 00000008h 71 part->serial C00064B0h 000000B8h 73 initrd-root C0006568h 000000B8h 74 initrd-dev C0006620h 00000170h 75 initrd-rootnodes C0006790h 00000028h 76 initrd-part C00067B8h 00000008h 77 initrd-partdata C00067C0h 00000010h 79 initrd-partserial C00067D0h 00000048h 83 task_t C0006818h 0000000Ch 85 listElement C0006824h 0000000Ch 86 listElement C0006830h 0000000Ch 87 event_queue C000683Ch 00000008h 88 mutex C0006844h 00000008h 89 listHead C000684Ch 00000008h 90 ring-element C0006898h 00000010h 57 todoList_task_t C00068D4h 00000010h 115 todoList_task_t C0006B08h 00002400h 62 flpydsk-TrackBuffer C0008F08h 00001000h 65 task-kernelstack C0009F08h 00200000h 72 initrd-RAMD-start C0209F08h 00000200h 78 initrd-partbuffer C020CE40h 00000010h 111 todoList_task_t C020CE6Ch 00000010h 105 todoList_task_t C020E000h 00002004h 81 pag-userPD C0211000h 00001000h 82 pageTable C0212000h 00001000h 84 task-kernelstack ---------------- HEAP REGIONS ----------------
- tcp.c serial output optimiert, z.B. connection-ID integriert (da inzwischen mehrere connections parallel laufen)
Anmerkung: Dup-Acks kommen zum Teil nicht von uns, da wir mit Qemu gekapselt laufen. Qemu greift leider ein mit Dup-Acks und tcp-Options.
-
Rev. 1116 - 0.0.2.268:
* rctl.c: Remote Control als User-Programm hinzugefügt
Rev. 1117:
* Updated rctl.c
Anmerkung (ehenkes):
http://127.0.0.1:8080/ <--- im Browser eingeben und -redir tcp:8080::80 in Qemu.
-
Wichtig: in Qemu -net nic,model=pcnet einstellen. Mit der rtl8139 gibt es massive Probleme ab der zweiten Verbindung.
TODO: Tatsache ist, dass es auch beim Test-PC sehr langsam war. Das deutet auf einen Fehler im rtl8139 Treiber hin.
del serielleSchnittstelle1.txt qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=pcnet -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt
-
version = "0.0.2.269 - Rev: 1118"
rtl8139.h/c etwas verändert. Fehler aber noch nicht gefunden. Die Frage ist daher noch offen, ob der Fehler dort im Modul liegt.
-
version = "0.0.2.270 - Rev: 1119"
Netzwerkkarten-Modul rtl8139.c erfolgreich korrigiert. Nun ist man nicht mehr gezwungen, auf pcnet auszuweichen.