pci.c z.155 die rückgabe von pci_config_read() ist doch ein uint32_t?



  • tatsächlich, pedantic ist nicht drin in unseren Flags... Danke für den Hinweis, XanClic.

    Vlt sollten wir über einen anderen Compiler mal nachdenken (Clang vlt.). Ich werd da mal rumprobieren...



  • Mr X schrieb:

    Vlt sollten wir über einen anderen Compiler mal nachdenken (Clang vlt.). Ich werd da mal rumprobieren...

    Das wird schwierig, wegen Inline-Assembler 🙂



  • Das fürchte ich auch...



  • pedantic geht nicht... Er warnt zwar jetzt vor mehr sachen (u.a. Konversion von Fkt-Ptr. nach void*), aber dafür warnt er auch vor GCC-Extensions (ein weiteres Portierungshindernis, btw.), die unser ehci-Treiber nutzt.

    EDIT: Und Wconversion warnt tatsächlich vor der Konversation mit Datenverlustgefahr...



  • also mein spontaner gedanke war, dass der pci_config_read() ohne das verunde im unteren teil immer ein uint32_t hergibt. das sollte von der performance auch nicht schlechter sein. also wieso nicht im ersten schritt gleich vendorId und deviceId einlesen (in ein struct) und dann auf if(myPciStruct.vendorId == 0xFFFF) testen dann müßte man im fall das man ein pci-device gefunden hat nicht nochmal deviceId einlesen. wenn man keins gefunden hat dann hat man es zwar umsonst eingelesen, aber das dürfte performance mäßig nicht schlechter sein da ja der bus eh schon die 32bit hergibt.

    lg lolo



  • Mr X schrieb:

    EDIT: Und Wconversion warnt tatsächlich vor der Konversation mit Datenverlustgefahr...

    Bei solchen Stellen im Code ist es interessant, warum die Software funktioniert...
    Mit splint könnte man noch weitere Fehler aufdecken, irgendwo habe ich mal gehört, 1 Fehler pro 6 Codezeilen o.ä. - unglaublich, aber wahr 😉



  • abc.w schrieb:

    1 Fehler pro 6 Codezeilen o.ä. - unglaublich, aber wahr...

    die faustregel lautet:

    1/ksloc bei komerzieller software
    0.3/ksloc bei open source

    😉

    lg lolo



  • noob_lolo schrieb:

    1/ksloc bei komerzieller software
    0.3/ksloc bei open source

    Kann sein... aber wo gibt es dazu Statistiken?



  • abc.w schrieb:

    noob_lolo schrieb:

    1/ksloc bei komerzieller software
    0.3/ksloc bei open source

    Kann sein... aber wo gibt es dazu Statistiken?

    PS: Ne, kann nicht sein, das ist viel zu optimistisch 🙂 Wäre aber natürlich schön...



  • Ich hab das grad mal ausprobiert mit Splint und das kommt gar nicht durch den Code durch. Es stößt sich erst an den va_args builtins von gcc. Danach scheint es an jeder Stelle, wo "void* variablenname = ..." nicht am Anfang einer Funktion steht, mit einem parse error zu stoppen.


Anmelden zum Antworten