IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Fonction callback


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 28
    Points : 27
    Points
    27
    Par défaut Fonction callback
    Bonjour,

    Après quelques recherche sur google, je ne n'arrive pas à saisir le fonctionnement exacte des fonction callback.

    En effet je suis en traine de développez un driver pour LINUX. Ce driver doit faire appel à des des fonctions callback.
    En fait je voudrais savoir comment appelé cette fonction callback, à priori il faut l'appeler dans un nouveau thread (le soucis est que je suis en mode kernel).
    Enfin si quelqu'un pouvait m'expliquer comment il fait (qu'il développe des appli kernel ou non).

    merci,

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    J'utilise les callback en GTK, je sais pas si ca correspond à ce que tu attends mais bon, je te donne le lien qui explique tout ca.

    http://www.gtk.org/tutorial/sec-theoryofsignalsandcallbacks.html

  3. #3
    vux
    vux est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 26
    Points : 34
    Points
    34
    Par défaut
    Rapide résumé des callbacks:

    Un callback est une fonction de rappel. C'est à dire que tu vas passer une fonction en paramètre d'une autre fonction (on passe par des pointeurs de fonctions).

    Cela sert énormément pour pouvoir faire des notifications par exemple (beaucoup de systèmes d'interfaces graphiques utilisent ce système).

    voici un exemple pour une fonction de recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fonction callback(Element e) {
      traitement de l'élément
    }
     
    fonction callback2(Element e) {
      traitement différent de l'élément
    }
     
    fonction recherche(Fonction f) {
     Parcours des elements
     quand on trouve un élément (appelé elem) on appelle:
      f(elem)
    }
    Pour appeler ta fonction, tu fais:

    recherche(@callback)

    ou

    recherche(@callback2)

    en fonction du traitement à effectuer.

    Basiquement si tu écrit un driver je pense que le callback va servir à faire une notification si le matériel envoie un signal à ton kernel.

    voilà j'espère avoir été clair
    @+
    vux

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    merci pour vos reponses.

    Le système de callback n'est en fait pas adapter au kernel space. En fait je me suis un peu fourvoyer en pensant qu'il fallait que je programme mon callback dans le kernel space.

    Donc au final je separe mon driver en deux parties. Une première qui est le module driver, lequel envoie un signal à l'application dès qu'un evenement matos arrive. Le fait de recevoir ce signal, l'application lance (mechanisme basique des signaux, avec SIGUSR1 par exemple) la fonction callback correspondante.

    Merci encore de vos réponses

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 147
    Points : 120
    Points
    120
    Par défaut
    Je me permet de remonter ce post pour y apporter une solution qui pourra peut-être aider les suivants.

    Pour utiliser des callbacks d'un driver depuis l'espace noyau il faut les exporter avec la macro EXPORT_SYMBOLS. Plus de détails et un exemple d'utilisation ici : http://forum.kernelnewbies.org/read.php?12,153,6134

    edit : pour les curieux le détail de la macro ici : http://lxr.linux.no/#linux+v2.6.14/i.../module.h#L185
    Il y a 10 types de personnes, celles qui connaissent le binaire, et les autres...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction callback avec arguments ?
    Par sorry60 dans le forum GTK+ avec C & C++
    Réponses: 39
    Dernier message: 07/11/2005, 10h41
  2. [debutant] fonction callback
    Par samipate dans le forum Langage
    Réponses: 5
    Dernier message: 09/10/2005, 14h59
  3. problème fonctions callback
    Par youp_db dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/10/2005, 14h47
  4. [Débutant] fonction CALLBACK
    Par tlt dans le forum MFC
    Réponses: 2
    Dernier message: 29/10/2004, 16h55
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo