Я работаю над модулем Linux для IA64. Моя текущая проблема заключается в том, что драйвер использует макросы PAGE_SIZE и PAGE_SHIFT для выделения страниц dma. Проблема, с которой я столкнулся, заключается в том, что машина, компилирующая драйвер, не та, которая нужна для запуска драйвера. Итак, если PAGE_SIZE на компилирующей машине составляет 2 ^ 14K, а конечная машина - 2 ^ 16K, тогда драйвер не работает.
Я не хочу превращать этот вопрос в проблему «передовой практики» по компиляции модулей на машинах, на которых эти модули не выполняются. Я понимаю, в чем проблема. Я обнаружил, что люди в основном используют getpagesize () или sysconf (_SC_PAGE_SIZE). Эти два параметра отсутствуют в заголовках ядра ia64, поэтому я не могу их использовать. Есть ли другой способ получить PAGE_SIZE во время выполнения?
Параметры, на которые я смотрю: