LINUX.ORG.RU

interruptible_sleep_on в ядре 2.6


0

0

Похоже я пропустил какие-то нововведения в ядре, столкнулся с
такой проблемой. Использую дефолтное ядро FC2 (2.6.5-358), при
сборке в модуле l780 выдаётся предупреждение:

drivers/lcard/l780.c: In function `device_open':
drivers/lcard/l780.c:1046: warning: `interruptible_sleep_on' is
 deprecated (declared at include/linux/wait.h:231)
drivers/lcard/l780.c: In function `device_read':
drivers/lcard/l780.c:1123: warning: `interruptible_sleep_on' is
 deprecated (declared at include/linux/wait.h:231)
drivers/lcard/l780.c: In function `device_write':
drivers/lcard/l780.c:1162: warning: `interruptible_sleep_on' is
 deprecated (declared at include/linux/wait.h:231)
drivers/lcard/l780.c: In function `dev_probe':
drivers/lcard/l780.c:1815: warning: ignoring return value of
 `pci_enable_device', declared with attribute warn_unused_result

Причём на предыдущих версиях ядра такого чуда не было. Подозреваю,
что в FC наложили какой-то патч, но что-то в спеках ничего не пойму.


При запуске модуля ядро ругается так:

Badness in interruptible_sleep_on at kernel/sched.c:1927
kernel: Call Trace:
kernel:  [<c02964a5>] interruptible_sleep_on+0x5b/0xcd
kernel:  [<c01166a2>] default_wake_function+0x0/0xc
kernel:  [<f096b342>] device_read+0x72/0x12b [l780]
kernel:  [<c0143c84>] vfs_read+0xb8/0xe4
kernel:  [<c0143e5d>] sys_read+0x2c/0x42
kernel:  [<c0297b57>] syscall_call+0x7/0xb

Хотя на первый взгляд работает модуль нормально. Какие будут
соображения? Я пока теряюсь в догадках.

> что в FC наложили какой-то патч, но что-то в спеках ничего не пойму

да, в 2.6.9-rc4 оно не deprecated, так что это опять
redhat specific.

вообще-то, эти xxx_sleep_on() давно собираются убрать,
их использование почти всегда ошибка.

как и в вашем, наверное, случае :)

idle ★★★★★
()

посмотри комменты относительно sleep_on функций в include/linux/wait.h -  они racy и их собираются убрать в 2.7, вместо них нужно использовать wait_event*

sam123
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.