Je dois transférer plusieurs mégaoctets de données par seconde d'un module Linux-noyau à l'espace utilisateur, et je ne veux pas manquer un message du module, si Je lis d'elle. Quel est le meilleur moyen de le faire?Meilleure façon de transférer de grandes données du noyau à l'espace utilisateur
Il y a assez peu de solutions possibles pour ceci: Named-Pipes, Proc-File et un Block-Device Mais je ne suis pas sûr lequel choisir et lequel promet la meilleure performance depuis que je suis un Kernel-Newbie.
Pour l'instant, j'utilise un anneau-tampon (avec spinlocks) dans le module noyau pour stocker les messages et si le fichier Proc est lu, je mets les données du tampon anneau dans le fichier Proc; du côté utilisateur J'ai un programme qui exécute cat /proc/procfile
à plusieurs reprises et montre la sortie. Le problème avec cette solution est que, au lieu d'obtenir
MESSAGE 1 MESSAGE 2 MESSAGE 3
sur la sortie, je vois (parfois, une fois tous les quelques milliers de messages)
MESSAGE 1 MESSMESSAGE3