Sourcecode Fortschritt
- 
					
					
					
					
 Version 0.0.3.159: - Umbenennungen: usb2 nach usb, USB-Funktionsnamen analog Styleguide und Ausgabe 
 - usbBulkTransfer_t entfernt
 - Anzahl der Retries für fehlgeschlagene Transfers bei allen HC-Typen auf 3 gesetzt
 
- 
					
					
					
					
 version = "0.0.3.160 - Rev: 1361"Formale Änderungen 
 
- 
					
					
					
					
 version = "0.0.3.161 - Rev: 1362"e1000 via cdi-schnittstelle eingebaut (funktioniert noch nicht), vlt. noch falsche Aufruf-Funktion: else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 && PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface { // driver = &network_drivers[...]; // CDI printf("\nIntel Gigabit Ethernet Controller"); e1000_driver_init(); // CDI }
 
- 
					
					
					
					
 Erhard Henkes schrieb: version = "0.0.3.161 - Rev: 1362"e1000 via cdi-schnittstelle eingebaut (funktioniert noch nicht), vlt. noch falsche Aufruf-Funktion: else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 && PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface { // driver = &network_drivers[...]; // CDI printf("\nIntel Gigabit Ethernet Controller"); e1000_driver_init(); // CDI }Nichts mit "vielleicht". Das ist die falsche Funktion. Nächste Aufgabe ist also, herauszufinden, welche Funktion aufgerufen werden soll. 
 
- 
					
					
					
					
 taljeth in #lost: ... bei jedem Treiber das .driver_init aufrufen, und dann für jedes PCI-Gerät die .device_init, bis sich ein Treiber für zuständig erklärt static struct cdi_net_driver driver = { .drv = { .name = DRIVER_NAME, .type = CDI_NETWORK, .bus = CDI_PCI, .init = e1000_driver_init, .destroy = e1000_driver_destroy, .init_device = e1000_init_device, .remove_device = e1000_remove_device, }, .send_packet = e1000_send_packet, };Es fehlt noch: e1000_init_device(/* struct cdi_bus_data* */); // CDIWoher bekommt man diese Daten für struct cdi_bus_data? Beim Aufruf haben wir das korrekte pci device bereits identifiziert mit allen PCI-Daten (bus:device.function). Bei VBox kann man mit der "Intel PRO/1000 MT Desktop" die "e1000" im PCI Scan emulieren. 
 
- 
					
					
					
					
 Version 0.0.3.162: - CDI weitergebaut, läuft nun teilweise 
 -> "Linkermagie" gefixt. Section war falsch angegeben.
 -> Geräte werden nun initialisiert
 -> CDI-List vollständig implementiert, andere Teile weiter implementiert
 - Makefile: Automatischer build aller Unterordner von /kernel
 - Bugfix: Backspace-"Zeichen" wird nicht mehr auf den Bildschirm geschrieben
 - Bugfix: PrettyOS läuft wieder auf Rechnern mit 4 GiB RAM. (Dazu musste die Speicheranordnung geändert werden, damit zugleich eine Optimierung für Rechner mit weniger Speicher möglich bleibt)
 
- 
					
					
					
					
 Version 0.0.3.163: - Bugfix: MAC wird bei CDI-Netzwerkkarten in network_adapter_t-Struktur kopiert 
 
- 
					
					
					
					
 Der via CDI eingebundene e1000-Treiber läuft nun. 
 Test: qemu 0.14.1 browser.elf
 
- 
					
					
					
					
 version = "0.0.3.164 - Rev: 1365"- Wochentag-Formel korrigiert (Alternative: http://de.wikipedia.org/wiki/Gaußsche_Wochentagsformel#4._Allgemeing.C3.BCltige_Formel) 
 - Formale Änderungensiehe auch: http://www.c-plusplus.net/forum/294811-10 
 
- 
					
					
					
					
 version = "0.0.3.165 - Rev: 1366"Wochentag-Formel nochmals überarbeitet: static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; static bool isLeapyear(uint16_t year) { return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)); } static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day) { day += 6; // 1.1.2000 was a saturday day += (year-2000) * 146097.0/400.0 + days[month-1]; if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28))) { day--; } return ( day % 7 + 1 ); }
 
- 
					
					
					
					
 version = "0.0.3.166 - Rev: 1367"(in ckernel.c versehentlich eins zu hoch) Dank an Volkard für seine Hinweise. Damit haben wir nun auch vor 2000 den Wochentag im Griff: static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; static bool isLeapyear(uint16_t year) { return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0)); } // Gregorian calender started 15th October 1582 static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day) { day += 6; // 1.1.1600 was a saturday day += (year/*-1600*/) * 146097.0/400.0 + days[month-1]; if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28))) { day--; } return ( day % 7 + 1 ); }
 
