LINUX.ORG.RU

История изменений

Исправление metawishmaster, (текущая версия) :

+ на сколько я знаю, volatile говорит компилятору не оптимизировать переменную, например

{
    volatile unsigned long *LPCI_4C = (unsigned long *) (dev->core.lin_base[0] + 0x4C);
    *LPCI_4C |= 0x49;

/*    while (*LPCI_4C & 0x24 == 0);    */
    if (wait_event_interruptible(dev->wq, *LPCI_4C & 0x24))
        return -ERESTARTSYS;

    *LPCI_4C &= ~0x40;
}
по-идее, компилятор может выкинуть обращения к этой переменной, а нельзя - LPCI_4C железкой управляет.

Исходная версия metawishmaster, :

+ на сколько я знаю, volatile говорит компилятору не оптимизировать переменную, например

{
    volatile unsigned long *LPCI_4C = (unsigned long *) (dev->core.lin_base[0] + 0x4C);
    *LPCI_4C |= 0x49;
/*
    if (wait_event_interruptible(dev->wq, *LPCI_4C & 0x24))
        return -ERESTARTSYS;
*/
    while (*LPCI_4C & 0x24 == 0);
    *LPCI_4C &= ~0x40;
}
по-идее, компилятор может выкинуть обращения к этой переменной.