2016-10-14 2 views
1

Nehmen Sie ein hypothetisches Remote-Framebuffer-Protokoll an, das als Linux-Framebuffer-Treiber implementiert ist.Kann ein Linux-Framebuffer-Treiber Benachrichtigungen über alle Änderungen seines Inhalts erhalten?

Konnte ein solcher Treiber eine Benachrichtigung erhalten, wenn der Speicher des Framebuffers direkt aus dem Benutzerbereich über ein mmap-Mapping oder ähnliches geschrieben wurde?

http://lxr.free-electrons.com/source/drivers/video/fbdev/skeletonfb.c?v=4.4#L653 zeigt alle Funktionen, die ein Modulschreiber implementieren kann, um solche Informationen zu erhalten, aber auf den ersten Blick konnte ich keine Implementierung von xxxfb_mmap oder xxxfb_write sehen, die mögliche Kandidaten wären.


Update:

habe ich fb_write bei http://lxr.free-electrons.com/source/drivers/video/fbdev/core/fbmem.c?v=4.4#L812 nur

gesehen

Wird dies nur dann aufgerufen werden, wenn die Framebuffer über eine Datei-Deskriptor geschrieben oder auch, wenn sein Speicher via geschrieben ein mmapping?

Ich bin auf der Suche nach einer Möglichkeit, nur nach Änderungen an einem In-Memory-Framebuffer zu suchen, wenn der Inhalt geändert wurde, anstatt kontinuierlich zu suchen.

Antwort

1

können Sie Latente IO verwenden, die Schritte here beschrieben:

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); 
Verwandte Themen