2017-07-16 3 views
1

Je suis nouveau dans le développement du noyau, donc pour augmenter mes compétences je veux faire un simple module noyau qui configure le périphérique/dev/hwrng et génère entropie avec la position du curseur.Créer un module de noyau/dev/hwrng qui utilise la position du curseur pour générer l'entropie

Pour l'instant, j'ai trouvé le moyen de lancer/dev/hwrng et généré seulement zéro entropie =>http://main.lv/writeup/kernel_dev_hwrng.md

Pour obtenir la position du curseur Je sais que différents moyens:

  • bibliothèque X11 /Xlib.h -> je peux obtenir la position absolue de mon curseur
  • de /dev/input/mice et /dev/input/mouse0 -> je peux obtenir la position relative
  • forme /dev/input/event<X> où X est un nu mbre qui est de trouver avec la commande cat /proc/bus/input/devices

donc je sais comment obtenir la position du curseur dans l'espace utilisateur, mais je n'ai aucune idée de la façon de l'obtenir de la terre du noyau. J'ai lu quelque chose au sujet d'IOCTL mais il semble bizarre de faire un lien entre userland et kernel land juste pour ça. Merci de votre aide.

+1

Je doute que la position absolue du curseur soit connue dans le noyau. Le serveur X sait, parce qu'il dessine (je pense), mais cela prend le mouvement relatif de la souris du pilote de périphérique. Mais le serveur X est un processus d'utilisateur, ne peut pas voir une raison pour laquelle cela retournerait dans le noyau. Et si vous considérez qu'un serveur X peut être distant, sur un réseau, il est entièrement séparé du noyau sous-jacent. – bazza

+0

Je suis d'accord avec cela, il n'y a aucune raison pour que le noyau connaisse la position du curseur. Donc j'essaie d'utiliser comme entrée pour mon module d'entropie la position du curseur, je pense utiliser l'un des périphériques/dev/input, mais je ne sais pas si c'est possible juste avec l'espace du noyau, et si c'est le cas, je Je ne sais pas comment le faire. – Gram

+0

Bien sûr, mais dans votre module noyau, le caractère aléatoire provenant des périphériques d'entrée provient uniquement de ce que fait un utilisateur s'il est connecté localement. S'il est connecté à distance, il n'y a aucune entrée locale, ce qui serait un mauvaise chose compte tenu de ce que vous avez en tête; ce serait une entrée zéro constante. – bazza

Répondre