Вопрос по linux, memory, linux-kernel, device – Получение карты памяти каждого устройства в Linux

2

Как мне получить карту памяти всех физических устройств, которые распознаются Linux. Я уже посмотрел на / proc / iomem и / proc / ioports. Однако я не смог найти карты памяти для каждого устройства. Есть идеи, как этого добиться?

Ваш Ответ

4   ответа
2

вывод iomem / ports просто перечисляет, что драйвер там регистрирует. Таким образом, это больше для каждого драйвера, а не для каждого устройства.

Поскольку большинство устройств сегодня являются устройствами PCI,lspci -v это, возможно, лучшее, что вы можете получить, который показывает используемую память и порты ввода-вывода.

да .. я тоже посмотрел lspci -vvv, но там не было перечислено всех устройств .. поэтому я тоже надеялся на что-то еще manugupt1
8

/proc/iomem, Это показывает вам ядро представления о том, какие диапазоны памяти назначены кому.

Если вы хотите получить более подробную информацию, вам нужно взглянуть на каждого отдельного водителя.

Вы можете получить больше информации от/proc/vmallocinfo так какioremap() использованияvmalloc (хотя, возможно, не на всех архитектурах).

4

ие ответы уже дали вам ценный вклад, я верю. Комбинация/proc/iomem а также/proc/vmallocinfo предоставить вам много информации. Обратите внимание, что сvmallocВам нужно будет покопаться в исходном коде ядра, чтобы связать имя функции с драйвером устройства.

Но настоящий вопрос в том, что вы хотите точно знать? С какой целью вы хотите эту информацию?

Мне кажется, что вы пытаетесь получить непосредственный доступ к физической памяти устройства, где вам следует полагаться на ioctl, sysfs или существующие службы, предоставляемые драйвером для «разговора». с устройством.

Не забывайте это: если Linux не показывает нужную вам информацию, вероятно, это потому, что выnot ищите нужную информацию, или вы пытаетесь обойти существующие сервисы. С точки зрения пространства пользователя, то есть приложений, вам никогда не следует заботиться о физическом расположении памяти.

0

но я несколько дней боролся с этой проблемой, пытаясь установить Linux (все еще новичок).

Из того, что я собрал, каждое устройство однозначно идентифицируется по тому, является ли оно блоком или символьным устройством, а также по старшему: младшему номеру.

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

В папке / dev есть папки параллельных блоков / символов, каждая из которых имеет соответствующие символические ссылки. Эти символические ссылки относятся к фактическим файлам устройства в папке / dev.

Поэтому, если вы можете получить Major: minor устройства, вы можете отобразить устройства в / dev на устройства в / sys. Для дисков вы можете получить основной: вспомогательный с помощью lsblk.

Похожие вопросы