Сбой Mmap на PCI-бар в SUSE - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь сделать mmap для PCI CSR bar. Mmap не работает с ошибкой EINVAL. Ниже приведен мой фрагмент кода. </p> <pre><code>snprintf(csr_bar_path,256,"/sys/bus/pci/devices/0000:16:00.0/resource2"); csr_fd = open(csr_bar_path,O_RDWR | O_SYNC); if(csr_fd < 0) { printf("Cannot open CSR bar file %s\n",csr_bar_path); } if(fstat(csr_fd,&sb) == -1) { printf("CSR file size = %d\n",sb.st_size); close(csr_fd); } printf("CSR file size OK = %d\n",sb.st_size); csr_bar = (unsigned char *)mmap(NULL,sb.st_size,PROT_READ | PROT_WRITE,MAP_SHARED,csr_fd,0); if(csr_bar == (void *) -1) { printf("mmap failed for CSR bar %s %d\n",strerror(errno),errno); close(csr_fd); }

Значение, полученное для sb.st_size, равно 65536. Но mmap не удалось выполнить со строкой ошибки «Неверный аргумент». Тот же фрагмент кода отлично работает в RHEL 7.2, но не работает в операционной системе SLES15.

...