Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM926ejs и модуль ядра для Linux 2.4.xx
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
yura_lvk
Доброго всем времени суток!

Коллеги, помогите решить следующую проблему. Есть старое ядро 2.4.хх, есть железяка работающая на arm926ejs под управлением этого ядра. С железякой общаюсь по СОМ-порту.
Пишу модуль ядра для этой железяки, в коде модуля есть такие строчки:

if( sock->ops && sock->ops->ioctl ) {
old_fs = get_fs();
printk( KERN_ALERT "aaa\n" );
set_fs( KERNEL_DS );
printk( KERN_ALERT "bbb\n" );
retval = sock->ops->ioctl( ... );
set_fs( old_fs );
...
}

Ошибка происходит в вызове set_fs( KERNEL_DS ) железка «умирает» молча, ни kernel_panic, ни error какой-то, ничего... я вижу в гипертерминале "ааа", но не вижу "bbb", железяка ни на что не отвечает, пока ей не передернуть питание.

Посмотрел на переключение доменов в uaccess.h, по-моему все осмысленно (установка лимита и отключение контроля доступа в домене ядра). Единственное смущает, что KERNEL_DS (то есть по сути - лимит ) задефайнен как 0х00000000, а комментарий рядом гласит, что здесь подразумевается 0x100000000. Поэтому в ходе экспериментов пробовал значения лимитов 0xFFFFFFFF, 0xFFFFF000 и 0xFFFF0000 (естественно смотрел, чтобы был DOMAIN_MANAGER) - не помогло. Пробовал local_irq_disable()/local_irq_enable() вокруг set_fs() - тоже.

Одним словом, коллеги, кто сталкивался с такой проблемой посоветуйте, что делать.

P.S. Этот же модуль на железяках с х86 работает прекрасно.
IgorKossak
Кросспост запрещён правилами.
Идентичные ткмы в других ветках удалил.
Модератор
yura_lvk
Вот спасибо, мил человек! Именно такого ответа я и ждал!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.