#c #memory #freebsd #virtual-address-space
#c #память #freebsd #виртуальное адресное пространство
Вопрос:
Для некоторого расследования мне нужно узнать физический адрес указателя во FreeBSD 12. В Linux я бы сделал это с /proc/self/pagemap
помощью, но во FreeBSD я не нашел способа сделать это.
Итак, есть ли способ получить физический адрес любого виртуального адреса из пользовательского пространства во FreeBSD?
Комментарии:
1. Зачем вам нужен физический адрес? Что вы собираетесь с этим делать? Любой код, отличный от кода управления памятью в ядре, будет использовать виртуальные адреса.
2. Мы отлаживаем некоторые проблемы с локальностью NUMA и пытаемся проверить, что адреса распределены на надлежащем процессоре.
Ответ №1:
Для FreeBSD см. Макрос vtop
find(1) и xargs(1) — ваши друзья:
find /usr/include /usr/src/sys -type f -name '*.h' -print0
| xargs -0 egrep -i vtop | less
Я думаю, что это хорошая отправная точка 😉
Комментарии:
1. К сожалению, vtop — это макрос ядра, поэтому я не смогу использовать его из пользовательского пространства. Я мог бы использовать его из модуля ядра, но этого я хочу избежать.