Forum Linux.général Signal depuis un driver vers une application

Posté par  .
Étiquettes : aucune
0
16
oct.
2007
Bonjour,

Je suis en train de développé un driver et une librairie associée.
Je cherche le moyen de transmettre une sorte d'interruption software ou un signal depuis le driver vers l'application afin de lui indiquer que d enouvelles données sont prètes.

Quel est la façon standard de faire ce genre de chose ?

Merci kpa
  • # Quelques solutions

    Posté par  (site Web personnel) . Évalué à 4.

    On peut imaginer plein de moyens pour faire ce genre de choses :

    - Le plus simple : un driver en mode caractère par exemple accessible par /dev/myeventmanager qui bloque sur un read(). Lorsque ton driver a besoin de signaler un event, il va utiliser le driver derrière /dev/myeventmanager pour débloquer le read et passer une structure du type

    struct myevent {
        u32 type;
        union {
            u32 arg_type1;
            u16 arg_type2;
        };
    };

    au processus qui vient de se faire débloquer pour lui dire quel event on vient d'émettre. Biens sûr il est possible d'améliorer l'idée :

        - rajouter le support de select(), poll(), epoll()
        - se faire une API dans le driver associé à /dev/myeventmanager pour que le
          reste du noyau puisse envoyer facilement des events.
        - ...

    - Le "vieux" moyen de faire ça est d'utiliser les signaux UNIX, le driver balance un signal lorsqu'il le souhaite à un processus qui c'est enregistré (par le moyen d'un open() ou d'un ioctl par exemple) au préalable

    - On peut essayer d'utiliser une socket netlink.

    - On peut tenter de regarder dans les nouveaux syscall pour supporter des events qui viennent du noyau :
        - kevent (aujourd'hui mort)
        - signalfd()

    piiioufff ça en fait des solutions. Reste plus qu'a débroussailler tout ça.
  • # hal et dbus

    Posté par  . Évalué à 2.

    hal/dbus semble être le moyen moderne de communication entre le hardware et les logiciels sous linux.

Suivre le flux des commentaires

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