Mac OS X, C Средства для чтения информации об устройстве PCI - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь узнать, как получить информацию от PCI-устройств в Mac OS X. До сих пор я не смог найти что-либо об этом в sysctl (3), и, похоже, старые средства devinfo (3) изBSD не доступны.

Мне для этого нужен объект C, я знаю, что для Objective C есть инфраструктура набора I / O, но я не могу использовать это.

Конкретная информация, которую я ищу, довольно проста, просто идентификаторы поставщиков и устройств.

1 Ответ

1 голос
/ 21 января 2011

I / O Kit является системной платформой для информации об устройстве. Это не Objective-C API; вместо этого Apple использует ограниченное подмножество C ++. Цитирование документа Основы ввода / вывода ,

Apple рассмотрела несколько языков программирования для набора ввода / вывода и выбрала ограниченное подмножество C ++.

C ++ был выбран по нескольким причинам. Компилятор C ++ является зрелым, и язык обеспечивает поддержку системного программирования. Кроме того, уже существует большое сообщество разработчиков Macintosh (и BSD) с опытом работы на C ++.

Ограниченное подмножество запрещает некоторые функции C ++, включая

  • Исключения
  • множественное наследование
  • Шаблоны
  • Информация о типе времени выполнения (RTTI) - набор ввода / вывода использует собственную реализацию системы ввода во время выполнения

Эти функции были отброшены, так как считались неподходящими для использования в многопоточном ядре. Если вы считаете, что вам нужны эти функции, вам следует пересмотреть свой дизайн. Вы должны быть в состоянии написать любой драйвер, который вам требуется, используя I / O Kit с этими ограничениями.

Если вы не можете использовать C ++, то альтернативой может быть вызов вашей программы на C /usr/bin/ioreg и анализ ее результатов.


Редактировать: Вы можете взглянуть на документ Доступ к оборудованию из приложений . Похоже, что доступ к реестру ввода / вывода может быть сделан с помощью кода C по большей части (если не все), с небольшим количеством Core Foundation.

...