Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_mmap.c
Show First 20 Lines • Show All 696 Lines • ▼ Show 20 Lines | struct minherit_args { | ||||
void *addr; | void *addr; | ||||
size_t len; | size_t len; | ||||
int inherit; | int inherit; | ||||
}; | }; | ||||
#endif | #endif | ||||
int | int | ||||
sys_minherit(struct thread *td, struct minherit_args *uap) | sys_minherit(struct thread *td, struct minherit_args *uap) | ||||
{ | { | ||||
return (kern_minherit(td, (uintptr_t)uap->addr, uap->len, | |||||
uap->inherit)); | |||||
} | |||||
int | |||||
kern_minherit(struct thread *td, uintptr_t addr0, size_t len, int inherit0) | |||||
{ | |||||
vm_offset_t addr; | vm_offset_t addr; | ||||
vm_size_t size, pageoff; | vm_size_t size, pageoff; | ||||
vm_inherit_t inherit; | vm_inherit_t inherit; | ||||
addr = (vm_offset_t)uap->addr; | addr = (vm_offset_t)addr0; | ||||
size = uap->len; | size = len; | ||||
inherit = uap->inherit; | inherit = inherit0; | ||||
pageoff = (addr & PAGE_MASK); | pageoff = (addr & PAGE_MASK); | ||||
addr -= pageoff; | addr -= pageoff; | ||||
size += pageoff; | size += pageoff; | ||||
size = (vm_size_t) round_page(size); | size = (vm_size_t) round_page(size); | ||||
if (addr + size < addr) | if (addr + size < addr) | ||||
return (EINVAL); | return (EINVAL); | ||||
▲ Show 20 Lines • Show All 944 Lines • Show Last 20 Lines |