Diskussion:Peripheral Component Interconnect — Änderungen 7991 → 7992

Zeile 28: Zeile 28:
 
::::Ich habe es jetzt in qemu getestet (echte Hardware geht gerade nicht), sieht funktionierend aus. Kompiliert mit -Wall -Wextra -pedantic -std=gnu99. Wobei das offensichtlich ein Fehler da ist, das +4 muss wohl eher ans barOffset (und die Aussage „das war der Test, ob ihr auch alle aufpasst“ wäre gar nicht so falsch ^^). —[[Benutzer:XanClic|Clici McXan]] 22:48, 22. Jul. 2010 (CEST)
 
::::Ich habe es jetzt in qemu getestet (echte Hardware geht gerade nicht), sieht funktionierend aus. Kompiliert mit -Wall -Wextra -pedantic -std=gnu99. Wobei das offensichtlich ein Fehler da ist, das +4 muss wohl eher ans barOffset (und die Aussage „das war der Test, ob ihr auch alle aufpasst“ wäre gar nicht so falsch ^^). —[[Benutzer:XanClic|Clici McXan]] 22:48, 22. Jul. 2010 (CEST)
 
Allgemein was zu dem Code: Was soll der hier? Mit den ganzen Fehlermeldungen sieht das danach aus, als würde da ein Test der Hardware auf Funktionsfähigkeit durchgeführt werden. Solche Dinge gehören meiner Meinung nach nicht an diesen Platz, der Artikel ist eh schon ziemlich geschwätzig. --[[Benutzer:Jidder|Jidder]] 22:55, 22. Jul. 2010 (CEST)
 
Allgemein was zu dem Code: Was soll der hier? Mit den ganzen Fehlermeldungen sieht das danach aus, als würde da ein Test der Hardware auf Funktionsfähigkeit durchgeführt werden. Solche Dinge gehören meiner Meinung nach nicht an diesen Platz, der Artikel ist eh schon ziemlich geschwätzig. --[[Benutzer:Jidder|Jidder]] 22:55, 22. Jul. 2010 (CEST)
 +
:Du kennst die PCI-Spec? Wenn man PCI ordentlich benutzen möchte gibt es da eine ganze Menge zu beachten, das die meisten hier sich nicht dafür interessieren liegt schlicht daran das auf einem normalen PC das BIOS sich um all das kümmert und gute Boot-Loader dem OS nur noch ne simple Liste mit den (vom BIOS) zugewiesenen Ressourcen präsentieren. Ich habe nichts dagegen wenn der Artikel (der wirklich schon recht umfangreich ist obwohl so wichtige Dinge wie Bridges noch gar nicht richtig erklärt werden) in zwei Teile gesplittet wird. Einmal eine Kurzfassung für diejenigen die dem BIOS bzw. Boot-Loader vertrauen und einmal eine Langfassung für all jene die die Möglichkeiten des PCI wirklich nutzen wollen oder gar selber enumerieren wollen/müssen. Wenn der Code zu umfangreich ist habe ich nichts dagegen wenn er gekürzt wird. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 15:21, 23. Jul. 2010 (CEST)
  
 
Der große Beispielcode ist von mir und wurde bei mir tatsächlich weder kompiliert noch getestet (das habe ich damals im IRC auch deutlich gesagt und um Tests gebeten), ich habe den Buchstabengetreu nach der PCI-Spec geschrieben. Das der so gründlich testet liegt daran das ich schon oft PCI-Devices gesehen hab die sich nicht ganz an die Spec halten, falls das wirklich zu einem Problem wird dann versuche ich das ganze etwas zu entschärfen. Ich wollte das der Code '''alle''' Möglichkeiten gründlich abtestet. Wenn die Meldung "FEHLER : 32Bit-Memory-BAR %u enthält keine beschreibbaren Adressbits!\n" kommt dann bedeutet dass das in einem unbenutztem BAR das prefetchable-Bit gesetzt ist und das darf eigentlich nicht sein ist aber auch kein so schwerwiegender Fehler (@Jidder: schick mir doch mal die eine passende lspci-Aufgabe von den betreffenden Geräten dann schau ich mal wie ich den Code am geschicktesten verbessere). Wenn gewünscht mache ich daraus ein Warning ;) . Die +4 war tatsächlich an der falschen Stelle, sorry. Das die 'while( ( value & mask ) != 0 )' gegen 'while (!(value & mask))' ausgetauscht wurden finde ich persönlich nicht besonders gut, ich bevorzuge es nur auf Dinge zu testen die eindeutig TRUE oder FALSE ergeben. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 10:19, 23. Jul. 2010 (CEST)
 
Der große Beispielcode ist von mir und wurde bei mir tatsächlich weder kompiliert noch getestet (das habe ich damals im IRC auch deutlich gesagt und um Tests gebeten), ich habe den Buchstabengetreu nach der PCI-Spec geschrieben. Das der so gründlich testet liegt daran das ich schon oft PCI-Devices gesehen hab die sich nicht ganz an die Spec halten, falls das wirklich zu einem Problem wird dann versuche ich das ganze etwas zu entschärfen. Ich wollte das der Code '''alle''' Möglichkeiten gründlich abtestet. Wenn die Meldung "FEHLER : 32Bit-Memory-BAR %u enthält keine beschreibbaren Adressbits!\n" kommt dann bedeutet dass das in einem unbenutztem BAR das prefetchable-Bit gesetzt ist und das darf eigentlich nicht sein ist aber auch kein so schwerwiegender Fehler (@Jidder: schick mir doch mal die eine passende lspci-Aufgabe von den betreffenden Geräten dann schau ich mal wie ich den Code am geschicktesten verbessere). Wenn gewünscht mache ich daraus ein Warning ;) . Die +4 war tatsächlich an der falschen Stelle, sorry. Das die 'while( ( value & mask ) != 0 )' gegen 'while (!(value & mask))' ausgetauscht wurden finde ich persönlich nicht besonders gut, ich bevorzuge es nur auf Dinge zu testen die eindeutig TRUE oder FALSE ergeben. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 10:19, 23. Jul. 2010 (CEST)
 
:„!x“ entspricht imho exakt „x == 0“ (das != war da eher nicht angebracht, soweit ich das erkennen kann)… —[[Benutzer:XanClic|Clici McXan]] 13:56, 23. Jul. 2010 (CEST)
 
:„!x“ entspricht imho exakt „x == 0“ (das != war da eher nicht angebracht, soweit ich das erkennen kann)… —[[Benutzer:XanClic|Clici McXan]] 13:56, 23. Jul. 2010 (CEST)
 +
::Bei '(value & mask)' kommt aber ein uint32_t raus (weil beide Werte eben diesen Types sind) und damit kein Boolean, bei mir meckert der gcc soetwas normalerweise an. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 15:21, 23. Jul. 2010 (CEST)