История изменений
Исправление SZT, (текущая версия) :
Да, кстати, по поводу самой статьи. Процитирую
mfi_tbolt_adp_reset(struct mfi_softc *sc) { .... for (i=0; i < 10; i++) { for (i = 0; i < 10000; i++); } .... }
Этот небольшой код скорее всего используется для создания задержки, только суммарно тут выполняется 10000 итераций, а не 10*10000, тогда зачем использовать два цикла?
Это НЕЛЬЗЯ использовать для создания задержки, компилятор такой код при оптимизации выбрасывает т.к. он ничего полезного не делает.
https://svnweb.freebsd.org/base/head/sys/dev/mfi/mfi_tbolt.c?view=markup&... вот собственно ссылка на ту самую функцию. Если уж делать такое, надо в такой цикл всовывать «холостую» ассемблерную вставку. Есть еще подозрения что они это компилируют с какими-то особыми опциями "-не-выбрасывать-бесполезные-циклы" но я во-первых сомневаюсь что такая опция есть, во-вторых это очень и очень плохо, полагаться на конкретное поведение конкретного компилятора
Исходная версия SZT, :
Да, кстати, по поводу самой статьи. Процитирую
mfi_tbolt_adp_reset(struct mfi_softc *sc) { .... for (i=0; i < 10; i++) { for (i = 0; i < 10000; i++); } .... }
Этот небольшой код скорее всего используется для создания задержки, только суммарно тут выполняется 10000 итераций, а не 10*10000, тогда зачем использовать два цикла?
Это НЕЛЬЗЯ использовать для создания задержки, компилятор такой код при оптимизации выбрасывает т.к. он ничего полезного не делает.