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