* align the address to a page boundary and adjust the size accordingly.
* align the address to a page boundary, and adjust the size accordingly
sys_mprotect(p, v, retval)	struct proc *p;	void *v;	register_t *retval;{	struct sys_mprotect_args /* {		syscallarg(caddr_t) addr;		syscallarg(int) len;		syscallarg(int) prot;	} */ *uap = v;	vaddr_t addr;	vsize_t size, pageoff;	vm_prot_t prot;	int error;	/*	 * extract syscall args from uap	 */	addr = (vaddr_t)SCARG(uap, addr);	size = (vsize_t)SCARG(uap, len);	prot = SCARG(uap, prot) & VM_PROT_ALL;	/*	 * align the address to a page boundary and adjust the size accordingly.	 */	pageoff = (addr & PAGE_MASK);	addr -= pageoff;	size += pageoff;	size = (vsize_t)round_page(size);	if ((int)size < 0)		return (EINVAL);	error = uvm_map_protect(&p->p_vmspace->vm_map, addr, addr + size, prot,				FALSE);	return error;}