Samstag, 11. April 2009

ReactOS Newsletter #56

Das ReactOS Tam hat am 09.04.2009 einen neuen Newsletter veröffentlicht.
Dieser wurde wieder von Xpert übersetzt.

USB

Der USB-Support hat eine ungewöhnliche Geschichte bei ReactOS. Das ursprüngliche Ziel, den Cromwell USB-Stack zu portieren, wurde abgebrochen und von einem NT4 USB-Stack eines Programmierers aus China ersetzt. Aleksey Bragin versuchte zwar den Linuxstack zu integrieren, aber die Idee wurde verworfen und nun verbesserte er den bestehenden NT4-Stack, der ein paar Mängel aufwies. Ein USB-Maustreiber wurde gehackt, lief allerdings nicht zuverlässig. Jene, die ihn auf ROS getestet haben, können dies bestätigen. Vor kurzem versuchte Aleksey die gleiche Prozedur bei einem USB-Tastatur Treiber und wollte auch gleich noch die LEDs der Tastatur mitsteuern. Diese spezielle Handhabung bedarf auch spezieller Kommunikation zwischen USB-Port und Tastatur und funktioniert anders, als simples Senden von Tastenanschlägen oder Mausbewegungen. Aleksey bemerkte letztendlich, dass der Treiber den Configuration Descriptor des Geräts falsch parste und bemühte ein Haiku Teammitglied, dieses Problem zu beheben. Diese Aktion machte auch das >Hacken<>

Da ReactOS nun über USB-Maus- und USB-Tastaturtreiber verfügt sollte angemerkt werden, dass diese beiden Treiber für den aktuellen USB-Stackt von ReactOS entworfen wurden. USB auf NT5 und aufwärts haben 2 Stacks: PnP und HID. ReactOS unterscheidet sich hiervon grundlegend. Bevor wir einen NT5+ USB Treiber integrieren können, brauchen wir erstmal einen USB-Stack der sich am NT5+ Design orientiert. Diese Methode würde die größtmöglichste Kompatibilität mit externen Treibern sorgen und die Funktionalität gewährleisten, die man von USB gewohnt ist

Netzwerk

Art Yerkes und Cameron Gutman haben sich angestrengt den Netzwerk-Stack besser in Form zu bringen und fehlende Funktionen nachzurüsten. Das Problem war, dass SSL wegen Speicherkorruption nicht benutzt werden konnte. Ein Array von IP-Adressen wird von zwei Funktionen verwaltet und benutzt, AfdGetPeerName und AfdGetSockName. Art glaubte, dass Webseiten die SSL-Funktion zweimal aufrufen um das Zertifikat zu prüfen, was den Fehler erzeugte. Nun ist es möglich auf Webseiten wie die Gmail Loginseite zuzugreifen, wie z. B. Thunderbird, dass auf SSL vertraut.

Art und Cameron erkannten, dass der Programmcode zur Netzwerkschnittstelle in vieler Hinsicht zu komplex war, mit vielen Strukturen, die sehr ähnliche Namen und nur wenig andere Inhalte hatten. Ein typisches Beispiel sind die TDI_ADDRESS_INFO, TDI_ADDRESS_INFORMATION und TRANSPORT_ADDRESS Datenstrukturen. Die Annahme war, dass ein Protokoll mehrere Adressen bei einem Aufruf zurückgeben würde, welches aber nicht normal ist für typische Netzwerksysteme. Alles das sind Teile der definierten Schnittstelle, die nicht geändert werden kann und man muss durch den Code gehen, um sicherzustellen, dass die passende Datenstruktur und das passende Strukturfeld benutzt werden. Manchmal sind die Unterschiede zwischen den Strukturen geringfügig und es kann funktionieren und in bestimmten Situation schwerwiegende Probleme verursachen. Wie auch immer, die beiden müssen sich ordentlich ranhalten.

Testumgebung

Vor einer Weile brachte Christoph von Wittich automatisierte Wine-Tests zum laufen und Alwyn Tan, ein Mitglied der Community, hatte eine vorläufige grafische Oberfläche zum Anzeigen und Vergleichen von Testergebnissen verschiedener Überarbeitungsstufen erstellt. Colin Finck hat an einer dauerhafterern Version mit mehr Funktionen gearbeitet. Die neue webbasierte Oberfläche erlaubt das Vergleichen der Ergebnisse von bis zu fünf verschiedenen Builds sowie nur die dazwischen veränderten Ergebnisse zu betrachten. Außerdem wurde der Buildbot, der benutzt wird um die Tests zu kompilieren und durchzuführen, aktualisiert. Das Programm rosautotest wurde von Colin so umgeschrieben, dass es die Tests neu starten kann wenn ReactOS abgestürzt ist. Kombiniert mit dem Aufwand , den Stefan Ginsberg hatte um die Tests zu umgehen, die dafür bekannt sind ReactOS zum Absturz zu bringen, können wir ziemlich sicher sein, dass ReactOS durch die gesamte Testreihe gehen wird anstatt nach einem Absturz aufzuhören. Falls einige von euch mit dem Test Manager spielen wollen, befindet er sich auf dem Test Server unter dieser Addresse.

Keine Kommentare:

Kommentar veröffentlichen