struct vm_struct * im_get_area(unsigned long v_addr, unsigned long size, int criteria) { struct vm_struct *area; down(&imlist_sem); area = __im_get_area(v_addr, size, criteria); up(&imlist_sem); return area; }
struct vm_struct * im_get_area(unsigned long v_addr, unsigned long size, int criteria) { struct vm_struct *area; mutex_lock(&imlist_mutex); area = __im_get_area(v_addr, size, criteria); mutex_unlock(&imlist_mutex); return area; }
struct vm_struct * im_get_free_area(unsigned long size) { struct vm_struct *area; unsigned long addr; down(&imlist_sem); if (get_free_im_addr(size, &addr)) { printk(KERN_ERR "%s() cannot obtain addr for size 0x%lx\n", __FUNCTION__, size); area = NULL; goto next_im_done; } area = __im_get_area(addr, size, IM_REGION_UNUSED); if (area == NULL) { printk(KERN_ERR "%s() cannot obtain area for addr 0x%lx size 0x%lx\n", __FUNCTION__, addr, size); } next_im_done: up(&imlist_sem); return area; }