写了个toy,线程A依次以红色{255,0,0},绿色{0,255,0},蓝色{0,0,255},白色{255, 255, 255},灰色{110, 110, 110}写入整个fb设备,每一种颜色写入完毕后都通知线程B读取fb设备的全部像素输出为jpeg格式的图片,B线程输出图像完毕后通知A线程继续写入下一种颜色。也就是说,两个线程是同步工作的。
内核启动参数设为vga=0×0318,意思是分辨率为1024×768,颜色为24bits。
Host OS是Win XP,虚拟机是Virtualbox3.2.10,Guest OS是Debian testing。测试时发现,Virtualbox中显示的颜色是完全正确的,但B线程输出的jpeg图片中,只有红色和绿色是正确的,剩下的三种颜色都错了:蓝色变成了黑色,白色变成了黄色,灰色变成了暗黄色。我查了很久都没找到原因。
只好换一个环境试试。
Host OS还是Win xp,虚拟机换成VMware Workstation 7.1.1,Guest OS还是一模一样的Debian testing,启动参数依旧是0×0318。这下环境是一样的了,同样的代码,编译运行。VMware中显示的颜色和B线程输出的jpeg图片都是正确的。无语了。
只好给Virtualbox.org报了bug。