2012-12-28 1 views
1

Je suis nouveau dans l'écriture de pilotes de périphériques Linux et j'essaie de créer un pilote de périphérique qui gère une puce UART. Pour cela, j'ai décidé d'utiliser les questions de travail comme traitement de demi-fond parce que je dois utiliser des sémaphores pour gérer les données que je reçois de la puce UART. Un gestionnaire de files d'attente de travail qui a été planifié plus tôt dans une interruption est maintenant exécuté et pendant son exécution, il dort à un sémaphore. Pendant ce temps, le gestionnaire d'interruption est appelé à nouveau et planifie le même gestionnaire de file d'attente de travail. Le gestionnaire de file d'attente de travail sera-t-il exécuté à nouveau avant la fin de la première exécution?Comment fonctionnent les files d'attente de travail Linux?

Merci.

Répondre

0

Le comportement par défaut des files d'attente de travail est de permettre une exécution simultanée sur différents processeurs. Il y a un indicateur WQ_NON_REENTRANT qui modifie ce comportement. Plus d'informations peuvent être trouvées dans ce poste http://lwn.net/Articles/403891/

Mais il semble que dans les noyaux récents files d'attente ne sont pas rentrante par défaut - voir http://lwn.net/Articles/511190

Questions connexes