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