Forum Linux.noyau Communication kernel <=> Userland

Posté par  .
Étiquettes : aucune
2
15
mai
2009
Bonjour a tous,

Me voici donc confronté à l'éternel problème de la communication entre le noyau et l'espace utilisateur.

Je suis en train d'écrire un module dans lequel je ne veut pas mettre d'intelligence. Je réserve les tâches compliqué en mode utilisateur.

Le problème de départ est de proposer un périphérique en mode bloc avec des tâches complexes derrière. il faut donc que les requêtes de lecture/écriture arrive à un daemon qui les traitera à la place du noyau.

J'ai besoin d'un moyen rapide de transmettre les lectures/écritures. Il y a pas mal de solutions comme netlink, socket, ... mais je ne souhaite pas faire trop de copie entre userland et kernelland.

Pouvez vous m'aider a y voire plus clair ?
  • # netlink

    Posté par  (site web personnel) . Évalué à 2.

    Netlink est la solution recommandée par les développeurs du noyau.
    Après si tu veux communiquer entre userlad et kernelland sans copier de données, ca va être difficile.

    Après, tu peux peut-etre regarder comment fait fuse qui communique avec un démon userland pour effectuer ce dont il a besoin.
    • [^] # Re: netlink

      Posté par  . Évalué à 1.

      Pour Fuse, il y a un chardev (/dev/fuse) qui ce charge de ça.

      Mon problème et que je ne veut pas faire du mono-thread. Avec un chardev, il suffit qu'une requête bloque pour que tout ce qui utilise le chardev se bloque aussi. (dans le cas d'un timeout)

      Je vais creuser du coté de netlink a moins que quelqu'un a une autre idée ?
      • [^] # Re: netlink

        Posté par  . Évalué à 2.

        Je sais qu'il existe un module fait pour écrire des drivers uniquement en userland, mais j'arrive pas à retrouver le nom ...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.