wait_ms et kernel 2.6.6-mm4 et plus ...

Et voila .. Encore des changements dans la stack USB, et bim .. on compile plus … Forcément, si on retire une fonction … wait_ms en l’occurence ..

Dans le cas présent seuls (pour le moment) les 2.6.6-mm4 et plus sont touchés par ce problème mais il devrait affecter le 2.6.7 ( le changement devrait être mergé )..

Toutefois je ne ferais de modification définitive que pour des versions fixes (2.6.7 en l’occurrence), principalement pour 3 raisons:
  1. Je ne suis pas encore sûr de la version stable dans laquelle cette modification va être intégrée
  2. Je ne suis pas encore sûr de la modification que j’apporterai: il semble qu’une fonction msleep soit ajoutée au kernel, mais je veux d’abord être sur que cette fonction sera bien présente.
  3. Je ne pense pas pouvoir faire de distinguo facile entre les version 2.6.6 et 2.6.6-mm4 et supérieure. De plus il doit y avoir d’autre version du kernel qui intègre ce patch et je ne souhaite pas faire des #ifdef pour tout le monde ;)

Dans l’immédiat, pour les courageux testeurs, le plus simple est encore d’ajouter:

static __inline__ void wait_ms(unsigned int ms)
{
        if(!in_interrupt()) {
                current->state = TASK_UNINTERRUPTIBLE;
                schedule_timeout(1 + ms * HZ / 1000);
        }
        else
                mdelay(ms);
}

au début du fichier Boot.c ou de remplacer les appels à wait_ms dans le fichier Boot.c par des appels à msleep.

Ça devrait marcher ;)