Как получить физический адрес для любого адреса в FreeBSD из пользовательского пространства?

Для некоторых исследований мне нужно узнать физический адрес указателя на FreeBSD 12. В Linux я бы сделал это с помощью /proc/self/pagemap, но во FreeBSD я не нашел способа сделать это.

Итак, есть ли способ получить физический адрес любого виртуального адреса из пространства пользователя в FreeBSD?


person Baptiste Wicht    schedule 21.09.2020    source источник
comment
Зачем вам физический адрес? что ты собираешься с этим делать? Любой код, кроме кода управления памятью в ядре, будет использовать виртуальные адреса.   -  person Jonathan Leffler    schedule 21.09.2020
comment
Мы отлаживаем некоторые проблемы с локализацией NUMA и пытаемся проверить, что адреса выделены на правильном ЦП.   -  person Baptiste Wicht    schedule 21.09.2020


Ответы (1)


Для FreeBSD см. макрос vtop.

find(1) и xargs(1) — ваши друзья:

find /usr/include /usr/src/sys -type f -name '*.h' -print0 \
| xargs -0 egrep -i vtop | less

Я думаю, это хорошая отправная точка ;)

person alireza    schedule 07.10.2020
comment
К сожалению, vtop — это макрос ядра, поэтому я не смогу использовать его из пользовательского пространства. Я мог бы использовать его из модуля ядра, но этого я хочу избежать. - person Baptiste Wicht; 07.10.2020