내가 내 단일 버퍼 코드가 잘 작동 FBIOPAN_DISPLAY ... FD IOCTL을 (사용하여 이중 버퍼를 구현하려고하는 시도에 실패 MMAP는 이중 버퍼 framebufer
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel/8;
fbp = (char*)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);
나는 "길이를 증가하려고
매개 변수 "를 사용하여 화면 크기 * 2,mmap
은
EINVAL
으로 실패합니다. 내 길이 매개 변수가 마음에 들지 않습니다 .
단일 버퍼의 화면 크기는 6,220,800이고 이중 버퍼의 크기는 12,441600입니다. 임베디드 시스템이지만 RAM은 1 기가비트입니다.
길이 매개 변수는 size_t입니다.이 시스템에서 4 바이트 만 사용할 수있는 최대 크기는 4 메가이지만 아직 6 메가가 잘 작동한다고 생각해서 정말 간단하다고 생각합니다. 방법이 있나요 mmap
버퍼가 size_t보다 큰가요?
'증가'는 무엇을 의미합니까? 다시 매핑하는 거니? – DAG
증가, 즉 다시 컴파일하고 두 번째 매개 변수 (길이) = 스크린 크기 * 2로 실행한다는 의미입니다. 그것은 EINVAL errno – RTC
와 함께 실패합니다. 그냥 const var를 double_screensize = screensize * 2로 만든 다음 mmap에 전달 했습니까? – DAG