Есть ли ограничение на размер модуля ядра в Linux?

У меня проблема с загрузкой модуля ядра, имеется большая структура данных, размером примерно 2 ГБ памяти - независимо от того, выделяю ли я таблицу заранее (чтобы она отображалась в .bss, когда я выполняю size -A module.ko или пытаюсь vmalloc () это во время загрузки, загрузка модуля не выполняется с помощью insmod: ошибка при вставке 'module.ko': -1 Невозможно выделить память .

Я попытался отладить проблему в пользовательском режиме Linux, но Я получаю кучу ошибок segfaults (которые можно продолжить в gdb, но в конечном итоге консольное сообщение переполнение в типе перемещения 10 val <значение в парке мячей 6G> и 'module' вероятно не скомпилирован с -mcmodel = kernel . Я предполагаю, что с Kbuild -mcmodel должно быть правильным, верно?

Итак, вопросы следующие:

  1. Существует ли общий предел 2G для размера модуля ядра Linux?
  2. Существует ли конкретный предел 2G для модулей ядра в usernode linux (я думаю , что раньше я замечал, что большому модулю ядра нужен чистый, непрерывный блок памяти ...)
  3. Могу ли я указать -mcmodel = large для модуля ядра и ожидать, что он будет работать?

Я пробовал это на debian squeeze, 64-bit, 2.6.32-5-amd64 (host) с 8 ГБ памяти и 2.6.32 в uml с памятью 4G,так что это не должно быть не обычной проблемой нехватки памяти.

Дополнительная заслуга за обход лимита, если такой лимит существует :)

8
задан Kimvais 13 June 2011 в 06:46
поделиться