- 
					
					
					
					
 Version 0.0.3.168: - Ordnerstruktur angepasst: 
 -- Ordner tasking und util geschaffen
 - Devicemanager-Schnittstelle verbessert
 
- 
					
					
					
					
 Version 0.0.3.169: - Clang ins Buildsystem vollständig integriert 
 - __unix__ durch Compilererkennung ersetzt (-> Damit "out-of-the-box"-Lauffähig mit GCC 4.5, 4.6 und clang)
 - Ergebnis von calculateWeekday gecacht - Nur noch bei Veränderung des Wochentags aufgerufen
 
- 
					
					
					
					
 version = "0.0.3.170 - Rev: 1370"Formale Änderungen, Arrays in keyboard.c als Tabelle übersichtlich angeordnet 
 
- 
					
					
					
					
 Version 0.0.3.171: - Maustreiber nutzt nun Event-System 
 - Paging-Modul invalidiert TLB-Einträge, wenn das aktive PD verändert wird
 - setjmp "implementiert". Funktioniert leider nicht.
 
- 
					
					
					
					
 Version 0.0.3.172: - %S-Option bei printf (kernel) ergänzt (gibt Größen in Bytes aus) 
 - data.o/asm inkrementell gebaut
 - Größe einer disk wird angegeben bei strg+d
 - Bugfix: Event-Enum im Userspace synchronisiert -> Netzwerk geht wieder
 - Kleinere Optimierungen. U.a.:
 -- htonl und Makros CLEAR_BIT und SET_BIT (neu) als Assembler-"Intrinsics"
 -- Speicher zwischen 0 und 20 MiB mit MEM_NOTLBUPDATE versehen (wird beim Setzen von cr3 nicht aus dem TLB-Cache genommen)
 -- Weitere Funktionen inlined
 
- 
					
					
					
					
 version = "0.0.3.172 - Rev: 1373"irc.c umgestellt auf DNS 
 
- 
					
					
					
					
 Version 0.0.3.173: - Führende 0 bei ftoa ergänzt (basiert nun auf itoa) <-- Das ist sogar standardisiert: http://de.wikipedia.org/wiki/ISO_31-0  
 - getc, fputs, putc, sinh, cosh, tanh implementiert (-> math.h vollständig)
 - Calc überarbeitet (v0.4.0):
 -- Unterstützt nun negative Zahlen, Potenzen und Klammern
 -- Rechnung kann als Kommandozeilenargument übergeben werden
 - IRC verbessert: Server kann beim Start ausgewählt werden
 - Zeitmessung in psort verbessert: Zeit zur Ergebnisprüfung nicht mehr mitgemessen
 - FloppyImage.img nicht mehr gelöscht vorm Build
 - Bugfix: Größenangabe bei Floppysgefixt(1440 KB statt KiB als Ausgangsbasis)
 - Bugfix: pow mit Workaround korrigiert für negative Exponenten
 
- 
					
					
					
					
 Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben. 
 
- 
					
					
					
					
 Erhard Henkes schrieb: Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben. Bug beim Bugfix eingebaut. Wird behoben.