Domanda

Sto cercando di imparare come ottenere informazioni dai dispositivi PCI in Mac OS X. Finora non sono stato in grado di trovare qualsiasi cosa su di esso in sysctl (3) e sembra che il vecchio DevInfo (3) servizi da BSD non sono disponibili.

Ho bisogno di un impianto di C per questo, so che c'è un kit di framework I / O per Objective C, ma non posso usare questa.

Le informazioni specifiche che sto cercando è piuttosto semplice, basta vendor e ID del dispositivo di.

È stato utile?

Soluzione

I O Kit è il quadro / sistema di informazioni sul dispositivo. Non è un'API Objective-C; invece, Apple usa un sottoinsieme limitato di C ++. Citando il I / O Kit Fondamenti documento

Apple ha considerato diversi linguaggi di programmazione per il kit di I / O e ha scelto un sottoinsieme ristretto di C ++.

C ++ è stato scelto per diverse ragioni. Il compilatore C ++ è maturo e la lingua fornisce il supporto per la programmazione del sistema. Inoltre, v'è già una grande comunità di Macintosh (e BSD) gli sviluppatori con esperienza di C ++.

Il sottoinsieme limitato non consente alcune caratteristiche di C ++, inclusi

  • Eccezioni
  • L'ereditarietà multipla
  • Modelli
  • Runtime informazioni sul tipo (RTTI) -la I / O Kit utilizza la propria implementazione di un sistema di runtime di digitazione

Queste caratteristiche sono state ritirate perché sono stati ritenuti non idonei per l'utilizzo all'interno di un kernel multithreaded. Se ti senti bisogno di queste caratteristiche, si dovrebbe riconsiderare il vostro disegno. Dovreste essere in grado di scrivere alcun driver desiderato tramite kit di I / O con queste restrizioni in vigore.

Se non è possibile utilizzare C ++ poi un alternativa è quella di avere il vostro C chiamata del programma /usr/bin/ioreg e analizzare i risultati.


Modifica si potrebbe desiderare di dare un'occhiata al Accesso Hardware da applicazioni documento. Sembra che l'accesso alla I / O Registro di sistema può essere fatto con il codice C per la maggior parte (se non tutti), con un po 'di core Fondazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top