Hello everyone:
I have a question about the linux source code.
consider the function:get_vm_area( mm/vmalloc.c )
struct vm_struct * get_vm_area(unsigned long size)
{
struct vm_struct **p,
....
for (p = &vmlist; (tmp = *p) ; p = &tmp->next) {
if (size + addr < (unsigned long) tmp->addr)
break;
addr = tmp->size + (unsigned long) tmp->addr;
if (addr > VMALLOC_END-size) {
kfree(area);
return NULL;
}
}
....
}
notice that here p is defined as a pointer to a pointer, why not
struct vm_struct *p,
for (p=vmlist; (tmp=p); p=tmp->next) {
..
}
does it mean that the later is not efficient as the former?