| Zeile 21: | Zeile 21: | ||
:::Diese Meldung basiert aber nicht auf der if-Abfrage, wobei ich auch nicht erklären kann, wieso die immer kommt… Die Abfrage selbst hingegen sehe ich nicht als falsch an, das höchste Bit muss immer gesetzt sein (es wurde ja 0xFFFFFFF0 reingeschrieben, wäre das höchste Bit nicht gesetzt, dann müsste der Bereich ja 4 GB groß sein (was bei 32 Bit merkwürdig wäre), soweit ich das sehe), das niedrigste Bit sollte eben spätestens 0x80000000 sein (gut, erübrigt sich durch die erste Abfrage) und die dritte sorgt dafür, dass es ein gültiges Speicher-BAR ist (die unteren vier Bit dürfen nicht beschreibbar sein, afaik). Ich probiere den Code mal selbst aus (wie auch immer) und sehe dann weiter. —[[Benutzer:XanClic|Clici McXan]] 22:25, 22. Jul. 2010 (CEST) | :::Diese Meldung basiert aber nicht auf der if-Abfrage, wobei ich auch nicht erklären kann, wieso die immer kommt… Die Abfrage selbst hingegen sehe ich nicht als falsch an, das höchste Bit muss immer gesetzt sein (es wurde ja 0xFFFFFFF0 reingeschrieben, wäre das höchste Bit nicht gesetzt, dann müsste der Bereich ja 4 GB groß sein (was bei 32 Bit merkwürdig wäre), soweit ich das sehe), das niedrigste Bit sollte eben spätestens 0x80000000 sein (gut, erübrigt sich durch die erste Abfrage) und die dritte sorgt dafür, dass es ein gültiges Speicher-BAR ist (die unteren vier Bit dürfen nicht beschreibbar sein, afaik). Ich probiere den Code mal selbst aus (wie auch immer) und sehe dann weiter. —[[Benutzer:XanClic|Clici McXan]] 22:25, 22. Jul. 2010 (CEST) | ||
::::Ich habe den Code auch mal unverändert getestet und da ließ er sich nichteinmal kompilieren. Es gibt immer die Meldung von GCC pci.c:158: error: invalid operands to binary + (have 'pci_bdf_t' and 'int') Das ist hier die Zeile 119 "const uint32_t barHighValue = pci_config_readd(addr+4,barOffset); // und wieder zurücklesen" --[[Benutzer:Programm Noob|Programm Noob]] 22:36, 22. Jul. 2010 (CEST) | ::::Ich habe den Code auch mal unverändert getestet und da ließ er sich nichteinmal kompilieren. Es gibt immer die Meldung von GCC pci.c:158: error: invalid operands to binary + (have 'pci_bdf_t' and 'int') Das ist hier die Zeile 119 "const uint32_t barHighValue = pci_config_readd(addr+4,barOffset); // und wieder zurücklesen" --[[Benutzer:Programm Noob|Programm Noob]] 22:36, 22. Jul. 2010 (CEST) | ||
| + | ::::Das mit dem höchsten Bit sehe ich ein. Aber die zweite Alternative führt eben genau dann zur Fehlermeldung, weil das unterste Bit nicht 0x80000000 (also lowestBit > 31) ist. --[[Benutzer:Jidder|Jidder]] 22:42, 22. Jul. 2010 (CEST) | ||