Frage

Ich versuche zu lernen, wie man Informationen von PCI -Geräten in Mac OS X bekommt. Bisher konnte ich in SysCTL (3) nichts darüber finden, und es scheint, dass die alten Devinfo (3) -Anleitungen von BSD nicht sind verfügbar.

Ich brauche eine C -Einrichtung dafür, ich weiß, dass es ein E/A -Kit -Framework für objektives C gibt, das aber nicht verwenden kann.

Die spezifischen Informationen, nach denen ich nach mir geht, sind ziemlich einfach, nur Anbieter und Geräte -IDs.

War es hilfreich?

Lösung

E/O -Kit ist Das System Framework für Geräteinformationen. Es ist keine objektive C-API; Stattdessen verwendet Apple eine eingeschränkte Teilmenge von C ++. Zitieren die I/O -Kit -Grundlagen dokumentieren,

Apple berücksichtigte mehrere Programmiersprachen für das E/A -Kit und wählte eine eingeschränkte Teilmenge von C ++.

C ++ wurde aus mehreren Gründen ausgewählt. Der C ++ - Compiler ist ausgereift und die Sprache unterstützt die Systemprogrammierung. Darüber hinaus gibt es bereits eine große Community von Macintosh- (und BSD) -Entätigern mit C ++ - Erfahrung.

Die eingeschränkte Teilmenge macht bestimmte Merkmale von C ++ ab, einschließlich

  • Ausnahmen
  • Mehrfacherbe
  • Vorlagen
  • Laufzeittypinformationen (RTTI) - Das E/A -Kit verwendet eine eigene Implementierung eines Laufzeit -Tippsystems

Diese Merkmale wurden fallen gelassen, weil sie für die Verwendung in einem Multithread -Kernel als ungeeignet eingestuft wurden. Wenn Sie das Gefühl haben, dass Sie diese Funktionen benötigen, sollten Sie Ihr Design überdenken. Sie sollten in der Lage sein, jedem Treiber zu schreiben, den Sie benötigen, wenn Sie ein E/A -Kit mit diesen Einschränkungen verwenden.

Wenn Sie C ++ nicht verwenden können, besteht eine Alternative darin, Ihren C -Programmanruf zu erhalten /usr/bin/ioreg und seine Ergebnisse analysieren.


Bearbeiten: Vielleicht möchten Sie sich das ansehen Zugriff auf Hardware aus Anwendungen dokumentieren. Es sieht so aus, als ob der Zugriff auf die E/A -Registrierung zum größten Teil (wenn nicht alle) mit ein wenig Kernfundament erfolgen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top