0

Я пишу драйвер устройства блока и начинал с примера с sbull отсюда: http://lwn.net/images/pdf/LDD3/ldd3_pdf.tar.bz2 Я загрузил драйвер sbull на моем компьютере с версией ядра 3.5.0-23. Когда я запускаю этот код:Пример драйвера sbull ldd3 застрял

int main(){ 
int fd; 

if ((fd = open("/dev/sbulla",O_RDWR)) < 0) 
{ 
    perror("open: "); 
    exit(1); 
} 

lseek(fd,4096,SEEK_SET); 
write(fd,"yonityoyin",10); 

lseek(fd,4096*2,SEEK_SET); 
write(fd,"yonityoyin",10); 

close(fd); 

}

Сеанс застревает. Если я открыть еще одну сессию на машины и печати dmesg я получаю это после того, как некоторое время:

[56437.815570] INFO: task a.out:4640 blocked for more than 120 seconds. 
[56437.822742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. 
[56437.831563] a.out   D ffffffff8180cbe0  0 4640 4639 0x00000000 
[56437.831571] ffff880852715c08 0000000000000082 0000000000000000 0000000000000001 
[56437.831580] ffff880852715fd8 ffff880852715fd8 ffff880852715fd8 00000000000139c0 
[56437.831588] ffff8808547c0000 ffff880851bc2e00 ffff880852715be8 ffff88085fd74258 
[56437.831595] Call Trace: 
[56437.831623] [<ffffffff81127220>] ? __lock_page+0x70/0x70 
[56437.831638] [<ffffffff8169d8b9>] schedule+0x29/0x70 
[56437.831643] [<ffffffff8169d98f>] io_schedule+0x8f/0xd0 
[56437.831652] [<ffffffff8112722e>] sleep_on_page+0xe/0x20 
[56437.831657] [<ffffffff8169c25f>] __wait_on_bit+0x5f/0x90 
[56437.831663] [<ffffffff81127c1b>] ? find_get_pages_tag+0xcb/0x170 
[56437.831674] [<ffffffff81127388>] wait_on_page_bit+0x78/0x80 
[56437.831682] [<ffffffff81078490>] ? autoremove_wake_function+0x40/0x40 
[56437.831691] [<ffffffff8112749c>] filemap_fdatawait_range+0x10c/0x1a0 
[56437.831701] [<ffffffff81133000>] ? do_writepages+0x20/0x40 
[56437.831706] [<ffffffff8112755b>] filemap_fdatawait+0x2b/0x30 
[56437.831711] [<ffffffff811298e4>] filemap_write_and_wait+0x44/0x60 
[56437.831718] [<ffffffff811c0091>] __sync_blockdev+0x21/0x40 
[56437.831722] [<ffffffff811c00c3>] sync_blockdev+0x13/0x20 
[56437.831726] [<ffffffff811c0139>] __blkdev_put+0x69/0x1c0 
[56437.831736] [<ffffffff811c02eb>] blkdev_put+0x5b/0x160 
[56437.831740] [<ffffffff811c0415>] blkdev_close+0x25/0x30 
[56437.831750] [<ffffffff81188afe>] __fput+0xbe/0x240 
[56437.831756] [<ffffffff81188ca5>] fput+0x25/0x30 
[56437.831761] [<ffffffff81185976>] filp_close+0x66/0x90 
[56437.831766] [<ffffffff81185a3e>] sys_close+0x9e/0x110 
[56437.831775] [<ffffffff816a7029>] system_call_fastpath+0x16/0x1b 

Что может быть проблема с драйвером? Просто, чтобы быть ясным, я получаю эту проблему с исходным драйвером sbull.

+0

Было бы полезно, чтобы разделить драйвер для анализа проблемы. – user2699113

+0

Его не мой водитель, который застрял, его пример ldd3, который застревает – yonigo

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^