help!!a question to trouble me a lot in reading the driver code



there is a code question in the implement the mmap function.
struct page* simple_nopae(struct vm_area_struct* vma,unsigned long
addr,int* type)
{
unsigned long off=vma->vm_pgoff<<PAGE_SHIFT;
.......
}
this operation appear in so many source code,but what's the
meaning?????
what do we get from the off????
is the vm_pgoff pfn or virtual address?????
i just know pfn = physical address>>PAGE_SHIFT

.