unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { if (len > TASK_SIZE) return -ENOMEM; if (!addr) addr = TASK_UNMAPPED_BASE; if (filp) { addr = get_shared_area(filp->f_mapping, addr, len, pgoff); } else if(flags & MAP_SHARED) { addr = get_shared_area(NULL, addr, len, pgoff); } else { addr = get_unshared_area(addr, len); } return addr; }
unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { if (len > TASK_SIZE) return -ENOMEM; /* Might want to check for cache aliasing issues for MAP_FIXED case * like ARM or MIPS ??? --BenH. */ if (flags & MAP_FIXED) return addr; if (!addr) addr = TASK_UNMAPPED_BASE; if (filp) { addr = get_shared_area(filp->f_mapping, addr, len, pgoff); } else if(flags & MAP_SHARED) { addr = get_shared_area(NULL, addr, len, pgoff); } else { addr = get_unshared_area(addr, len); } return addr; }