Dans le cas d'une IO bloquante, par exemple la lecture d'un pilote, nous appelons wait_event_interruptible() avec une certaine condition. Lorsque la condition est remplie, la lecture est effectuée. J'ai examiné la fonction wait_event_interruptible(), elle vérifie la condition et appelle schedule(). schedule() recherche le prochain processus exécutable et effectue un changement de contexte et l'autre processus s'exécute. Cela signifie-t-il que la prochaine instruction à exécuter pour le processus en cours se trouvera à l'intérieur de la fonction schedule() lorsque ce processus sera à nouveau réveillé ?
-
Si oui, si plusieurs processus appellent volontairement schedule, alors tous les processus auront la prochaine instruction à exécuter une fois qu'ils auront été réveillés, sera-t-elle bien à l'intérieur de schedule() ?
-
En cas de ret_from_interrupt, schedule() est appelé. Quand reviendra-t-il ? car iret est exécuté après cela.