Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Посоветуйте пожалуйста

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [*nix/Linux] >> Посоветуйте пожалуйста
Имя
Сообщение << Старые топики   Новые топики >>
Посоветуйте пожалуйста - 2006-01-10 10:36:40   
timigor

Сообщений: 1
Оценки: 0
Присоединился: 2006-01-09 18:20:05
Подскажите кто знает!
Читаю-пишу в ttyS0 из прерывания таймера примерно так:
void ndt_irq (unsigned long data)
{
spin_lock_bh(&timer_lock);
struct my_buf *tbf;
tbf = &rbuffer;

fs=get_fs();
set_fs(KERNEL_DS);
if (f && f->f_dentry &&
f->f_op && f->f_op->read) {
…….
retval = f->f_op->read(f, &tbf->rc, 1, &f->f_pos);
……..
f->f_op->write(f, "NICHEVO NE CHITAET", 18, &f->f_pos);

if (retval <= 0) printk("<0> ^tstnd: READE returns: %d\n", retval);
}
else printk("<0> ^tstnd: stuct FILE is empty\n");
set_fs(fs);

mod_timer(&timer, jiffies + HZ);
spin_unlock_bh(&timer_lock);
}
Передаётся всё нормально, но ничего не читает. Возвращает код -11 (типа: пилите Шура - они золотые)
Если циклить на чтении - пилит до бесконечности.
Назначение f при инициализации модуля такое:
fs=get_fs();
set_fs(KERNEL_DS);
f=filp_open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY, 0666);
if(IS_ERR(f)) printk (KERN_WARNING "^tstnd: Error opening ttyS.\n");
set_fs(fs);


[sm=in-love.gif]
Post #: 1
Страниц:  [1]
Все форумы >> [*nix/Linux] >> Посоветуйте пожалуйста







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.