Sourcecode Fortschritt



  • 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


  • Mod

    version = "0.0.2.250 - Rev: 1097"

    Netzwerkausgaben arp, dhcp, udp hinter debug (os.h)


  • Mod

    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 🙂


  • Mod

    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


  • Mod

    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)


  • Mod

    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);
    	}
    }
    

  • Mod

    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


  • Mod

    version = "0.0.2.261 - Rev: 1109"

    - srand nur einmal in ckernel.c ist ok
    - rand() im Kernel repariert


  • Mod

    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


  • Mod

    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


  • Mod

    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.


  • Mod

    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
    

  • Mod

    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.


  • Mod

    version = "0.0.2.270 - Rev: 1119"

    Netzwerkkarten-Modul rtl8139.c erfolgreich korrigiert. Nun ist man nicht mehr gezwungen, auf pcnet auszuweichen.


  • Mod

    version = "0.0.2.271 - Rev: 1120"

    - tcp.c: SND.UNA korrigiert bei ACK im passiven 3-way-handshake
    - timer.h: System-Frequenz wieder auf 100 Hz eingestellt (war versuchsweise bei 10 Hz)
    - Kleinigkeiten


Anmelden zum Antworten