0

J'écris un module de noyau Linux, et mon application utilisateur boucle un appel ioctl parallèle (pour obtenir des informations du module noyau). Mais quand je veux fermer le descripteur de fichier (lié à mon module de noyau), la fonction release n'est pas exécutée jusqu'à ce que la fonction ioctl ne soit pas sortie.Fermeture du descripteur de fichier lors de l'exécution d'ioctl

Je ne trouve rien sur la raison pour laquelle il se comporte ainsi. Avez-vous une idée de pourquoi cela arrive, et comment je peux éviter ce blocage? J'aimerais essentiellement que mes fonctions ioctl et close soient exécutées simultanément dans mon module noyau.

Merci! :)

Répondre

0

Je voudrais avoir essentiellement mes ioctl et close fonctions exécutées simultanément dans mon module de noyau.

Vous ne pouvez pas.

L'appel de la méthode .release() signifie que l'objet fichier n'est plus utilisé. Donc, il ne peut pas être exécuté pendant que ioctl pour un fichier donné est en cours.

+0

Nous vous remercions de votre réponse. Alors savez-vous comment je suis censé mettre en œuvre le comportement que je veux? – PinkPR

+0

Comme le dit la réponse, vous ** ne pouvez pas ** observer '.ioctl()' et '.release()' exécuté en même temps. Que veux-tu d'autre de moi? – Tsyvarev

+0

Je voulais dire: avez-vous une idée de ce qui pourrait être un meilleur design? Par exemple, je suis autorisé à exécuter des appels simultanés à 'ioctl'? – PinkPR