Ich versuche, einen Doppelpuffer mit ioctl zu implementieren (fd, FBIOPAN_DISPLAY ... mein Single-Buffer-Code funktioniert gutMMAP nicht in Versuch, Doppelpuffer framebufer
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel/8;
fbp = (char*)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);
, wenn ich versuche, die „Länge zu erhöhen Parameter "mit screensize * 2, die mmap
schlägt mit EINVAL
fehl. Ich denke, dass es meine Länge Parameter nicht mag.
Die Bildschirmgröße für einen einzelnen Puffer ist 6.220.800 und für den doppelten Puffer ist 12.441600 ein eingebettetes System, aber es hat 1 Gig RAM
Der Längenparameter ist size_t, was auf diesem System nur 4 Bytes ist, was mich denken lässt, dass die maximale Größe, die ich verwenden könnte, 4 Meg wäre, aber 6 Meg funktioniert gut, also denke ich, dass mir etwas wirklich einfaches fehlt. Gibt es einen Weg zu mmap
einen Puffer größer als size_t?
was meinst du 'erhöhen'. sagst du Remapping? – DAG
von erhöhen, ich meine, dass ich neu kompilieren und mit diesem zweiten Parameter (Länge) = Bildschirmgröße * 2. Es schlägt mit dem EINVAL errno – RTC
haben Sie versucht, nur eine const var als double_screensize = screensize * 2 zu erstellen und dann an mmap übergeben? – DAG