Как получить размер страницы ядра Linux программно

Я работаю над модулем Linux для IA64. Моя текущая проблема заключается в том, что драйвер использует макросы PAGE_SIZE и PAGE_SHIFT для выделения страниц dma. Проблема, с которой я столкнулся, заключается в том, что машина, компилирующая драйвер, не та, которая нужна для запуска драйвера. Итак, если PAGE_SIZE на компилирующей машине составляет 2 ^ 14K, а конечная машина - 2 ^ 16K, тогда драйвер не работает.

Я не хочу превращать этот вопрос в проблему «передовой практики» по компиляции модулей на машинах, на которых эти модули не выполняются. Я понимаю, в чем проблема. Я обнаружил, что люди в основном используют getpagesize () или sysconf (_SC_PAGE_SIZE). Эти два параметра отсутствуют в заголовках ядра ia64, поэтому я не могу их использовать. Есть ли другой способ получить PAGE_SIZE во время выполнения?

Параметры, на которые я смотрю:

  • Чтение некоторого файла в / proc?
  • системный вызов?
  • Другая функция, которая позволяет мне вычислить PAGE_SIZE путем вывода ( например, ORDER, getpageshift, и т. д.)?
  • Другое?
33
задан Cœur 4 April 2017 в 12:27
поделиться