De LDD3/Ch. 15/secciones "Usando remap_pfn_range" y "A Simple Implementation", pfn se ha equiparado al campo vm_pgoff. Estoy confundido por esto. ¿Cómo puede ser eso?¿Cómo se determina el número de cuadro de página para la memoria del dispositivo?
Tenga en cuenta que vm_pgoff se describe como:
El desplazamiento de la zona en el archivo, en las páginas. Cuando un archivo o dispositivo está mapeado , esta es la posición del archivo de la primera página asignada en esta área .
Por lo tanto, si la primera página asignada corresponde también a la primera página del archivo (que, creo que sería bastante común), vm_pgoff sería 0. ¿correcto? Si es así, este no parece ser el valor correcto para el parámetro pfn de remap_pfn_range(). ¿Que me estoy perdiendo aqui? ¿Cuál es el valor correcto? Para facilitar la consulta, reproduzco el código relevante de LDD3 a continuación (Página nº. 426)
static int simple_remap_mmap(struct file *filp, struct vm_area_struct *vma)
{
if (remap_pfn_range(vma, vma->vm_start, vm->vm_pgoff,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
...
}