2011-04-25 87 views
3

我正在爲我的android設備移植/編譯androidvncserver,但是當我運行它(以root身份)時,我不斷收到mmap錯誤。android mmap失敗:無效參數(errno 22)

有問題的代碼如下所示:

/* Android does not use /dev/fb0. */ 
#define FB_DEVICE "/dev/graphics/fb0" 

if ((fbfd = open(FB_DEVICE, O_RDONLY)) == -1) 
{ 
    printf("cannot open fb device %s\n", FB_DEVICE); 
    exit(EXIT_FAILURE); 
} 

<SNIP> 

fbmmap = mmap(NULL, pixels * bytespp, PROT_READ, MAP_SHARED, fbfd, 0); 
if (fbmmap == MAP_FAILED) 
{ 
    printf("mmap failed errno = %d\n", errno); 
    exit(EXIT_FAILURE); 
} 

我正在尋找如何進一步調試這個想法。

對於記錄,像素= 614400和bytespp = 4。此外,的/ dev /圖形/ FB0由根目錄(組=圖形)擁有,並具有660

回答

1

prmatta的權限,

錯誤代碼22是EINVAL

mmap()文檔,告訴你......

EINVAL我們不喜歡的開始或長度 或偏差。 (例如,它們太大, 或不在頁面邊界上對齊。)

也許你沒有頁面調整你的記憶?

+2

而prmatta應該注意並不是所有的系統都使用相同的頁面大小,所以應該使用正確的宏常量。我相信_POSIX_PAGESIZE是你想要的。 – 2011-04-25 21:19:01

相關問題