Mac OS X, C Средства для чтения информации об устройстве PCI

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

Для этого мне нужно средство C, я знаю, что для Objective C существует структура набора ввода-вывода, но я не могу ее использовать.

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


person Stefan M    schedule 21.01.2011    source источник


Ответы (1)


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

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

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

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

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

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

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


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

person Community    schedule 21.01.2011
comment
Большое спасибо за это, очень ценная информация. Я подожду и увижу, если никто другой не услышит свой голос, тогда я предполагаю, что для этого нет средств, которые не включают другие языки, кроме C. - person Stefan M; 21.01.2011
comment
@Hjemmedyrker Взгляните на мое последнее редактирование. Кажется, что просмотр реестра ввода-вывода может вообще не требовать C++. - person ; 21.01.2011