3
안드로이드 장치 용으로 androidvncserver을 포팅/컴파일하고 있었지만 루트로 실행하면 mmap 오류가 발생합니다.android mmap failed : 잘못된 인수 (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);
}
.
레코드의 경우 pixels = 614400 및 bytespp = 4입니다. 또한,는/dev/그래픽/FB0는 루트 (그룹 = 그래픽)가 소유하고, 660
prmatta는 모든 시스템이 동일한 페이지 크기를 사용하는 것은 아니므로 올바른 매크로 상수를 사용해야한다는 것을 알아 두어야합니다. 나는 _POSIX_PAGESIZE가 당신이 원하는 것이라고 믿습니다. –