On Tue, 2005-12-13 20:26:41 +0100, Florian Reitmeir <florian@reitmeir.org> wrote: > > > DMA Zugriffe werden im Linuxkernel nicht von den Modulen gemacht, sondern vom > > > PCI Layer. > > pci_set_dma_mask() bekommt ein struct pci_dev * übergeben. Hoffentlich > > hat sich die Struktur nicht geändert, sodaß die falschen Felder vom > > befüllt werden... > selbst wenn man mit dem Compiler den Code extremst optimiert, ist es sehr > sehr unwahrscheinlich, dass Datenstrukturen sich dabei aendern. Mit -Os bittest Du um Optimierung nach Größe, da ist das Ändern aller allignments auf 1 (sodaß auch ein int32 auf einer 32bit-Architektur nur Byte-aligned ist) mit eines der ersten Dinge, die man da so tun kann, insbesondere, wenn die Architektur bei unaligned access nicht gleich trapt... > Bei allem Willen, ich kann wirklich nicht verstehen welche Probleme Du > meinst. Objekt Files welche beim Kompilieren von C Programmen entstehen sind > bei weitem nicht so "instabil" und "unberechenbar" wie Du in der Mail glauben > machen willst. Und es aendern sich auch keine Datenstrukturen da ja der > Kernel der gleiche ist. Im Userland wird hinter den Mauern verdammt viel dafür getan, daß die ABI erhalten bleibt, egal, wie man das libc-Interface zu verbiegen versucht. Spiel doch mal mit verschiedenen Varianten von -O6, -Os, -funsigned-char etc. zu. Da hast Du dann so nette Effekte, wie, daß in einem .o-File ein float-Vergleich mit == 0.0 funktioniert, in einem anderen nur, wenn absl(value) <= 1.0e-50 benutzt wird (...weil einmal direkt mit FP-Registern verglichen wird, die intern eine größere Auflösung haben können und einmal mit einem aus dem RAM geladenen Wert...). Das sind dann die spannenden Fälle, wo es manchmal funktioniert und man dann suchen darf :) ...und wie gesagt, so unterschiedliches Verhalten kann man erreichen, nur indem man von außen Compiler-Optionen ändert. Oder (gerade ein beispiel von letzte Tage), implementier' mal eine Funktion namens sinl() und bau' die nicht mit -fno-builtin, da kommen auch lustige Dinge bei heraus... > Ich bastle wirklich viel an meinen Kerneln, Lokal und ab und zu wenn es > notwenig ist auch bei Produktionssystemen. Datenkorruption hatte ich bisher > nur 2x, einmal beim Einsatz von Reiser3 und einmal mit JFS. JFS hatte nen > echten Bug, welcher einen Tag spaeter schon gefixt wurde. Reiser3 ist meiner > Meinung nach ein Bug. Wie gesagt, Glück gehabt (oder zu wenig Tester). > Was ich sagen wollte, durch Kernelmodule, extern gebaut. Hatte ich wirklich > noch nie Probleme. (abgesehen davon, dass es ab und zu schwer ist sie > ueberhaupt zu bauen). ...und weil die so unproblematisch sind, hat man kernel-seitig die taint-Flags eingeführt. MfG, JBG -- Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481 _ O _ "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O für einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
Attachment:
signature.asc
Description: Digital signature