LINUX.ORG.RU

linux: как добавить задержку на секунду?


0

0

Массив (software-RAID) md1 состоит из hda2 и md0. При старте системы md0 не успевает запустится до конца, когда уже запускается md1. Из-за этого вылезает ошибка:

linear: not enought drives present

И кончается всё kernel panic, что не есть гут. Хочу добавить секундную задержку в начале linear_run() файла linux/drivers/md/linear.c -- как я понял эта функция отвечает за запуск linear RAID, которым является md1. Решение quick and dirty, но меня устраивает.

Так вот, какой функцией сделать задержку на секундочку? Какие заголовочные файлы нужно включить? Пробовал: //

#include <linux/unistd.h>

sleep(1);

//

Но при компиляции вылезает warning: iplicit declaration. Видимо не тот заголовочный файл включаю. А какой надо включить? А может не той функцией пользуюсь?

★★★★★

Re: linux: как добавить задержку на секунду?

вообще man 3 sleep говорит "#include <unistd.h>".

elenath ()
Ответ на: man что? от Camel

Re: man что?

В инете - гугл выдаст кучу ссылок - доступна в э-виде. В исходниках ядра можно посмотреть примеры msleep()

Mr_Nobody ()
Ответ на: Re: man что? от Mr_Nobody

Смотришь в книгу, видишь фигу.

По-поводу unistd.h и linux/unistd.h: провёл эксперимент, в первом случае выдаёт ошибку

drivers/md/linear.c:20:20: unistd.h: No such file or directory

Так что надо писать, надеюсь,

#include <linux/unistd.h>

по аналогии с другими include рядышком.

По-поводу msleep: гуглёж показал что msleep это всего лишь аналог sleep с параметром в миллисекундах, то есть разница несущественна (если, конечно, писать msleep(1000), а не msleep(1)

Надо будет ебук полистать, как он там назывался? Linux Device Drivers?

Camel ★★★★★ ()
Ответ на: Смотришь в книгу, видишь фигу. от Camel

Гляди в оба, увидишь микроба.

Спасибо за подсказку, Mr_Nobody. В ебуке быстро нашёл нужную главу Flow of Time, а в ней описание mdelay(). Сейчас собираю, посмотрим что получится.

Camel ★★★★★ ()

Re: linux: как добавить задержку на секунду?

#include <linux/sched.h>

schedule_timeout_uninterruptible(HZ);

anonymous ()
Ответ на: Йес! от Camel

Тормозит, но не работает.

Задержки сработали, но к нужному результату это не привело. Может нехватает какой-нибудь функции инициализации RAID'ов, чего-то что до linear_run()? Надо поковырять сорсы.

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