On 5/4/10 10:17 AM, Johann "Myrkraverk" Oskarsson wrote:
Hi all,
In the Solaris/BSD implementation of reserve_area() in libs/wine/mmap.c there is
for (i = 0; i < size; i += pagesize) if (mincore( (caddr_t)addr + i, pagesize, &vec ) != -1) break;
&vec is never used again in that function. What is the point of mincore() ?
It's trying to see if the address is valid. From the manpage:
RETURN VALUES Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.
ERRORS [EINVAL] addr is not a valid address for user mode.
[EFAULT] an error occurred trying to copy to the output character array vec.
vec is to make sure it failed because the address was invalid, not because it couldn't write the flags out.
Chip