2016-10-14 2 views
1

Supposons un hypothétique protocole de framebuffer distant, implémenté en tant que pilote de framebuffer Linux.Un pilote de framebuffer Linux peut-il recevoir une notification de toutes les modifications apportées à son contenu?

Un tel pilote pouvait-il recevoir une notification lorsque la mémoire du framebuffer était écrite directement à partir de l'espace utilisateur via un mappage mmap ou similaire?

http://lxr.free-electrons.com/source/drivers/video/fbdev/skeletonfb.c?v=4.4#L653 montre toutes les fonctions qu'un rédacteur de module peut implémenter pour obtenir de telles informations, mais à première vue je ne pouvais pas voir une implémentation de xxxfb_mmap ou xxxfb_write qui serait des candidats possibles.


Mise à jour:

Je viens de voir fb_write à http://lxr.free-electrons.com/source/drivers/video/fbdev/core/fbmem.c?v=4.4#L812

Cela sera appelé que lorsque le framebuffer est écrit par un fichier descripteur ou encore lorsque sa mémoire est écrit par un mmapping?

Je cherche un moyen de ne rechercher que les modifications apportées à un tampon d'image en mémoire lorsque son contenu a changé, plutôt que de le rechercher en continu.

Répondre

1

Vous pouvez utiliser IO différée, les étapes sont décrites here:

static void hecubafb_dpy_deferred_io(struct fb_info *info, 
            struct list_head *pagelist) 
{ 
} 

static struct fb_deferred_io hecubafb_defio = { 
    .delay  = HZ, 
    .deferred_io = hecubafb_dpy_deferred_io, 
}; 

// init 
info->fbdefio = &hecubafb_defio; 
fb_deferred_io_init(info); 

// cleanup 
fb_deferred_io_cleanup(info);