Toon posts:

[c] Alle PCI devices

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor school moet ik een opdracht maken dat een lijstje maakt van alle PCI devices in het systeem. Ik heb het al een beetje afgekeken van pci.txt in /usr/doc/linux. Ik moet het onder Linux maken [met gcc compilen dus], maar ik krijg telkens een 'parse error before {'. Nouwja, kijk zelf maar even

C:
1
2
3
4
5
6
7
8
9
10
11
#include <linux/pci.h>

int main()
{
   struct pci_dev *dev;
   pci_for_each_dev(dev)
   {
        /* print de naam van dev */
   }
   return 0;
}

[ Voor 5% gewijzigd door .oisyn op 21-03-2003 13:04 ]


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Haal 'm eens door de preprocessor heen zonder 'm te compilen? Dan kun je zien wat die macro's exact doen... Waarschijnlijk gebruik je een macro op de verkeerde manier.

Localhost, sweet localhost


Verwijderd

Topicstarter
Hmm, zal het later even doen. ben nu niet thuis nl. Maar als ik op Google zoek naar pci_for_each_dev vind ik het overal op deze manier.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

tip: zet je code voortaan tussen [code]...[/code] of [code=taal]...[/code] tags :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
ik heb em net even geprobeerd te compilen met de -E optie [preprocessor alleen dus]. Hij geeft geen errors

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

het gaat niet om de errors, je moet de output ervan even bekijken (en liefst hier posten, dan kunnen wij meekijken ;))

wel alleen je main () functie, al die geinclude files zijn niet boeiend ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
#gcc pci.c -o pci -E
#

--helemaal geen output, alsof er niks aan de hand is

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Verwijderd schreef op 21 March 2003 @ 12:46:
Voor school moet ik een opdracht maken dat een lijstje maakt van alle PCI devices in het systeem. Ik heb het al een beetje afgekeken van pci.txt in /usr/doc/linux. Ik moet het onder Linux maken [met gcc compilen dus], maar ik krijg telkens een 'parse error before {'. Nouwja, kijk zelf maar even

C:
1
2
3
4
5
6
7
8
9
10
11
#include <linux/pci.h>

int main()
{
   struct pci_dev *dev;
   pci_for_each_dev(dev)
   {
        /* print de naam van dev */
   }
   return 0;
}
Ik zie zelf trouwen alle voorbeelden van pci_for_each_dev in context van een kernel devicedriver, niet in een stand-alone enviroment. Misschien dat dat ergens een ifdefje uitmaakt?

Localhost, sweet localhost


Verwijderd

Topicstarter
--Misschien dat dat ergens een ifdefje uitmaakt?

Owkee, ik heb nog niet zooveel ervaring met C, hoe doe je dat? Geef plz een voorbeeld ofzo

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 21 March 2003 @ 13:54:
#gcc pci.c -o pci -E
#

--helemaal geen output, alsof er niks aan de hand is


uhm, kijk eens in de file "pci" :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
De inhoud van pci:

# 1 "pci.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "pci.c"
# 1 "/usr/include/linux/pci.h" 1 3
# 276 "/usr/include/linux/pci.h" 3
# 1 "/usr/include/linux/pci_ids.h" 1 3
# 277 "/usr/include/linux/pci_ids.h" 2 3
# 2 "pci.c" 2

int main(0
{
struct pci_dev *dev;
pci_for_each_dev(dev)
{

}
return 0;
}

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

wazig, hij expand de macro niet eens :?
ik zie ook geen inhoud van pci.h... alsof ie niet eens geinclude wordt. Kijk eens in pci.h of daar iets staat over een macro of definition die je eerst moet definieren alvorens pci.h te includen?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
k snap er ook geen ruk meer van

  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

Verwijderd schreef op 21 March 2003 @ 12:46:
C:
1
2
3
4
5
6
7
8
9
10
#include <linux/pci.h>
int main()
{
   struct pci_dev *dev;
   pci_for_each_dev(dev)
   {
        /* print de naam van dev */
   }
   return 0;
}
Dit is code voor kernelspace, en dit gaat niet compilen onder userspace. Getgeen wat in linux/pci.h staat is op wat defines na niet te gebruiken in userspace. On een lijst te krijgen zou je /proc/pci kunnen gebruiken, of /proc/bus/pci/

  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

.oisyn schreef op 21 maart 2003 @ 14:22:
wazig, hij expand de macro niet eens :?
ik zie ook geen inhoud van pci.h... alsof ie niet eens geinclude wordt. Kijk eens in pci.h of daar iets staat over een macro of definition die je eerst moet definieren alvorens pci.h te includen?
Die define is __KERNEL__, en als die in je includes staat is dat een hint dat de betreffende code alleen in kernelspace zichbaar is. En nee, #define __KERNEL__ in je code zal je echt niet helpen :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik had idd al zo'n vermoeden :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Voor wat tips kun je misschien ook kijken in de source van lspci, dat is onderdeel van pciutils. Dat is wel te vinden op de mirrors van ftp.kernel.org

"He took a duck in the face at two hundred and fifty knots."

Pagina: 1